# Vodafone/Huawei K3770 with usb_modeswitch



## Ahmed (Mar 30, 2012)

Hi all,

I am trying to get a "Vodafone/Huawei K3770" working on FreeBSD 8.2.

When I insert the modem, I find only 2 USB files for it under /dev/usb.


```
# usbconfig -u 7 -a 2 dump_device_desc
ugen7.2: <Vodafone Mobile Broadband (Huawei) HUAWEI> at usbus7, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON

  bLength = 0x0012 
  bDescriptorType = 0x0001 
  bcdUSB = 0x0200 
  bDeviceClass = 0x0000 
  bDeviceSubClass = 0x0000 
  bDeviceProtocol = 0x0000 
  bMaxPacketSize0 = 0x0040 
  idVendor = 0x12d1 
  [B]idProduct = 0x14d1[/B]
  bcdDevice = 0x0102 
  iManufacturer = 0x0002  <HUAWEI>
  iProduct = 0x0001  <Vodafone Mobile Broadband (Huawei)>
  iSerialNumber = 0x0000  <no string>
  bNumConfigurations = 0x0001 

# file /dev/usb/7.2*
/dev/usb/7.2.0:  character special
/dev/usb/7.2.15: character special
```

I am using usb_modeswitch to activate the modem.


```
# usb_modeswitch -v 0x12d1 -p 0x14d1 -c 12d1\:14d1 

Looking for target devices ...
 No devices in target mode or class found
Looking for default devices ...
   found matching product ID
   adding device
 Found device in default mode, class or configuration (1)
Accessing device 012 on bus 000 ...
Getting the current device configuration ...
 OK, got current device configuration (1)
Using first interface: 0x00
Using endpoints 0x0f (out) and 0x8f (in)
Inquiring device details; driver will be detached ...
 Cant't do driver detection and detaching on this platform.

SCSI inquiry data (for identification)
-------------------------
  Vendor String: Vodafone
   Model String: CD ROM (Huawei) 
Revision String: 2.31
-------------------------

USB description data (for identification)
-------------------------
Manufacturer: HUAWEI
     Product: Vodafone Mobile Broadband (Huawei)
  Serial No.: not provided
-------------------------
Setting up communication with interface 0
Using endpoint 0x0f for message sending ...
Trying to send message 1 to endpoint 0x0f ...
 OK, message successfully sent
Resetting response endpoint 0x8f
Resetting message endpoint 0x0f
-> Run lsusb to note any changes. Bye.
```

The contents of 12d1:14d is:


```
TargetVendor=0x12d1
TargetProduct=0x14c9

MessageContent="55534243123456780000000000000011062000000100000000000000000000"
```

After I issue the command, I could see more devices added to /dev/usb and the Product ID changes accordingly.


```
# usbconfig -u 7 -a 2 dump_device_desc
ugen7.2: <Vodafone Mobile Broadband (Huawei) HUAWEI> at usbus7, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON

  bLength = 0x0012 
  bDescriptorType = 0x0001 
  bcdUSB = 0x0200 
  bDeviceClass = 0x0000 
  bDeviceSubClass = 0x0000 
  bDeviceProtocol = 0x0000 
  bMaxPacketSize0 = 0x0040 
  idVendor = 0x12d1 
  idProduct = 0x14c9 
  bcdDevice = 0x0102 
  iManufacturer = 0x0003  <HUAWEI>
  iProduct = 0x0002  <Vodafone Mobile Broadband (Huawei)>
  iSerialNumber = 0x0000  <no string>
  bNumConfigurations = 0x0001 

# file /dev/usb/7.2*
/dev/usb/7.2.0:  character special
/dev/usb/7.2.10: character special
/dev/usb/7.2.11: character special
/dev/usb/7.2.12: character special
/dev/usb/7.2.13: character special
/dev/usb/7.2.14: character special
/dev/usb/7.2.15: character special
/dev/usb/7.2.9:  character special
```

After that I did *dmesg*, but I see the device to be detected as a umass storage.


```
# dmesg | tail
umass0:  SCSI over Bulk-Only; quirks = 0x0000
umass0:0:0:-1: Attached to scbus0
(probe0:umass-sim0:0:0:0): TEST UNIT READY. CDB: 0 0 0 0 0 0 
(probe0:umass-sim0:0:0:0): CAM status: SCSI Status Error
(probe0:umass-sim0:0:0:0): SCSI status: Check Condition
(probe0:umass-sim0:0:0:0): SCSI sense: NOT READY asc:3a,0 (Medium not present)
cd0 at umass-sim0 bus 0 scbus0 target 0 lun 0
cd0: <Vodafone CD ROM (Huawei) 2.31> Removable CD-ROM SCSI-2 device 
cd0: 40.000MB/s transfers
cd0: Attempt to query device size failed: NOT READY, Medium not present
```

I found out that under linux the "usbserial" module is unloaded then loaded using:

[cmd=]# modprobe usbserial vendor=0x12d1 product=0x14c9[/cmd]

But I don't know how to do that under FreeBSD.

I have no clue what to do, and any help is very much appreciated.

Best Regards,
Ahmed


----------

