fuck 12d1:1446, or how usb-modswitch helped to get the Huawei E1820 to live.

Couldn’t get my huawei hsdpa modem to work on my ubuntu server machine. On my laptop (Ubuntu 12.04.1 desktop edition) it works flawless.

Let’s start a quest (google).

Many blogs write about missing modules like cdc_ether.ko, so it needs to be compiled. But a find . -name ‘cdc_ether.ko’ learns the driver exists. And an insmod cdc_ether.ko works. The problem has to be something else.

So I checked the schizophrenic way this device acts. It is not only a modem, but also some kind of ‘read-only’ storage part residing a bunge of windows setup executable goodies.  What I did next is compare the lsusb outputs of the device between two computers where it is and is not working:

First the working machine. Ubuntu desktop (12.04.1 x86), lsusb output is: 12d1:14ac Huawei Technologies Co., Ltd. The description is ok. The 14ac part is the good thing. ttyUSB0 is created, the device works.

First the machine wher it is not working. Ubuntu server (12.04.1 omap4), lsusb output is: 12d1:1446 Huawei Technologies Co., Ltd. E1552/E1800 (HSPA modem). Here the description is as expected, but the 1446-part not. That’s the storage device. In this case no ttyUSB0 is created.

Found the difference it’s the 1446 that should be 14ac. In this case the storage part seems to confuse linux.

Ok this looks like something that can be solved. Just google on 1446 and 14ac and you’re slammed with the solution: usb-modswitch. A number of blogs write about a broken usb-modswitch. But in my case this package was  not even installed. So let´s do that (and proove usb-modswitch is not broken).

Let’s switch the usb thing’s.

First install usb-modswitch

sudo apt-get install usb-modeswitch

Create a file /etc/usb_modeswitch.d/12d1:1446

Containing:

DefaultVendor= 0x12d1
DefaultProduct=0x1446

TargetVendor=  0x12d1
TargetProductList="1001,1406,140b,140c,1412,141b,14ac"

CheckSuccess=20

MessageContent="55534243123456780000000000000011062000000100000000000000000000"

Reboot and how wonder…… I have an ttyUSB0.

Manually, the switch could also be done:

usb_modeswitch -c /etc/usb_modeswitch.d/12d1:1446

Now: Let’s sms

(now set the thing up for 3g internet)…..