Archive for the 'Linux' Category

Mobile Broadband Cards and Linux: Cingular / UMTS on openSUSE 10.2

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:

Option card

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.

yast-modem1.png

yast-modem2.png

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:

yast-modem3.png

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)
Share