Using The Dell Latitude D620 3G Radio Under Linux
Background
3G / GPRS data cards have been around for a while now in the UK: you often see them sticking out of commuters' laptops on the train. But just as with Wi-Fi, it's nicer to have a 3G radio that's built-in inside the laptop. My new Dell laptop accidentally came with this feature, so as a frequent traveller and self-confessed internet addict, I was keen to get it working under Linux, so that I could enjoy affordable mobile broadband web access whilst away from home.
Of course, the UK's 3G rollout is far from complete (possibly due to the crippling costs from the UK's ill-judged 3G spectrum auction), so in rural areas you will tend to get GSM GPRS rather than 3G, resulting in speeds comparable to the slower of the dialup modems. On the plus side, I've been pleasantly surprised by how much 3G coverage T-Mobile has on the Cotswold line (London to Hereford), but perhaps Inter-City railway routes are getting special treatment. There's still a long way to go though.
Costs
Ordering a Dell laptop with the 3G radio built-in was easier than expected. The Latitude D620 seems like good value for the specification, but the 3G radio looked like an expensive option. Happily though, our Dell account manager threw it in as part of a competitive quote, which was really great as I'd forgotten to ask for that option.
The Vodafone UK SIM card that comes with the machine (it's underneath the laptop battery) didn't seem worth using in view of Vodafone's steep pricing, so in order to get better value for money I went out and bought a T-Mobile Web N Walk Plus data card, and took the SIM card out of that. This is not a problem as the Dell's radio is not locked to Vodafone. Windows users can access T-Mobile UK's network using either software - T-Mobile or Vodafone - the radio doesn't care.
BTW, I've written some notes about the T-Mobile datacard here as it's a perfectly good option for existing laptops. Retrofitting a PCI Express 3G Mini-card to an existing laptop probably isn't sensible because the necessary cables and antennas in the laptop screen will not be present.
Use Windows First
OK, standard operating procedure - try it the easy way first... Well, simply removing the Vodadone SIM
and inserting the T-Mobile SIM didn't work at first. The preinstalled, Vodafone-branded Windows software
showed strong signal strength for the T-Mobile network, but my initial attempts to connect kept failing.
The problem turned out to be that the Vodafone-branded Windows software had specific Profiles set up, which specify
the APN to be used. Naturallly, Vodafone's APN was not valid on the T-Mobile UK network.
The solution is simply to enter a new Profile, specifying general.t-mobile.uk as the APN.
Hey presto, mobile broadband on the T-Mobile network, without an ugly external card.
In tests, download speeds ranged from "hey, that isn't bad" to "awesome", but of course in GSM-only areas the speed is reduced to "just about bearable but let's turn the images off because we haven't got all day". It's pretty sweet when you're in good coverage. I just wonder whether it'll stay like that: at the moment you might be the only 3G user on the cell!
Getting 3G working Under Linux
The good news is that the PCI Express 3G Minicard radio that Dell ships in the UK (a Novatel Wireless EU740 card) is compatible with the stock linux kernel (2.6.17-10 generic #2 SMP) that ships with Kubuntu Linux 6.10 Edgy Eft, and also with kernel 2.6.20-16 under Kubuntu 7.04 Feisty Fawn. The radio seems good and modern: it is HSDPA-compatible, so it can run pretty damn fast when it's in an area with good 3G coverage.
If this device is fitted to your laptop, then you should be able to see it using this command:
cat /proc/bus/usb/devices ... P: Vendor=413c ProdID=8116 Rev= 0.00 S: Manufacturer=Novatel Wireless S: Product=Novatel Wireless HSDPA Modem
The usbserial kernel module will create two /dev/ttyUSBn entries for the device if you prod it correctly. You can try this with the command (not forgetting the "0x" modifiers):
sudo modprobe usbserial vendor=0x413c product=0x8116
If you type ls -l /dev/ttyU* you should now see:-
crw-rw---- 1 root dialout 188, 0 2007-01-26 21:40 /dev/ttyUSB0 crw-rw---- 1 root dialout 188, 1 2007-01-26 21:40 /dev/ttyUSB1
But you'll want this to happen on every reboot, so here is the procedure....
- Create a file called /etc/modprobe.d/3g containing the following text:-
install 3g modprobe usbserial vendor=0x413c product=0x8116
- Edit /etc/modules and add the following line:-
3g
- Now reboot. Then, check it has worked by executing:-
ls -l /dev/ttyU*
and you should see the two /dev/ttyUSBn devices as before.
Using 3G with KPPP
So far so good. With access to the datacard working as /dev/ttyUSB0, it's time to bring up PPP. Using the KPPP utility from the Kubuntu desktop ("K" / "Internet" / "KPPP Internet Dial-Up Tool"), it should be simple to create a new PPP dialup connection.
- Start KPPP and press 'Configure...'.
- Under 'Accounts', press 'New' and create a name for the 3G/GPRS connection.
- Enter the telephone number to dial as *99***1# (dial first profile on data card).
- Press 'Customize PPPD Arguments' and enter the argument novj (THIS IS IMPORTANT or the radio will connect but the link will not start!).
- Under 'Modems', add a new modem. In the modem Device tab, set the port to be /dev/ttyUSB0 from the drop-down menu.
If /dev/ttyUSB0 isn't listed, then make a symlink from /dev/modem to /dev/ttyUSB0 and use /dev/modem instead.
- Under the modem's 'Modem' properties tab, press 'Modem Commands', and in 'Init String 2' you need to enter: AT+CGDCONT=1,"IP","general.t-mobile.uk" - note that it is .uk not .co.uk.
If you're using a provider other than T-Mobile UK then you'll need to change this to reflect the correct APN for your provider (see 'GPRS in the UK' link below).
- Username and password don't seem to matter, but I set them to web/web.
So what we're doing in the Init String is setting up the correct APN to use and storing it in slot 1 on the card. Then we're dialling the connection just stored in slot 1. You might not need to set up the APN every time but it's better safe than sorry - it seemed to get erased somehow half way through testing, so probably simplest to set it up every time.
If you now press 'Connect' to fire up the KPPP link and watch the log window, you should see 'CONNECT EDGE' or something similar. All being well, you should now be able to surf the web over the PPP link. In 3G service areas, you can surf the web with great speed! In GSM-only areas, things are a lot more sluggish (especially on websites with too many bloated images) but it gets there eventually.
You might want to install COMGT and/or UMTSMON (see below) to give further information on the card (e.g. signal strength and name of network in coverage). So far COMGT works well for me, but UMTSMON won't build under Edgy Eft and the pre-built binary won't work.
Using COMGT for Status Information
A utility you might want to install is comgt from http://sourceforge.net/projects/comgt/. This will give you some status info about what's going on...
sudo comgt -d /dev/ttyUSB0 info ##### Wireless WAN Modem Configuration ##### Product text: ==== Manufacturer: Novatel Wireless Incorporated Model: Expedite EU740 (HW REV [0:44]) Revision: 27.2-27.2-00 [2006-04-28 11:27:20] IMEI: xxxxxxxxxxxxxxx +GCAP: +CGSM,+DS OK ==== Manufacturer: Novatel Wireless Incorporated IMEI and Serial Number: xxxxxxxxxxxxxxx Manufacturer's Revision: 27.2-27.2-00 [2006-04-28 11:27:2 Hardware Revision: Network Locked: 0 Customisation: Band settings: ( ) APN: 1,"IP","GENERAL.T-MOBILE.UK","",0,0 ##### END ##### sudo comgt -d /dev/ttyUSB0 sig Signal Quality: 21,99 comgt -d /dev/ttyUSB0 reg Waiting for Registration Registered on Home network: "T-Mobile",0 sudo comgt help comgt Usage: comgt [options] [built in script]'|[external script] Built in scripts - comgt [default] Checks SIM status (requests PIN if required), registration and signal strength reported by datacard. comgt info Display configuration of datacard. comgt sig Report Signal strength. comgt reg Report Registration status. comgt PIN Set PIN using COMGTPIN env variable. comgt APN Set APN using COMGTAPN env variable. Valid for GlobeTrotter GPRS only: comgt USA Switch to 900/1900 MHz band for USA operation. comgt Europe Switch to 900/1800 MHz band for Europen operation. Valid for GlobeTrotter EDGE and Combo EDGE only: comgt GTEDGE Switch on radio interface. Valid for Vodafone 3G, GlobeTrotter Fusion, GT Max : comgt 2G 2G networks only. comgt 3G 3G networks only comgt 3G2G 3G network preferred Command line options (must be before script name) - -d device Use alternative device. e.g -d /dev/ttyUSB0 -e Turn on communication echo. -h Help. -V Version. -s Don't run internal 'default' script before running external script. -t=\n Set alternative line terminator (default=\n). -v Verbose mode. Print lots of trace info. -x Speed exchange. 115200 replaced by 57600. ***used for GlobeTrotter EDGE and Combo EDGE*** NOTES: comgt assumes that the GlobeTrotter device is /dev/modem (create a logical link to actual device or use -d switch). Unless you use the '-s' switch comgt will run the internal 'default' script first before running an external script file.
You might also want to install UMTSMON (see below) which is a GUI tool that does something similar to COMGT. So far COMGT works well for me, but UMTSMON won't build under Edgy Eft and the pre-built binary won't work.
Further Reading
- www.pharscape.org: 3G Linux Support Info. Getting different cards working. COMGT and UMTSMON utilities.
- www.filesaveas.com/gprs.html GPRS in the UK: much of this applies to 3G too.
- sourceforge.net/projects/comgt/ COMGT: command-line datacard utility for linux.
- umtsmon.sourceforge.net/ UMTSMON: graphical datacard utility for linux.