I finally decided that getting a mobile broadband card would be worthwhile. Watching some of my friends and colleagues use them in airports and at customer sites went a long way toward convincing me.
Since my employer uses the former and once again current AT&T Wireless, I looked into the two 3G cards they offer:
Both use the UMTS/HSDPA 3G network, as well as the GPRS/EDGE network as a fallback. Of course I was most interested in getting a card that works under Linux, so I found the PHARscape web site most helpful. This site covered getting the Option cards working, and I was not able to find much on the Sierra card, so that decision was easy. Also, the Option card has a nice retractable antenna, so it sticks out less:

As for getting the card to work, it was surprisingly painless.
Note: If you are using SUSE Linux Enterprise Desktop 10 SP1, openSUSE 10.3, or are using a really recent kernel on another distribution (2.6.20-ish or later), step 1 is not necessary, so skip right to step 2, which is configuring the dialup device. Just point your modem to /dev/ttyUSB0 and off you go.
Step 1. Getting the usbserial driver to recognize the card
Simply modprobe usbserial with the idVendor and idProduct tags. The following are the right tags for the Option GT MAX 3.6 card. You can find the right valued by looking in syslog when you plug the card in. The line will look like this:
Feb 5 12:57:55 hillsuse kernel: usb 7-1: new device found, idVendor=0af0, idProduct=6701
Once you have the right info, modprobe the usbserial driver with them. You may have to unload usbserial if it’s already loaded (I did):
# modprobe -r usbserial
# modprobe usbserial vendor=0x0af0 product=0x6701
If this step is successful, you will see messages in syslog like this: Feb 5 12:57:55 hillsuse kernel: usbcore: registered new driver usbserial
Feb 5 12:57:55 hillsuse kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for generic
Feb 5 12:57:55 hillsuse kernel: usbserial_generic 7-1:1.0: generic converter detected
Feb 5 12:57:55 hillsuse kernel: usb 7-1: generic converter now attached to ttyUSB0
Feb 5 12:57:55 hillsuse kernel: usbserial_generic 7-1:1.1: generic converter detected
Feb 5 12:57:55 hillsuse kernel: usb 7-1: generic converter now attached to ttyUSB1
Feb 5 12:57:55 hillsuse kernel: usbserial_generic 7-1:1.2: generic converter detected
Feb 5 12:57:55 hillsuse kernel: usb 7-1: generic converter now attached to ttyUSB2
Step 1b. Automating the above with udev
To make the card “just work” when it is plugged in, we need to create a udev rule. To do that, create /etc/udev/rules.d/51-3g-datacards.rules containing the following:
# Rules for hotplugging Cardbus 3G datacards
SUBSYSTEM=="usb", SYSFS{idVendor}=="0af0", SYSFS{idProduct}=="6701", RUN="/etc/cingularcard.sh"
KERNEL=="ttyUSB0", SYMLINK="modem", GROUP="dialout", MODE="0660"
KERNEL=="ttyUSB2", GROUP="dialout" MODE="0660"
We also need to create /etc/cingularcard.sh, as follows:
#!/bin/bash
/sbin/modprobe -r usbserial
/sbin/modprobe usbserial vendor=0x0af0 product=0x6701
The two files above will automatically load the usbserial driver for the card, and create a symlink to the ttyUSB0 port on /dev/modem.
Step 2. Configuring the modem
The last thing to do is configure the card as a modem so you can actually connect with it. Load up YaST or other favorite tool, and add a new modem using device /dev/modem, as in the following screenshots.


The important thing in the image above is the second intitialization command. For Cingular, it needs to be as follows:
AT+CGDCONT=1,"IP","ISP.CINGULAR"
The next step is creating the ISP/provider entry that contains the phone number to dial:

For Cingular, here are the correct details:
Phone number: *99***1#
User name: WAP@CINGULARGPRS.COM
Password: cingular1
Step 3. Dial!
I use NetworkManager, which works fine except it doesn’t give you any feedback on modem connection status. I also highly recommend the following tools to use with these cards:
- umtsmon - graphical connection status (signal strength, radio type, etc)
- comgt - command-line management of card (PIN management, network switch, etc)