Using a 3 mobile broadband dongle with the EEE PC

I’ve been loaned a USB mobile broadband modem by 3 to try out for a few months. I’ll write a proper post about why I’ve got it and what I think of it later. First, I wanted to share how I got it working with my EEE PC.

What am I talking about?
The modem is a small USB dongle – not dissimilar in appearance from a USB memory stick. You put a SIM card in, and the small mobile phone radio inside gives an Internet connection to any computer that it’s plugged into.

The dongle is a Huawei E169G.

So what’s the problem?
The dongle is supported on Windows and Mac OS. Not Linux. My EEE PC still runs the original Xandros Linux.

Should it work on Linux?
Posts on the eeeuser forum suggested that it wouldn’t be possible.

Other dongles seem to have caused less trouble, but the E169 wouldn’t work.

The consensus seemed to be that:

Huawei 169 requires a patch to usb-storage driver to recognize the hardware similarly to 220… I think that ASUS is on a way to produce a small upgrade package to fix the issue for E169.

And a little Googling failed to turn up anyone who has got the Huawei E169 to work with an EEE PC on Linux.

Still… how hard could it really be, eh? πŸ™‚

What happens if you try and use it?
Plug the USB dongle in.

EEE PC home screen
The normal way to create an Internet connection on the EEE PC starts here – the Internet tab of the home screen.

Notice that the system tray icon you get when you plug in a USB flash memory stick does not appear.

Click on ‘Network’.

network connections
I only had one saved network before – my home Wi-Fi settings. Click on ‘Create’ to create a new one.

create a new connection
In the Connection Wizard that pops up, choose the option for a 3G connection.

no hardware found
Then you choose the hardware to use.

Except you can’t. The EEE PC doesn’t recognise the E169 dongle – the list of hardware to choose from is empty.

I tried using wvdial to configure the modem myself without the wizard. Running the auto config mode – where it queries the device itself – failed. In fact, it seg faulted!

I tried configuring it manually – a few different configuration files I found online. None of them worked. In each case, wvdial would fail to connect to the device.

The EEE PC just really couldn’t see the dongle.

Why not?
The dongle works fine on Windows, so switching quickly to a Windows ThinkPad I could investigate further.

USB Monitor
I plugged it into my ThinkPad and kicked off USB Monitor to have a dig around. The first thing I noticed is that the device ID it returns is different to the one printed on the USB device itself: E620. Weird.

More interesting though was that USB Monitor shows that the dongle is a “Composite Device”. This was a new one on me, but it seems that – rather than ship the dongle with CDs containing the drivers to use – the USB device is a two-in-one device. It is both a “Mass Storage Device” – a flash memory disk, and a Modem. It starts out by behaving as flash memory. The flash storage contains the modem drivers, with an autorun config that installs them on a PC when it is plugged in. Once installed, the USB device is switched to modem mode.

It seems that Linux, or the EEE PC at any rate, cannot handle this sort of composite device. It wasn’t sending the right signals to the device to tell it which mode to behave in, or didn’t understand when it reported itself to be a composite. Either way… I needed to find a way to manually make the device switch modes.

Making USB devices switch modes
Things were looking up – I found (yay for Google!) that Josua Dietze has written a Linux utility to do this already: USB_ModeSwitch.

He’s written a utility that simplifies sending control commands to USB devices. All you have to do is put the command codes into a config file, then run his utility. He even includes a sample config file with the right codes for fifteen different USB devices.

Unfortunately, the Huawei E169 isn’t one of the devices he’s identified the codes for. (And I tried the other Huawei codes on his list – none of them worked).

So it was back to the USB sniffer to identify the right codes to use.

perform USB mode switch
I found the codes to first disable the memory storage mode and then enable the modem.


So back to the EEE PC ‘Create connection’ wizard.

select USB hardware
This time, it does show you USB devices to choose! I chose the first device: /dev/ttyUSB0

network search
It seemed happy to use the generic modem drivers without any more information, and started searching for mobile networks.

networks found
It found – among others – the 3 network.

enter network details
I chose it, and copied the other network details from the information on the three website.

network short name
Give the network a friendly name.

network config finished
All done!

initializing modem
And to prove it works, here is the modem initializing…

dialling modem

…and finally connected.

lookee! i'm online
Look – here is the EEE PC online using the 3 mobile broadband dongle.

This is all overkill. By all accounts, the newer Huawei mobile broadband modems are much easier to get working. If you have an EEE PC and are considering getting a mobile broadband dongle, you might find it easier to just go for E220 or newer.

But if you do already have the E169, or can get it cheaper, it seems that you can get it working!

Update: See the comment thread below for background, but in short, people have found it quicker to put in usb_modeswitch options at the command line rather than have to edit config files. E.g.
./usb_modeswitch -v 0x12d1 -p 0x1001 -d 1
./usb_modeswitch -v 0x12d1 -p 0x1001 -H 1

You may find this easier to script than the config file approach in my post.

The developer of usb_modeswitch has more info on automating which is also worth a look.

Tags: , , , , , , , ,

139 Responses to “Using a 3 mobile broadband dongle with the EEE PC”

  1. Kirsten Bayes says:

    Very helpful stuff Dale. Its worth pointing out the K3520 fom Vodafone is an E169, same codes.

    Sorry to say that usb_modeswitch 0.9.4 does need to be compiled for the Eee from the source code that comes in the tarball: the binary that comes with gives the floating point exception error. It doesn’t help that the Eee 701 doesn’t come with the Debian build essentials i.e. gcc and such, so these need to be loaded along with usblib and usblib-dev from the Debian repository using apt-get install.

    I found the Eee did take a while to find the modem which made the connection wizard appear to hang….patience is needed! One the connection is set up on the list, its fine. If it still hangs, try restarting then plugging in the modem once it is powered up.

    Its worth pointing out that usb_modeswitch will throw out errors unless it is run as administator (i.e. sudo Usb_modeswitch).

    And finally I put the command to take out the storage followed by the command to enable the connectivity in the same conf file and it worked fine….others mileage may vary.

    Thanks once again, your page and Liam Green-Hughes page helped alot, all power to Joshua Dietze for his mighty utility. –Kirsten

  2. Donna says:


    I have managed to get the USB stick to be seen initially, and loaded up fine (eventually) but when I try and connect to the internet, it tells me operation failed…

    I’m not very technologically minded (hence buying the “easy to use pc”!) and just want to be able to get on to the internet easily!!


  3. dale says:

    @Donna – sorry, not sure what to suggest. “Operation failed” sounds like it could cover a variety of issues!

    Unfortunately, my trial with the USB dongle has ended and I’ve had to return mine to 3 – so I can’t do any more playing or investigating with it.

  4. peter says:

    May be it would happen so, for better
    mobile broadband
    there should be a proper connection services which would not create such kind of a peoblems.

  5. Szabolcs says:

    Hi Dale and all! I live in Hungary and have just bought a Vodafone K3520 3G USB modem for my Asus EEE PC 900 with Linux. Needless to say that I had the same problems as you, my EEE didn’t want to recognize it. I tried what you’ve said, even all the fixes but didn’t work although the USB monitor under Windows reported the same values as for you (Huawei E620). The switch commands went thru successfully to the USB modem, it seemed but my the Network creation wizard still didn’t pick up the hardware, actually it even froze my EEE. πŸ™
    I also installed the Vodafone Mobile Connect Card Driver for Linux (Asus EEE PC version: and that did say that I have a Huawei E660A modem, but didn’t go any further than telling that something is wrong.

    I almost gave up when I found a comment in some other blog, that the USB modem has to be connected BEFORE switching on the EEE. So I tried this last, and it helped. The EEE did pick up the hardware in New Network wizard WITHOUT ANY “MAGIC”, I could select Vodafone Hungary as the provider, and voila it worked. If there’s anybody out there struggling with the steps above and it doesn’t work, then it might be worth a try. Good luck and thanks for this helpful blog entry.

  6. Ville says:

    Hi, i’ve been trying to get Huawei E169 to work with my eeePC 4G. I’ve tried using ./usb_modeswitch with the usb_modeswitch.conf file at /etc/, but it’s not just working. Then I tried /usb_modeswitch -v 0x12d1 -p 0x1001 -d -1 and it results this: Looking for default device -> OK, found default device. Prepare switching -> Looking for active default driver to detach it -> No driver found. Driver propably detached already. Bye.

    After that I’ve tried ./usb_modeswitch -v 0x12d1 -p 0x1001 -H -1 and it says: Looking for deafult device -> Ok, found default device. Prepare switching -> Looking for active default driver to detach it -> No driver found. Device propably not initialized. Trying to continue … -> Error: no MessageEndpoint given. Can’t send message. Aborting

    So what should I do? Install some drivers, huh?

  7. Daithi says:

    Thanks a bunch for this guide. I have spent I dont know how many hours trying to get this working – and your guide has sorted me!

    My mate has an Asus EEE running xp and the dongle worked no probs on his machine, but I just couldnt for the life of me get it working on my Linux model.

    Thanks again – keep up the good work!!


  8. I’ve attempted to put together a package to make it easier to get the E169G to work on the EEE. Details are here:

  9. […] in that case require some effort. Vodafone officially support Windows and Mac OS but I knew that the Huawei E169 works with Linux so I couldn’t think of a reason why the Huawei E170 or Huawei E172 from Vodafone […]

  10. miguc says:

    ?Another E169?

    In my computer, the product 1001 was not found.

    When I execute lsusb, I obtain this:

    Bus 002 Device 003: ID 12d1:1406

    I followed the instructions of usb_modeswitch, with this product ID (1406).

    Everything seems ok,

    root> /usr/sbin/usb_modeswitch -v 0x12d1 -p 0x1406 -H 1

    * usb_modeswitch: tool for controlling “flip flop” mode USB devices
    * Version 0.9.4 (C) Josua Dietze 2008
    * Works with libusb 0.1.12 and probably other versions

    Looking for default devices
    Found default devices (1)
    Prepare switching, accessing latest device
    OK, Huawei control message successfully sent.
    -> See /proc/bus/usb/devices (or call lsusb) for changes. Bye

    but when I try to create a new connection, no devices are listed…

    The content of /proc/bus/usb/devices is:

    T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 3 Spd=12 MxCh= 0
    D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
    P: Vendor=12d1 ProdID=1406 Rev= 0.00
    S: Manufacturer=�������������������
    S: Product=HUAWEI Mobile
    S: SerialNumber=�������������������
    C:* #Ifs= 4 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=128ms
    E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
    E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    E: Ad=85(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
    E: Ad=05(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    E: Ad=03(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
    E: Ad=84(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
    E: Ad=83(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
    E: Ad=04(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms

    What is happening?


  11. Stephanie H says:

    I have the aspire one with linux lite and the 3 usb dongle, i don’t seem to be able to get it working and don’t understand what the other post’s mean. Could anyone repeat them for a pc beginner. Much appreciated.


  12. Stephanie H says:

    My e-mail is if it would be easier to reply to that?

    Thanks again

  13. Ken Ward says:

    Thanks for pointing me in the right direction with this, I’ve now managed to get my Huawei E169 working on my new Asus eee PC (18 years of working with DOS and Windows doesn’t help when you’re a Linux newbie of some three weeks standing!).

    For anyone else with an eee PC, it seems to have the libusb software already installed on it, you just need to download the USB_MODESWITCH software and run it with the correct commands for the E169:

    ./usb_modeswitch -v 0x12d1 -p 0x1001 -d 1

    ./usb_modeswitch -v 0x12d1 -p 0x1001 -H 1

    and then set up a new network connection as per your instructions above.

    For some reason, my eee PC wouldn’t work pointing USB_MODESWITCH to the stored config files, so I’m just keying in the commands manually. Anyone else seen this issue?

    Thanks again for the help, and to everyone else who posted on this topic!


  14. I’ve made a new version of my E169G package that should get the E169G up and running on the EEE automatically. Some people who used the package where getting the “floating point” error. I’ve managed to compile a version of the usb_modeswitch program that will run on Xandros-powered EEEs as well as ones running Ubuntu. If the package works for you please mention it in the comment!

  15. Rob says:

    Hi Dean

    First of all I just wanted to thank you for all the suppord on these pesky things πŸ™‚
    I’m having similar problems to others trying to get a friends EEE PC 4G to work with an E169G. I’ve followed your instructions above but I still don’t get any device to appear when creating a new connection. I’ve created the 3 text files you suggested and emailed them to you so hopefully you can shed some light on this.

    Many thanks, Rob.

  16. Shane says:

    oh!!i really congratulate your effort for Showing the right path about broadband usage through USB…It is something great..

  17. Steve says:

    I read that if you use synaptic to update the 3G component, it now supports these devices and the E170. Can anyone confirm this? If so, how can I get this package onto my eeePC via transfer from flash memory (download package to flash drive using my XP PC)?

  18. Andy says:


    Having slight problem with my E169 and eee pc. If I plug the USB modem in once I have loaded up and gone to create a new connection, the modem is not listed as you have stated. However, by plugging it in prior to switching it on, going to create, clicking on 3G and then next…. my EEE PC seems to get stuck which would suggest that it’s found something but just doesn’t like it. Do you have any suggestions?

  19. Andy says:

    Hi… Again

    For all you people out there that the EEE PC and E169 has given an endless headache…. try this website. Worked a treat for me!

  20. Kevin says:

    I have the stock eeePC 4G (701) with Xandros Linus and a 3G E160 modem… I had exactly the same issues as you had above until:

    I inserted the modem with the power OFF on my eee, then booted up and went through the create new conenction wizard… viola… the modem suddenly appears in the ‘select hardware’ screen! NO problems setting it up or using it since. The trick for me was inserting it with the power off then booting up and creating the connection.

  21. Tommy says:

    I had similar experience as Kevin. Inserting the E160G dongle prior to booting up did the trick on two occassions, but I had to set it up via the connection wizard each time. Now, however, it only appears under LAN connection type as 2 lots of “HUAWEI Technology – HUAWEI Mobile”, but not under GSM/3G (UMTS)/HSDPA where I need it to be. Is there a quick fix to this?

  22. hugh says:

    Fantastic stuff πŸ™‚ Going to try all this on my no frills brand PC running Suse – hehe, wish me luck.

  23. lawyer but linux noob says:


    I am a complete linux noob – just got myself an eee pc 1000 – has easy mode xandros updated to the latest version.

    I also got myself a Huawei E160G dongle with 3 – and tried making it work on the eee pc – that’s when i realised it aint that simple! On searching the internet, there seems to be losts of posts dealing with E220 and e169 but nothing clear (for a noob) as to E160G!

    Can anyone advice if the E160 G will work with my eee pc or not…..? (again from a noob perspective). I only have another 24 hours to return the dongle, or i will be stuck with a 18 month contract and not know any way to use it …… : (

  24. lawyer but linux noob says:

    Hi Dale,

    Yes i did, but will it work for E160g? I am confused because liam green hughes himself says once that he isn’t sure if 160 works in the same way of 169 and then he suggests a modification to another user with 160 dongle but the user posts on being unsuccessful…… (although honestly i dont think i wud be able to carry out those modifications myself even if they worked!!!)

    Any idea what to do? I feel really frustrated and helpless …. all the initial excitement of an eee pc (small and portable) and linux (moving out of the windows world) is dying at a fast rate!!!

  25. dale says:

    Personally, I wouldn’t commit to a contract if I wasn’t confident that I could get it working. Annoyingly, these things aren’t currently being shipped with Linux in mind, and blog posts such as mines and Liams are the result of Linux geeks hacking about to get them working. While it is normally possible with enough effort, you would need to find a Linux geek who has the E160 themselves to help – I’ve not got one myself, so I’m not going to be able to, sorry.

  26. lawyer linux noob says:

    Thanks, u are probably right, will just return it as i doubt i will find a linux geek with an e160 anytime soon!

  27. […] check out Dale Lane’s blog where he done a write up on getting the device working. The main extra utility required for the Eee […]

  28. george says:

    need help to install a huawei E220 modem (vodafone) pay as you go in laptop

  29. dale says:

    george – what do you need help with?

  30. george says:

    to get the modem to connect to the internet via vodafone on a pay as you go basis. I bought the modem and a pay a you go sim card.

  31. dale says:

    george – Sorry, I thought you had a specific issue that you wanted help with. If you need more general help with all of it, you might be better off going to a Vodafone store and asking them to help you. Good luck with it, D

  32. susanne says:

    Does anyone have any knowledge of the E156G and wether or not it works with the asus eee pc 700?

  33. Ben says:

    Hi Dale

    This is a little off the track but I was thinking of buying the Ubuntu version of the Dell Mini 9. I’m hoping that similar mods will enable my dongle to work or have you heard either way of anyone trying to combine the Dell and the Huawei?



  34. CHRIS says:

    Hello just thought i add my info i brought a e169g 3 usb modem on pay as you go and it does not recognize i brought the pay as you go Huawei D100 wireless router from three and connected it to my E169G Modem and my eeepc built in wireless conection 4gb black and works first go with out any wires now i gota figure out how to make my eeepc work with my usb modem.:)

  35. dale says:

    Ben – Sorry, got no experience with that.

  36. […] OT: USB Modem on Ubuntu Andy – have you seen this? It’s about getting it working with the EEE PC which is, I think, Xandros (if memory serves, a […]

  37. […] as saying: "I'm afraid aforementioned modem is incompatible with your system." You can try reading Dale Lane's blog post and 138 comments, but frankly it would be easier to change the modem or install Windows XP, which […]