NerdShift (formerly Wikinerds Portal) is the primary website of the Wikinerds Community, founded by Nikolaos S. Karastathis in 2004.

HOWTO: Installing Vodafone 3G PCMCIA cards on Fedora Core GNU/Linux

GFDL1.2 | Information Technology | Large | Other

Mr. Kai Engert has composed a useful how-to document describing how he managed to install his new Vodafone 3G data card (review) on GNU/Linux (specifically, Fedora Core). The document is published here under the GFDL after we secured the permission of the author.

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

Author: Kai Engert <[email protected]>, with contributions from Nikolaos S. Karastathis.

Summary

It works for me.

Story

I don't use Microsoft Windows at all. Although as of 29 February 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:

at+cpin="xxxx"

(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:

AT+CGDCONT=1,"IP","web.vodafone.de"

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). [Ed: The same number works in Greece, too].

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.

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 139.7.30.125 and 139.7.30.126.

If you are in Greece, the DNS must be set to manual and the addresses are 213.249.017.010 and 213.249.017.011 (this paragraph was contributed by NSK).

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.

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!

Copyright (c) Kai Engert (with minor contributions from Nikolaos S. Karastathis). Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled GNU Free Documentation License.

Disclaimer

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.

Note: The above disclaimer applies to the publishers of this document, too.

Document history

  • 2004-02-29: Initial version
  • 2004-03-04: Adding network preference command _OPSYS, Clarifying meaning of green and blue LED, Adding section about observed network quality
  • 29 April 2005: Minor changes by NSK: Adding links, formatting the document as XHTML, adding disclaimer notice for publishers, etc.
  • 15 May 2005: Contributions by NSK: DNS addresses in Greece, better XHTML.
  • 16 June 2005: Contribution by NSK: Phone number in Greece.

Web links

  • Linux kernel 2.6.12 now supports GSM PCMCIA cards
  • How to install Vodafone 3G card on SUSE and Gentoo Linux
  • Vodafone 3G HOWTO
  • Original version of this document
  • HOWTO: Sierra Wireless cards on GNU/Linux
  • HOWTO: Sprint CDMA with GNU/Linux
  • List of known APNs
  • IPCP timeout problem

Relevant articles from other Wikinerds.org projects:

  • Cellular Internet in Greece by JnanaBase

Download this article:

  • XHTML format (vodafone3g_gnulinux.html)

This article is copyrighted and licensed under the GNU Free Documentation Licence 1.2.