Work’s just recently bought a Verizon Wireless / Kyocera KPC650 “wireless broadband” card for both Kyle and myself. These things work great, and they aren’t very hard to get running with Linux. One Caveat: you need a Windows box to “activate” the card for the first time. Once that’s done, you can ditch the Windows box. ;) Kudos to Brian Jepson for writing a killer LinuxDevCenter.com post on how to use wireless devices like this - I’ve taken a good deal of info from that post. Thanks, Brian!
First, to whet your appetite, here’s a screenshot of a DSL Speed Test I ran using the card:
Yes, that’s over a MEGABIT down. Nice!
The card’s a hybrid creature - the PCMCIA card is actually a PCMCIA/Cardbus to USB bridge. The modem/radio portion of the card is usb. When you plug the card in, you’ll see:
Feb 23 11:24:43 localhost kernel: [4362944.165000] PCI: Enabling device 0000:02:00.0 (0000 -> 0002) Feb 23 11:24:43 localhost kernel: [4362944.165000] ACPI: PCI Interrupt 0000:02:00.0[A] -> Link [LNKA] -> GSI 11 (level, low) -> IRQ 11 Feb 23 11:24:43 localhost kernel: [4362944.165000] ohci_hcd 0000:02:00.0: NEC Corporation USB (#9) Feb 23 11:24:43 localhost kernel: [4362944.167000] ohci_hcd 0000:02:00.0: new USB bus registered, assigned bus number 4 Feb 23 11:24:43 localhost kernel: [4362944.167000] ohci_hcd 0000:02:00.0: irq 11, io mem 0x20800000 Feb 23 11:24:44 localhost kernel: [4362944.251000] hub 4-0:1.0: USB hub found Feb 23 11:24:44 localhost kernel: [4362944.251000] hub 4-0:1.0: 1 port detected Feb 23 11:24:44 localhost kernel: [4362944.283000] PCI: Enabling device 0000:02:00.1 (0000 -> 0002) Feb 23 11:24:44 localhost kernel: [4362944.283000] ACPI: PCI Interrupt 0000:02:00.1[B] -> Link [LNKA] -> GSI 11 (level, low) -> IRQ 11 Feb 23 11:24:44 localhost kernel: [4362944.283000] ohci_hcd 0000:02:00.1: NEC Corporation USB (#10) Feb 23 11:24:44 localhost kernel: [4362944.285000] ohci_hcd 0000:02:00.1: new USB bus registered, assigned bus number 5 Feb 23 11:24:44 localhost kernel: [4362944.285000] ohci_hcd 0000:02:00.1: irq 11, io mem 0x20801000 Feb 23 11:24:44 localhost kernel: [4362944.369000] hub 5-0:1.0: USB hub found Feb 23 11:24:44 localhost kernel: [4362944.369000] hub 5-0:1.0: 1 port detected Feb 23 11:24:46 localhost kernel: [4362946.959000] usb 4-1: new full speed USB device using ohci_hcd and address 2
Since the KPC650 is at heart a serially attached USB device, we’ll use the “usbserial” kernel module to connect the card up. I’ve added the following line to my /etc/modules file:
usbserial vendor=0xc88 product=0x17da maxSize=2048
Note the “maxSize=2048” parameter above. That parameter isn’t supported by the “stock” kernels shipped in Ubuntu Breezy (5.10). You’ll need to patch the usbserial kernel module to add that parameter, or you can use the custom kernel package (EDIT: also have the kernel-headers here too) I’d made that already incorporates the patch. That kernel also has some experimental Intel speedstep scaling in it (hence the name), but it shouldn’t hurt anything to run it if you don’t start poking around in /sys. :) Also, the card will work without the “maxSize” parameter, but its connection will be 10x slower (around 100kb/sec) and it’ll be very unreliable. It’s OK for testing purposes, if you want to hack around first without altering your kernel though. The module arguments “vendor=0xc88” and “product=0x17da” tell the usbserial module to engage when a device matching those strings is connected.
Now that you’ve got the kernel patched and the usbserial module loaded, you’ll see the following new messages when you slot the card:
Feb 23 11:24:46 localhost kernel: [4362947.067000] usbserial_generic 4-1:1.0: Generic converter detected Feb 23 11:24:46 localhost kernel: [4362947.071000] usb 4-1: Generic converter now attached to ttyUSB0 Feb 23 11:24:46 localhost kernel: [4362947.073000] usbserial_generic 4-1:1.1: Generic converter detected Feb 23 11:24:46 localhost kernel: [4362947.077000] usb 4-1: Generic converter now attached to ttyUSB1
Now we’ve got a serially attached device, and we can simply hack together some ppp mojo and chatscripts to get this device rockin’. I’ve tar’d up my Verizon KPC650 configs that I use – you can just untar them and put them in the proper locations (file paths are included). Edit /etc/ppp/peers/verizon and /etc/ppp/chap-secrets to put the phone number of your card in the field. I’d inline the scripts themselves, but I know this blog’s on a couple of planet aggregators and this post is running long enough. :)
Now that you’ve got the patched kernel module, the module loaded, and the ppp scripts in place, you can run “sudo pppd call verizon” and the ppp stack will dialout using the KPC650 and you should be connected. Running “sudo pppd disconnect verizon” should take the connection down. I can’t wait to be surfing working from a place where I couldn’t do anything before.