ZTE MF636 USB u3g modem

Mike Tancsa mike at sentex.net
Fri May 8 03:14:39 UTC 2009


At 10:01 AM 5/7/2009, Mike Tancsa wrote:

>>This is the real port. Could you dump the descriptors after unloading the
>>driver and loading ugen?


I decided to give it a spin on HEAD, but not sure if the recent 
changes to u3g in HEAD changed the behaviour, or its an issue with me 
fiddling with the driver.

Using
http://www.draisberghof.de/usb_modeswitch/usb_modeswitch-0.9.7.tar.bz2

I am able to make the device appear, but as /dev/cuaU0 and not /dev/cuaU0.0


u3g0: <ZTE, Incorporated ZTE CDMA Technologies MSM, class 0/0, rev 
2.00/0.00, addr 2> on usbus3
umass0: <ZTE, Incorporated ZTE CDMA Technologies MSM, class 0/0, rev 
2.00/0.00, addr 2> on usbus3
umass0:  SCSI over Bulk-Only; quirks = 0x0000
Root mount waiting for: usbus3
umass0:0:0:-1: Attached to scbus0
Root mount waiting for: usbus3
(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): NOT READY asc:3a,0
(probe0:umass-sim0:0:0:0): Medium not present
(probe0:umass-sim0:0:0:0): Unretryable error
da0 at umass-sim0 bus 0 target 0 lun 0
da0: <ZTE MMC Storage 322> Removable Direct Access SCSI-2 device
da0: 40.000MB/s transfers
da0: Attempt to query device size failed: NOT READY, Medium not presen

da0 is the microSD drive


I think the port that attaches is actually the monitor port as there 
is a stead stream of

+ZUSIMR:2

+ZUSIMR:2

+ZUSIMR:2

+ZUSIMR:2

+ZUSIMR:2

+ZUSIMR:2

+ZUSIMR:2

+ZUSIMR:2

In windows, it provides 2 serial ports


The following changes, along with using usb_modeswitch seems to get 
things working, however, ppp sometimes gets confused with the 
ZUSIMR:2 stuff constantly being spewed out.

0[i7]# diff -u usbdevs usbdevs.zte
--- usbdevs     2009-04-21 01:06:31.000000000 -0400
+++ usbdevs.zte 2009-05-07 23:10:11.000000000 -0400
@@ -2035,6 +2035,7 @@
  product QUALCOMM2 RWT_FCT      0x3100  RWT FCT-CDMA 2000 1xRTT modem
  product QUALCOMM2 CDMA_MSM     0x3196  CDMA Technologies MSM modem
  product QUALCOMMINC CDMA_MSM   0x0001  CDMA Technologies MSM modem
+product QUALCOMMINC CDMA_MSM636        0x0031  MF636 Technologies MSM modem
  product QUALCOMMINC ZTE_STOR   0x2000  USB ZTE Storage
  product QUALCOMMINC AC8700     0xfffe  CDMA 1xEVDO USB modem

1[i7]#

1[i7]# diff -u u3g.c u3g.c.mdt
--- u3g.c       2009-05-07 13:05:03.000000000 -0400
+++ u3g.c.mdt   2009-05-07 23:09:59.000000000 -0400
@@ -168,6 +168,7 @@
         /* OEM: Qualcomm, Inc. */
         U3G_DEV(QUALCOMMINC, ZTE_STOR, U3GFL_SCSI_EJECT),
         U3G_DEV(QUALCOMMINC, CDMA_MSM, U3GFL_SCSI_EJECT),
+       U3G_DEV(QUALCOMMINC, CDMA_MSM636, U3GFL_SCSI_EJECT),
         /* OEM: Huawei */
         U3G_DEV(HUAWEI, MOBILE, U3GFL_HUAWEI_INIT),
         U3G_DEV(HUAWEI, E220, U3GFL_HUAWEI_INIT),
1[i7]#

dmesg shows

ugen3.2: <ZTE, Incorporated> at usbus3
u3g0: <ZTE, Incorporated ZTE CDMA Technologies MSM, class 0/0, rev 
2.00/0.00, addr 2> on usbus3
umass0: <ZTE, Incorporated ZTE CDMA Technologies MSM, class 0/0, rev 
2.00/0.00, addr 2> on usbus3
umass0:  SCSI over Bulk-Only; quirks = 0x0000
Root mount waiting for: usbus3
umass0:0:0:-1: Attached to scbus0
Root mount waiting for: usbus3
(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): NOT READY asc:3a,0
(probe0:umass-sim0:0:0:0): Medium not present
(probe0:umass-sim0:0:0:0): Unretryable error
da0 at umass-sim0 bus 0 target 0 lun 0
da0: <ZTE MMC Storage 322> Removable Direct Access SCSI-2 device
da0: 40.000MB/s transfers
da0: Attempt to query device size failed: NOT READY, Medium not present



>Hi,
>         I think this is the info you want ? If not, let me know. 
> Thanks!  I also did a usb capture of all the traffic in windows 
> from the point of the device being attached and going online.
>
>0[i7]# usbconfig -u 3 -a 5 dump_device_desc
>ugen3.5: <ZTE CDMA Technologies MSM ZTE, Incorporated> at usbus3, 
>cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON
>
>   bLength = 0x0012
>   bDescriptorType = 0x0001
>   bcdUSB = 0x0200
>   bDeviceClass = 0x0000
>   bDeviceSubClass = 0x0000
>   bDeviceProtocol = 0x0000
>   bMaxPacketSize0 = 0x0040
>   idVendor = 0x19d2
>   idProduct = 0x0031
>   bcdDevice = 0x0000
>   iManufacturer = 0x0002  <ZTE, Incorporated>
>   iProduct = 0x0001  <ZTE CDMA Technologies MSM>
>   iSerialNumber = 0x0003  <1234567890ABCDEF>
>   bNumConfigurations = 0x0001
>
>0[i7]# usbconfig -u 3 -a 5 dump_all_config_desc
>ugen3.5: <ZTE CDMA Technologies MSM ZTE, Incorporated> at usbus3, 
>cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON
>
>
>  Configuration index 0
>
>     bLength = 0x0009
>     bDescriptorType = 0x0002
>     wTotalLength = 0x0100
>     bNumInterfaces = 0x0004
>     bConfigurationValue = 0x0001
>     iConfiguration = 0x0000  <no string>
>     bmAttributes = 0x00a0
>     bMaxPower = 0x00fa
>
>     Interface 0
>       bLength = 0x0009
>       bDescriptorType = 0x0004
>       bInterfaceNumber = 0x0000
>       bAlternateSetting = 0x0000
>       bNumEndpoints = 0x0000
>       bInterfaceClass = 0x00ff
>       bInterfaceSubClass = 0x00ff
>       bInterfaceProtocol = 0x00ff
>       iInterface = 0x0000  <no string>
>
>       Additional Descriptor
>
>       bLength = 0x05
>       bDescriptorType = 0x24
>       bDescriptorSubType = 0x00
>        RAW dump:
>        0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
>
>
>       Additional Descriptor
>
>       bLength = 0x05
>       bDescriptorType = 0x24
>       bDescriptorSubType = 0x15
>        RAW dump:
>        0x00 | 0x05, 0x24, 0x15, 0x00, 0x01
>
>
>       Additional Descriptor
>
>       bLength = 0x05
>       bDescriptorType = 0x24
>       bDescriptorSubType = 0x06
>        RAW dump:
>        0x00 | 0x05, 0x24, 0x06, 0x00, 0x00
>
>
>       Additional Descriptor
>
>       bLength = 0x15
>       bDescriptorType = 0x24
>       bDescriptorSubType = 0x12
>        RAW dump:
>        0x00 | 0x15, 0x24, 0x12, 0x20, 0x01, 0x98, 0xb0, 0x6a,
>        0x08 | 0x49, 0xb0, 0x9e, 0x48, 0x96, 0x94, 0x46, 0xd9,
>        0x10 | 0x9a, 0x28, 0xca, 0x4e, 0x5d
>
>
>       Additional Descriptor
>
>       bLength = 0x06
>       bDescriptorType = 0x24
>       bDescriptorSubType = 0x13
>        RAW dump:
>        0x00 | 0x06, 0x24, 0x13, 0x00, 0x01, 0x10
>
>
>
>     Interface 0 Alt 1
>       bLength = 0x0009
>       bDescriptorType = 0x0004
>       bInterfaceNumber = 0x0000
>       bAlternateSetting = 0x0001
>       bNumEndpoints = 0x0002
>       bInterfaceClass = 0x00ff
>       bInterfaceSubClass = 0x00ff
>       bInterfaceProtocol = 0x00ff
>       iInterface = 0x0000  <no string>
>
>      Endpoint 0
>         bLength = 0x0007
>         bDescriptorType = 0x0005
>         bEndpointAddress = 0x0081
>         bmAttributes = 0x0002
>         wMaxPacketSize = 0x0200
>         bInterval = 0x0020
>         bRefresh = 0x0000
>         bSynchAddress = 0x0000
>
>      Endpoint 1
>         bLength = 0x0007
>         bDescriptorType = 0x0005
>         bEndpointAddress = 0x0001
>         bmAttributes = 0x0002
>         wMaxPacketSize = 0x0200
>         bInterval = 0x0020
>         bRefresh = 0x0000
>         bSynchAddress = 0x0000
>
>
>     Interface 1
>       bLength = 0x0009
>       bDescriptorType = 0x0004
>       bInterfaceNumber = 0x0001
>       bAlternateSetting = 0x0000
>       bNumEndpoints = 0x0000
>       bInterfaceClass = 0x00ff
>       bInterfaceSubClass = 0x00ff
>       bInterfaceProtocol = 0x00ff
>       iInterface = 0x0000  <no string>
>
>       Additional Descriptor
>
>       bLength = 0x05
>       bDescriptorType = 0x24
>       bDescriptorSubType = 0x00
>        RAW dump:
>        0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
>
>
>       Additional Descriptor
>
>       bLength = 0x05
>       bDescriptorType = 0x24
>       bDescriptorSubType = 0x15
>        RAW dump:
>        0x00 | 0x05, 0x24, 0x15, 0x00, 0x01
>
>
>       Additional Descriptor
>
>       bLength = 0x05
>       bDescriptorType = 0x24
>       bDescriptorSubType = 0x06
>        RAW dump:
>        0x00 | 0x05, 0x24, 0x06, 0x01, 0x01
>
>
>       Additional Descriptor
>
>       bLength = 0x15
>       bDescriptorType = 0x24
>       bDescriptorSubType = 0x12
>        RAW dump:
>        0x00 | 0x15, 0x24, 0x12, 0x20, 0x01, 0x98, 0xb0, 0x6a,
>        0x08 | 0x49, 0xb0, 0x9e, 0x48, 0x96, 0x94, 0x46, 0xd9,
>        0x10 | 0x9a, 0x28, 0xca, 0x4e, 0x5d
>
>
>       Additional Descriptor
>
>       bLength = 0x06
>       bDescriptorType = 0x24
>       bDescriptorSubType = 0x13
>        RAW dump:
>        0x00 | 0x06, 0x24, 0x13, 0x00, 0x01, 0x10
>
>
>
>     Interface 1 Alt 1
>       bLength = 0x0009
>       bDescriptorType = 0x0004
>       bInterfaceNumber = 0x0001
>       bAlternateSetting = 0x0001
>       bNumEndpoints = 0x0002
>       bInterfaceClass = 0x00ff
>       bInterfaceSubClass = 0x00ff
>       bInterfaceProtocol = 0x00ff
>       iInterface = 0x0000  <no string>
>
>      Endpoint 0
>         bLength = 0x0007
>         bDescriptorType = 0x0005
>         bEndpointAddress = 0x0082
>         bmAttributes = 0x0002
>         wMaxPacketSize = 0x0200
>         bInterval = 0x0020
>         bRefresh = 0x0000
>         bSynchAddress = 0x0000
>
>      Endpoint 1
>         bLength = 0x0007
>         bDescriptorType = 0x0005
>         bEndpointAddress = 0x0002
>         bmAttributes = 0x0002
>         wMaxPacketSize = 0x0200
>         bInterval = 0x0020
>         bRefresh = 0x0000
>         bSynchAddress = 0x0000
>
>
>     Interface 2
>       bLength = 0x0009
>       bDescriptorType = 0x0004
>       bInterfaceNumber = 0x0002
>       bAlternateSetting = 0x0000
>       bNumEndpoints = 0x0002
>       bInterfaceClass = 0x0008
>       bInterfaceSubClass = 0x0006
>       bInterfaceProtocol = 0x0050
>       iInterface = 0x0000  <no string>
>
>      Endpoint 0
>         bLength = 0x0007
>         bDescriptorType = 0x0005
>         bEndpointAddress = 0x0003
>         bmAttributes = 0x0002
>         wMaxPacketSize = 0x0200
>         bInterval = 0x0000
>         bRefresh = 0x0000
>         bSynchAddress = 0x0000
>
>      Endpoint 1
>         bLength = 0x0007
>         bDescriptorType = 0x0005
>         bEndpointAddress = 0x0083
>         bmAttributes = 0x0002
>         wMaxPacketSize = 0x0200
>         bInterval = 0x0000
>         bRefresh = 0x0000
>         bSynchAddress = 0x0000
>
>
>     Interface 3
>       bLength = 0x0009
>       bDescriptorType = 0x0004
>       bInterfaceNumber = 0x0003
>       bAlternateSetting = 0x0000
>       bNumEndpoints = 0x0003
>       bInterfaceClass = 0x00ff
>       bInterfaceSubClass = 0x00ff
>       bInterfaceProtocol = 0x00ff
>       iInterface = 0x0000  <no string>
>
>       Additional Descriptor
>
>       bLength = 0x05
>       bDescriptorType = 0x24
>       bDescriptorSubType = 0x00
>        RAW dump:
>        0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
>
>
>       Additional Descriptor
>
>       bLength = 0x04
>       bDescriptorType = 0x24
>       bDescriptorSubType = 0x02
>        RAW dump:
>        0x00 | 0x04, 0x24, 0x02, 0x02
>
>
>       Additional Descriptor
>
>       bLength = 0x05
>       bDescriptorType = 0x24
>       bDescriptorSubType = 0x01
>        RAW dump:
>        0x00 | 0x05, 0x24, 0x01, 0x03, 0x03
>
>
>       Additional Descriptor
>
>       bLength = 0x05
>       bDescriptorType = 0x24
>       bDescriptorSubType = 0x06
>        RAW dump:
>        0x00 | 0x05, 0x24, 0x06, 0x03, 0x03
>
>
>       Additional Descriptor
>
>       bLength = 0x15
>       bDescriptorType = 0x24
>       bDescriptorSubType = 0x12
>        RAW dump:
>        0x00 | 0x15, 0x24, 0x12, 0x20, 0x01, 0x98, 0xb0, 0x6a,
>        0x08 | 0x49, 0xb0, 0x9e, 0x48, 0x96, 0x94, 0x46, 0xd9,
>        0x10 | 0x9a, 0x28, 0xca, 0x4e, 0x5d
>
>
>       Additional Descriptor
>
>       bLength = 0x06
>       bDescriptorType = 0x24
>       bDescriptorSubType = 0x13
>        RAW dump:
>        0x00 | 0x06, 0x24, 0x13, 0x00, 0x01, 0x10
>
>
>      Endpoint 0
>         bLength = 0x0007
>         bDescriptorType = 0x0005
>         bEndpointAddress = 0x0084
>         bmAttributes = 0x0003
>         wMaxPacketSize = 0x0040
>         bInterval = 0x0005
>         bRefresh = 0x0000
>         bSynchAddress = 0x0000
>
>      Endpoint 1
>         bLength = 0x0007
>         bDescriptorType = 0x0005
>         bEndpointAddress = 0x0085
>         bmAttributes = 0x0002
>         wMaxPacketSize = 0x0200
>         bInterval = 0x0020
>         bRefresh = 0x0000
>         bSynchAddress = 0x0000
>
>      Endpoint 2
>         bLength = 0x0007
>         bDescriptorType = 0x0005
>         bEndpointAddress = 0x0004
>         bmAttributes = 0x0002
>         wMaxPacketSize = 0x0200
>         bInterval = 0x0020
>         bRefresh = 0x0000
>         bSynchAddress = 0x0000
>
>
>
>
>
>> > ucom1: <ZTE, Incorporated ZTE CDMA Technologies MSM, class 0/0, rev
>> > 2.00/0.00, addr 2> on uhub1
>> > ucom1: configured 0 serial ports (U1.%d)
>> > ucom2: <ZTE, Incorporated ZTE CDMA Technologies MSM, class 0/0, rev
>> > 2.00/0.00, addr 2> on uhub1
>> > ucom2: configured 0 serial ports (U2.%d)
>>
>>These two are not actually com ports. They are probably umass related, but
>>attached to by u3g instead.
>
>When installed on windows, there are extra com ports
>
>
>
>>Nick
>
>_______________________________________________
>freebsd-usb at freebsd.org mailing list
>http://lists.freebsd.org/mailman/listinfo/freebsd-usb
>To unsubscribe, send any mail to "freebsd-usb-unsubscribe at freebsd.org"



More information about the freebsd-usb mailing list