Getting ZTE MF190 HSUPA USB Stick to work in Ubuntu

I subscribed to Celcom Broadband whilst waiting for my fixed broadband to be fixed. I’m given a HSUPA USB stick by ZTE, model MF190. While the modem provided by Maxis (of which model I can’t remember) works out of the box in Ubuntu, this MF190 doesn’t.

Like most HSUPA USB sticks, MF190 double as a mass storage device. Windows driver and tools can be located and installed from here. After which, it will switch to modem mode. In Ubuntu, this process is done automatically (via usb_modeswitch and udev). However, MF190 is not recognized.

Alltel UM175AL USB EVDO under Ubuntu Hardy Heron is an extremely useful resource for getting a new and unrecognized device to work with usb_modeswitch. I used UsbSnoop to eavesdrop on the traffic going in and out of the device. Although it is warned that the tool should never be used on Windows Vista or above, I got it to work without much trouble in Windows 7. Luck, maybe.

Getting the log using UsbSnoop is the first part of the story. The remaining is mostly guesswork, which isn’t too bad at all.  The gem is at when URB 13 going down:

[636735 ms]  >>>  URB 13 going down  >>> 
-- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
  PipeHandle           = 87af955c [endpoint 0x00000081]
  TransferFlags        = 00000002 (USBD_TRANSFER_DIRECTION_OUT, USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000200
  TransferBuffer       = 876a4b5c
  TransferBufferMDL    = 00000000
    00000000: 55 53 42 43 08 d0 8c 87 24 00 00 00 80 00 06 85
    00000010: 00 00 00 24 00 00 00 00 00 00 00 00 00 00 00 00

This message is sent when MF190 switches it’s state from the default mass storage mode to modem mode. Using that, compose a conf file with the following content and save it as celcom_mf190.conf:

### celcom_mf190.conf
######################################################
### ZTE MF190
DefaultVendor= 0x19d2
DefaultProduct=0x0103
TargetVendor=  0x19d2
TargetProduct= 0x0031
MessageContent="5553424308d08c872400000080000685000000240000000000000000000000"
NeedResponse=1
CheckSuccess=20

Now, feed it to usb_modeswitch:

$ sudo usb_modeswitch -c celcom_mf190.conf

Among the more interesting output are:

[ Truncated ]
Using endpoints 0x01 (out) and 0x81 (in)
Inquiring device details; driver will be detached ...
Looking for active driver ...
OK, driver found ("usb-storage")
OK, driver "usb-storage" detached
SCSI inquiry data (for identification)
-------------------------
Vendor String: ZTE
Model String: USB SCSI CD-ROM
Revision String: 2.31
-------------------------
USB description data (for identification)
-------------------------
Manufacturer: ZTE,Incorporated
Product: ZTE WCDMA Technologies MSM
Serial No.: P671A1CELD010000
-------------------------
Setting up communication with interface 0 ...
Trying to send the message to endpoint 0x01 ...
OK, message successfully sent
Reading the response to the message ...
OK, response successfully read (0 bytes).
Checking for mode switch (max. 20 times, once per second) ...
[Truncated ]
Original device can't be accessed anymore. Good.
[ Truncated ]
Found correct target device
Mode switch succeeded. Bye.

Once mode switching is successful, right click on the network manager applet and select ‘Edit Connections’. Under ‘Mobile Broadband’, select ‘Add’ and the device should be available for use to creating a new connection.

The rest should be obvious.

I am still getting my head around some of the issues such as how udev and usb_modeswitch work together. However, the immediate goal is to get this config into the upstream. The one problem though is that it seems ZTE MF112 shares the same product id as MF190. But that’s different story altogether.

About these ads

2 thoughts on “Getting ZTE MF190 HSUPA USB Stick to work in Ubuntu

  1. do you have any idea why the one from maxis work and the one you got from celcom didn’t work?

    i’m actually considering to buy this modem since mine kind of hard to work. it got disconnect and connected. in windows it works perfectly fine.

    Reply
    • I can’t tell anymore since I have already returned the device because the signal is too poor to be useful for any work. Somemore, this post is about 2 years old. Things changed vastly since then.

      Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s