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
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.
Added a section about disabling the PIN, contributed by Valentijn Sessink
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.
Frankfurt am Main, Germany.
3 years old Sony Vaio laptop having Fedora Core 1 (formerly RedHat)
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
To my surprise, the PCMCIA card is treated by the Linux kernel as a USB
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
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
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
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
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
The next thing would be to send command:
However, I found my card already uses that as it's default
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
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
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
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 220.127.116.11 and 18.104.22.168.
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.
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
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 <firstname.lastname@example.org>)
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
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
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.