Using 3G USB mobile network sticks with USB 3.0 ports (Ubuntu/Linux)

I struggled for a while with my new laptop with Ubuntu 14.04: I could not understand why none of my 3G USB keys worked on it.

UPDATED (see bottom)

In /var/log/syslog I could see it being recognized, and a line mentioning usb\_modeswitch… except no mode switching was happening: the ProductId was did not change, and so obviously no network.

I have the latest usb-modeswitch-data installed, and my card’s VendorId and ProductID are in it (It’s a Huawei Vodafone K4605, 12d1:14c1), apparently… but nope, no mode switching: I get a usb-storage device, and that’s all.

Long story short, this is the workaround I found, until some permanent fix is issued by Ubuntu: after inserting the card wait for a few seconds and then run a command like this one:

sudo usb\_modeswitch -v 12d1 -p 14c1 -M '55534243123456780000000000000011062000000100000000000000000000'

(all on one line, substitute the VendorID and ProductID with your key’s)

This is pretty much what udev should be doing on itself, but for some reason it’s not. …and bam! After a few more seconds you will be able to configure and use the Mobile Broadband connection in NetworkManager. It took me some time to figure this out, so I hope it will help someone else, too.

Update

I got my hands on a more recent 3G key (a Vodafone Huawei K4201) and lo and behold, it works out of the box… it’s a weird device though; it presents itself to the system as a wired connection (ethernet), has a DHCP server and assigns a 192.168.9.0/24 address, which could be a problem (not in my case, but… horrible choice of network, Vodafone!).