Using The Dell Latitude D620 3G Radio Under Linux

Mobile broadband without an ugly card: Novatel Wireless EU740 internal radio.

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....

  1. Create a file called /etc/modprobe.d/3g containing the following text:-
    	install 3g modprobe usbserial vendor=0x413c product=0x8116
    
  2. Edit /etc/modules and add the following line:-
    	3g
    
  3. 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.

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