Getting the "3" 3G USB modem unlocked and working on Ubuntu

The 3G USB modem from "3" was briefly available from, but isn't any more.

You have to register, give them your address and email details, then they email you a discount code.
Then you go back in and buy a 3G dongle, using the discount code to reduce the item price to zero (from £29.99), and then you just have to pay the postage and packing, which is a slightly hefty (but remember it's all you're going to pay!) £4.95.
You have to pay with a card - no Paypal.

The dongle arrived in the post two days later.

The hardware is a ZTE MF627.

Unlocking it from the 3 network

The instructions on how to reflash and hence unlock the modem start here:

I'll explain the steps I took here...

The first thing is: you have to be using a Windows XP system to do this bit.

Download ZTE2.rar from here:

Use an unrar tool to unrar it (e.g.
This is a command-line tool, so in a DOS window, do this:
Assuming you have unrar.exe and ZTE2.rar in the current directory...

unrar e ZTE2.rar

Install the software that comes with the dongle (on its built-in memory stick). This includes a little admin GUI tool, and XP does its thing finding and installing drivers for storage and modem devices.

Probably worth unplugging and replugging the dongle to make sure everything is happy - if it's not properly installed, the next bit doesn't work.

We're sort-of following the instructions in ZTE627.pdf/doc.

Make sure your PC/laptop is running on mains - you really don't want the next bit to break half-way through, else you'll most likely brick the modem.

Make sure the modem is plugged in and XP is seeing it as a modem (see Start->Control Panel->System->Device Manager in the modems section).

Run FlashUpdate.exe in the directory you unrared the downloaded ZTE2.rar into.

Assuming it finds your modem, the "Download" button ungreys, and you can click it.

Sit back and wait for approximately 19 min 17sec (it pops up a little box to tell you it's finished, and how long it took)

Your dongle is now unlocked and you can put any network's data SIM in it.

If you want to use the dongle on XP, run setup.exe to install the connection manager tool, and create a profile for your network.
Go to Settings->Add and then fill in the boxes.
There are examples of UK network settings in ZTE627.pdf/doc, and a whole load more here:

**** You need to put "*99#" in the "dial number" ****

for Vodafone, you need to supply username web, password web, and APN internet.

Go back to the "world" icon for Internet, and click Connect.

You should be connected!

Using the dongle with Ubuntu

The method of making the dongle switch from memory stick to modem mode which I describe below works, but there's a better and easier way!
Thanks to Steve Russell for pointing this out to me

You can set the dongle so it's permanently in modem mode, by giving it the following command:

You can do this using a terminal emulator (either HyperTerminal on Windows, or picocom on Linux).
If you use picocom, it's useful to know that you exit with ctrl-a ctrl-x.

The dongle creates three serial ports. The one you want is the second one. So if they're /dev/ttyUSB0, 1 and 2, you want

picocom /dev/ttyUSB1

Note If you need to undo this, the command to put the dongle back into its two-mode state, is


Now, when you plug in the dongle, it almost immediately shows up in NetworkManager, ready to connect.
There's a great wizard in NetworkManager for getting the right settings, based on your cellular provider:
Right-mouse on NetworkManager applet, Edit Connections... Mobile Broadband / Add

It's getting easier every day! :-)

And now, just for the record...

The old way of doing it

Unfortunately it doesn't "just work" (yet), but bugs have been raised, and it's getting closer. Intrepid has support in NetworkManager to connect to mobile networks, once the modem is recognised. In Jaunty, the support for the ZTE modem is somewhat there, but needs a bit extra.

Details are here:

This pretty much worked, but there was one little nit at the end I had to fix (as usual!)

Follow the instructions at the above link to

  1. get usb_modeswitch
  2. create the /etc/usb_modeswitch.conf file
  3. create a udev rule in /etc/udev/rules.d/999-zte.rules
  4. create the HAL entry in /usr/share/hal/fdi/information/20thirdparty/20-zte-mf627.fdi
Note that the first set of instructions are right: The TargetProduct value is 0x0031 and the usb.interface.number is 3.

OK, so here's the problem: it takes a few seconds (about 6) for the dongle to come to its senses when you plug it in, so if the udev rule fires before then, the usb_modeswitch gets ignored and the dongle doesn't change modes.

Change the udev rule to run a script file (mine's just in my home directory, called ZTE), e.g.
SUBSYSTEM=="usb", SYSFS{idProduct}=="2000", SYSFS{idVendor}=="19d2", RUN+="/home/andysc/ZTE"

Then in this ZTE file, put:

/bin/sleep 10
(I didn't check whether you actually need to fully path them, but was playing safe, as udev manual warns of limited environment)

Make sure that file is executable: chmod +x ZTE

Et voila! When you plug in the dongle, after 10 seconds the mode switch happens, dmesg gets filled with lovely messages about GSM stuff, and the connection shows up in NetworkManager ready to connect.


You may find these commands useful for debugging:
lsusb (look for a device called "019d2:2000" and later "019d2:0031")
sudo lsusb -v -d 019d2
dmesg to find out what the system thinks is going on.  



comments and updates to: