Linux and the Vodafone Mobile Connect (UMTS) 3G/GPRS Datacard

Author: Kai Engert <kai --- dot --- engert --- at --- gmx --- dot --- de>


A lot of terms are used in this document. All terms might be trademarks or company names, owned by their respective owners, not by me.
The information on this page is provided as is, as an attempt to provide help. The author is not affiliated with Vodafone in any way, besides being a customer. There is no guarantee for correctness. Try these steps on your own risk. If your computer explodes while you follow the procedures described, or if you go bankrupt because of the UMTS service bill your provider sends you, the author will not be liable.


It works for me.

Document history

    Added a section about disabling the PIN, contributed by Valentijn Sessink
    Initial version
    Adding network preference command _OPSYS
    Clarifying meaning of green and blue LED
    Adding section about observed network quality


I don't use Windoze at all. Although as of February 29 2004, Vodafone Germany told me "we do not support Linux, because it doesn't work", I was brave and subscribed to their service anyway. To my delightment, I was able to make it work within a day.

Environment used

Frankfurt am Main, Germany.
3 years old Sony Vaio laptop having Fedora Core 1 (formerly RedHat) Linux installed.
Mobile connect card provided by Vodafone, which says it's from Option Wireless Technology, Model 129, Revision: 2.4.4
Kernel versions: During my various experiments I succeeded using the original Fedora Core 1 kernel, as well as the Fedora updates up to version 2.4.22-2.1.35. However, later updated Fedora kernel (including 2.4.22-2174 somehow didn't transfer any data one the connection was established. I am now using a stock 2.4.25 kernel, which works fine.

Setting up the Hardware

I recommend you boot up Linux, not having the card plugged in. Your mileage may vary, but I occasionally had trouble when it was already plugged in on boot.
Once Linux is up, insert the card.
As user root, look at /var/log/messages - you'll probably see a message that a device was inserted, but no driver feels responsible.
I get: "USB device 3 (vend/prod 0xaf0/0x5000) is not claimed by any active driver."
To my surprise, the PCMCIA card is treated by the Linux kernel as a USB device (huh).
Write down the vendor and product IDs (0xaf0, 0x5000) of your card.
Enter the following command (replace af0 and 5000 if the card you have uses other IDs):
  modprobe usbserial vendor=0xaf0 product=0x5000
Look at /var/log/messages - besides other messages I get:
  usbserial.c: Generic converter detected
  usbserial.c: Generic converter now attached to ttyUSB0 (or usb/tts/0 for devfs)
  usbserial.c: Generic converter detected
  usbserial.c: Generic converter now attached to ttyUSB1 (or usb/tts/1 for devfs)
  usbserial.c: Generic converter detected
  usbserial.c: Generic converter now attached to ttyUSB2 (or usb/tts/2 for devfs)
If your system has more serial modems than mine, the devices addresses shown on your system might be different.
In the following, when I talk about ttyUSB0, replace it with the first device ID you get on your system.
That's a first success, it means the kernel is able to talk to your card as a standard serial device.
I don't understand why we get multiple ports.
For the following tests, I always used /dev/ttyUSB0
If you don't use other modems in your system, you can make your life easier by executing the command
  ln -sf /dev/ttyUSB0 /dev/modem
This allows software to access the modem using the standard /dev/modem device.

Testing the Hardware and setting your PIN

I used the terminal software minicom to access the card. (You could as well use the mini terminal contained in the kppp software, accessible from the modem settings preferences page.)
Set up your terminal program to connect to /dev/ttyUSB0 or /dev/modem, whatever you saw in the above step.
I used 230400 bps as the port speed. In minicom, I changed the modem init string to be simlpy ATZ.
Once you start the terminal, you should be able to have an interactive dialog with the modem, using AT commands.
Try to enter AT and hit enter, if you see OK as an answer, things look good. You should see OK for all the following commands you enter.
ATI gives you information about your card, I get:
  Manufacturer: Option Wireless Technology
  Model: 129
  Revision: 2.4.4  (Date: Jan 15 2004, Time: 13:16:13)
If you are curious, AT&V gives you a listing of all currently active configuration settings.
But let's start to do something real.
First look at the LEDs on your card. I've got a blue and a green one. In the current phase, both LEDs blink, at the same time, once per second. I think it means "not authorized, not registered with the network".
Before you authorize with your card, you could configure your network preference. This makes sure the card connects to your prefered network immediately after authentication. You have these choices (note the unusual underscore character '_' is used in the command): at_opsys=0,2 (GPRS only), at_opsys=1,2 (UMTS only), at_opsys=2,2 (prefer GPRS), at_opsys=3,2 (prefer UMTS). You can later check your setting with at_opsys?
Now look up the PIN for your SIM card and enter the following command, replacing xxxx with your own PIN:
(note, it doesn't seem to matter whether you write AT commands in upper or lower letters)
After 20 seconds or so, your card should blink with the blue LED only. It will blink once per second as soon as it is registered with the network (your SIM is accepted). The card will try to find a data service (GRPS or G3), and once it could register with that service, too, you should see a series of two quick blinks per second. If you get two blinks per second with the green LED, you are connected to the GRPS network. This might be because UMTS network quality is weak or not available at all, or you have set your card to prefer the GPRS network. If you get two blinks per second with the blue LED, you are connected to the 3G/UMTS network.
Once your card blinks twice per second, try command AT+CSQ
It will tell you something about the network signal strength, we care about the first value. I get values from 5 to 22, depending on where I'm located in my flat. I read that 12 is the minimum acceptable value for reliable connections.)
The next thing would be to send command:
However, I found my card already uses that as it's default configuration.
We are now ready to connect.
You could use the following command for testing purposes to dial in from your terminal, but I found it brings you into trouble, because it's difficult to terminate the connection with the terminal program. So I suggest you don't do it, but go to the next secion (the dial command would be ATDT*99***1# if you really want to try now).

Setting up the Connection to the service

The card has a special property: When we give it the PIN for the first time, it will report OK. Later attempts to authorize using the PIN again, while the card is still plugged in, will result in the card reporting ERROR. This isn't harmful, besides the fact, that this card behaviour makes it difficult to automate sending the PIN in a connect script, since your script will probably stop when it sees the error message.
I therefore recommend you use the terminal to manually give the PIN and look at the reported signal strength, before you try to connect. See below for a trick to disable the PIN.
I use the kppp tool to start the PPP connection to the service.
Start kppp, click configure.
Device should be /dev/ttyUSB0, /dev/modem or whatever you must use. I set speed to 460800, hardware flow control.
Modem settings: Init 1: ATZ, empty Init2.
The "terminal" button in this dialog gives you the mini terminal I mentioned earlier.
In the Accounts area, click New, I used the manual setup procedure.
Type a connection name, add phone number *99***1#
In the lower area of the dialog, click "pppd arguments". Add the argument: novj
Dynamic IP address
Default gateway, default route.
If you're in germany like me, you probably need to set DNS to manual. I use the addresses and
The settings required in other countries might vary.
Choose to disable existing DNS servers during the connection.
Confirm your settings and you are back at the initial kppp screen.
Click the box to display the low window so we can see what's going on.
Click connect.
If all goes well, you should see some modem commands sent, and answers from the card, and hopefully a CONNECT string.
Sometimes I get CONNECT 576000, which probably means GPRS mode is used, but of course, what we want to see is CONNECT 384000
Once the login window goes away, you should be connected.
Try to open a page in your browser, or use the Linux command line to look up host names or ping.
(For unknown reasons, with some kernel versions I arrive at this stage, but I'm unable to transfer any data, however. Read the section at the start of the document and try another kernel version, if this occurrs to you).
Enjoy the speed, but don't forget, it's expensive!
You probably should find the minimized kppp window and disconnect soon.

Disabling your PIN

As stated above, your SIM will ask for the PIN code before it will do anything else. This way, if your card gets stolen, the thief cannot use your account as she needs to know your PIN.
However, if you did not change your PIN, i.e. it's still the default 0000, then you could ask yourself what's the use of having to enter 'at+cpin="0000"' before you can use your card: it's a default password so there's no real security to it.
Luckily, there's a way around this. Enter
(replacing xxxx with your own PIN) to turn off the PIN question. This way, your UMTS card will start searching for a network immediately.
To turn the PIN question on again, type
and to check if it's on or off, type
if it says "+CLCK: 0" the PIN is off, if it says "+CLCK: 1" the PIN is on. (If you don't want to type commands - which is higely unlikely as you've read this document up to here - you could also put the SIM card in a regular phone and turn the PIN setting off from the phone menu. (Added by Valentijn Sessink <>)

Giving support

I'm very short on time, and I will probably not be able to help you if you encounter problems.
But please feel free to send me feedback, whether the above worked for you or not. I might update the page and include other helpful information.

Network signal quality

So far I've tested in Frankfurt am Main and Cologne (Köln).
Signal levels as reported by command at+csq, and were tested inside a building, unless otherwise indicated.
Frankfurt Nordend, near Musterschule: UMTS signal about 12, reliable connection
Cologne Deutz, near Suevenstr.: UMTS signal strength about 6, works ok near the window
Cologne Westhoven: very weak UMTS signal, jumping between 0 and 4, but I can connect.

For comparison, when connecting to the GRPS network, the card reports levels above 20 in all these locations.

Good luck!