"3" MobileBroadband card (aka Novatel Merlin XU870) on Ubuntu Dapper Drake 6.06 (linux 2.6.15)

On Sunday (March 4th 2007), I signed up for a mobile broadband account with "3", one of Australia's tier-1 cellular UMTS/HSDPA carriers. It was a somewhat impulsive decision - the trigger being a significant drop in prices since I last looked, which was about a year ago.

After doing some research, it turns out that the "3" MobileBroadband card is simply a rebranded Novatel Merlin XU870. The "3" website doesn't mention support for Linux, but the Novatel website does, and in fact, has instructions for installing and configuring for Linux. This was enough for me to sign up and try it with my Dell 640m running Ubuntu Dapper Drake 6.06.

I couldn't find any linux drivers to download from the Novatel website, but I did find Samat Jain's page on High-speed cellular wireless modems (e.g. EVDO, HSPDA) in Ubuntu GNU/Linux 6.10.

I downloaded his hosted version of the airprime.c driver, and modified it to work with my system. This was necessary because I'm still using the linux kernel 2.6.15 with Dapper Drake, old as some may consider it.

After this, I ran into problems with dropped data and had to make further changes (for those who understand it, the low latency flag had to be enabled). In the end, I also back-merged some minor changes from the linux 2.6.19 version of the airprime driver.

So, finally, what I have is a driver which is a combination of 3 other different versions, but it works with Ubuntu 6.06 / linux 2.6.15 and works well, and that's what I was after.

Anyway, I figured there must be others out there who are still using Dapper Drake, so I decided to post up my changes so others can make use of them. Of course, this should also work with any distribution with a linux 2.6.15 kernel, though the installation instructions below may differ.

According to the source code, this driver also covers the following cards:

  • AirPrime 5220
  • Sierra Wireless Aircard 580
  • Sierra Wireless EM5625
  • Sierra Wireless MC5720
  • Novatel Wireless S620
  • Novatel Wireless S720
  • Novatel Wireless U720
  • Novatel Merlin XU870
  • ExpressCard34 Qualcomm 3G CDMA
  • Dell Wireless 5500
  • Kyocera Wireless KPC650/Passport
  • Audiovox PC5740
  • Pantech PX-500

though of course I can't verify this since I don't have the hardware.

Driver Setup

My version of the driver, modified for Ubuntu Dapper Drake / 2.6.15, is available as a patch file and as a full source file.

The instructions below borrow heavily from Samat Jain's page, with my minor modifications.

Install the kernel build environment, linux headers and sources for 2.6.15 ...

sudo apt-get install build-essential linux-headers linux-source

Uncompress the linux source ...

cd /usr/src
tar xjvf linux-source-2.6.15.tar.bz2

Find the airprime driver ...

cd linux-source-2.6.15/drivers/usb/serial

Modify the airprime driver by patching ...

patch -p0 < your_downloaded_directory/airprime-bt-patch-20070305.txt

or replacing ...

mv airprime.c airprime.c.orig
cp your_downloaded_directory/airprime-bt-20070305.c airprime.c

Compile just the USB serial drivers (including the airprime driver) ...

make -C /lib/modules/`uname -r`/build M=`pwd`

Then install and update module dependencies ...

sudo cp airprime.ko /lib/modules/`uname -r`/kernel/drivers/usb/serial/airprime.ko
sudo depmod -a

Then you have to either remove and reload the module, or just reboot.

Please note that what you've done occurs without the knowledge of the Ubuntu package manager. If you update your kernel, then your changes will be lost and you'll have to do this again.

When the wireless card is inserted, the airprime driver will create a number of ttyUSB ports. The important one is ttyUSB0.

Carrier and PPP Configuration

To be continued . . .