problems with huawei E3372 alias Telekom Speedstick V

Bjørn Mork bjorn at mork.no
Fri Aug 29 02:16:01 PDT 2014


Aleksander Morgado <aleksander at aleksander.es> writes:

> One of the things you need to check with that modem is whether the
> NDISDUP command is sent in the /dev/cdc-wdm port instead of in a TTY;
> I believe that the modems handled by the huawei-cdc-ncm driver in the
> kernel need to have the NDISDUP command in the same USB interface as
> the WWAN port, which is what huawei-cdc-ncm allows to do.

Not knowing much about the Windows USB stack I find these UsbSnoop
traces a bit difficult to decipher.  I recommend using USBPcap on
Windows - open source and much easier to analyze.

But unless I'm mistaken, this is going on the control channel
(i.e. similar to /dev/cdc-wdm) :


-- URB_FUNCTION_CLASS_INTERFACE:
  TransferFlags          = 00000002 (USBD_TRANSFER_DIRECTION_OUT, USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 0000003a
  TransferBuffer       = f7b07f78
  TransferBufferMDL    = 00000000
    00000000: 41 54 5e 4e 44 49 53 43 4f 4e 4e 3d 31 2c 31 2c
    00000010: 22 69 6e 74 65 72 6e 65 74 2e 74 65 6c 65 6b 6f
    00000020: 6d 22 2c 22 74 65 6c 65 6b 6f 6d 22 2c 22 74 65
    00000030: 6c 65 6b 6f 6d 22 2c 31 0d 0a
  UrbLink                 = 00000000
  RequestTypeReservedBits = 00000000
  Request                 = 00000000
  Value                   = 00000000
  Index                   = 00000002
[437099 ms] UsbSnoop - FilterDispatchAny(f76bcfd2) : IRP_MJ_INTERNAL_DEVICE_CONTROL
[437099 ms] UsbSnoop - FdoHookDispatchInternalIoctl(f76bd1ea) : fdo=8603e030, Irp=865055a8, IRQL=1
[437099 ms]  >>>  URB 4788 going down  >>> 
-- URB_FUNCTION_CLASS_INTERFACE:
  TransferFlags          = 00000002 (USBD_TRANSFER_DIRECTION_OUT, USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 0000003a
  TransferBuffer       = f7b07f78
  TransferBufferMDL    = 00000000
    00000000: 41 54 5e 4e 44 49 53 43 4f 4e 4e 3d 31 2c 31 2c
    00000010: 22 69 6e 74 65 72 6e 65 74 2e 74 65 6c 65 6b 6f
    00000020: 6d 22 2c 22 74 65 6c 65 6b 6f 6d 22 2c 22 74 65
    00000030: 6c 65 6b 6f 6d 22 2c 31 0d 0a
  UrbLink                 = 00000000
  RequestTypeReservedBits = 00000000
  Request                 = 00000000
  Value                   = 00000000
  Index                   = 00000002
[437100 ms] UsbSnoop - MyInternalIOCTLCompletion(f76bd126) : fido=864f3678, Irp=865055a8, Context=853f4ed8, IRQL=2
[437100 ms]  <<<  URB 4788 coming back  <<< 
-- URB_FUNCTION_CONTROL_TRANSFER:
  PipeHandle           = 86411120
  TransferFlags        = 0000000a (USBD_TRANSFER_DIRECTION_OUT, USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 0000003a
  TransferBuffer       = f7b07f78
  TransferBufferMDL    = 86769740
  UrbLink              = 00000000
  SetupPacket          =
    00000000: 21 00 00 00 02 00 3a 00
[437100 ms] UsbSnoop - MyInternalIOCTLCompletion(f76bd126) : fido=00000000, Irp=865055a8, Context=86453f80, IRQL=2
[437100 ms]  <<<  URB 239 coming back  <<< 
-- URB_FUNCTION_CONTROL_TRANSFER:
  PipeHandle           = 86411120
  TransferFlags        = 0000000a (USBD_TRANSFER_DIRECTION_OUT, USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 0000003a
  TransferBuffer       = f7b07f78
  TransferBufferMDL    = 86769740
  UrbLink              = 00000000
  SetupPacket          =
    00000000: 21 00 00 00 02 00 3a 00
[437102 ms] UsbSnoop - MyInternalIOCTLCompletion(f76bd126) : fido=864f3678, Irp=8634e740, Context=8662a770, IRQL=2
[437102 ms]  <<<  URB 4786 coming back  <<< 
-- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
  PipeHandle           = 864f3104 [endpoint 0x00000086]
  TransferFlags        = 00000003 (USBD_TRANSFER_DIRECTION_IN, USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000008
  TransferBuffer       = 865b6c70
  TransferBufferMDL    = 8629d1d0
    00000000: a1 01 00 00 02 00 00 00
  UrbLink              = 00000000
[437102 ms] UsbSnoop - MyInternalIOCTLCompletion(f76bd126) : fido=00000000, Irp=8634e740, Context=865510b0, IRQL=2
[437102 ms]  <<<  URB 237 coming back  <<< 
-- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
  PipeHandle           = 864f3104 [endpoint 0x00000086]
  TransferFlags        = 00000003 (USBD_TRANSFER_DIRECTION_IN, USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000008
  TransferBuffer       = 865b6c70
  TransferBufferMDL    = 8629d1d0
    00000000: a1 01 00 00 02 00 00 00
  UrbLink              = 00000000
[437102 ms] UsbSnoop - FilterDispatchAny(f76bcfd2) : IRP_MJ_INTERNAL_DEVICE_CONTROL
[437102 ms] UsbSnoop - FdoHookDispatchInternalIoctl(f76bd1ea) : fdo=86369028, Irp=8634e740, IRQL=2
[437102 ms]  >>>  URB 240 going down  >>> 
-- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
  PipeHandle           = 864f3104 [endpoint 0x00000086]
  TransferFlags        = 00000003 (USBD_TRANSFER_DIRECTION_IN, USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000010
  TransferBuffer       = 865b6c70
  TransferBufferMDL    = 00000000
  UrbLink              = 00000000
[437102 ms] UsbSnoop - FilterDispatchAny(f76bcfd2) : IRP_MJ_INTERNAL_DEVICE_CONTROL
[437102 ms] UsbSnoop - FdoHookDispatchInternalIoctl(f76bd1ea) : fdo=8603e030, Irp=8634e740, IRQL=2
[437102 ms]  >>>  URB 4789 going down  >>> 
-- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
  PipeHandle           = 864f3104 [endpoint 0x00000086]
  TransferFlags        = 00000003 (USBD_TRANSFER_DIRECTION_IN, USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000010
  TransferBuffer       = 865b6c70
  TransferBufferMDL    = 00000000
  UrbLink              = 00000000
[437102 ms] UsbSnoop - FilterDispatchAny(f76bcfd2) : IRP_MJ_INTERNAL_DEVICE_CONTROL
[437102 ms] UsbSnoop - FdoHookDispatchInternalIoctl(f76bd1ea) : fdo=86369028, Irp=86344438, IRQL=1
[437102 ms]  >>>  URB 241 going down  >>> 
-- URB_FUNCTION_CLASS_INTERFACE:
  TransferFlags          = 00000003 (USBD_TRANSFER_DIRECTION_IN, USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000100
  TransferBuffer       = f7b1ec4f
  TransferBufferMDL    = 00000000
  UrbLink                 = 00000000
  RequestTypeReservedBits = 00000000
  Request                 = 00000001
  Value                   = 00000000
  Index                   = 00000002
[437102 ms] UsbSnoop - FilterDispatchAny(f76bcfd2) : IRP_MJ_INTERNAL_DEVICE_CONTROL
[437102 ms] UsbSnoop - FdoHookDispatchInternalIoctl(f76bd1ea) : fdo=8603e030, Irp=86344438, IRQL=1
[437102 ms]  >>>  URB 4790 going down  >>> 
-- URB_FUNCTION_CLASS_INTERFACE:
  TransferFlags          = 00000003 (USBD_TRANSFER_DIRECTION_IN, USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000100
  TransferBuffer       = f7b1ec4f
  TransferBufferMDL    = 00000000
  UrbLink                 = 00000000
  RequestTypeReservedBits = 00000000
  Request                 = 00000001
  Value                   = 00000000
  Index                   = 00000002
[437102 ms] UsbSnoop - MyInternalIOCTLCompletion(f76bd126) : fido=864f3678, Irp=86344438, Context=853f4ed8, IRQL=2
[437102 ms]  <<<  URB 4790 coming back  <<< 
-- URB_FUNCTION_CONTROL_TRANSFER:
  PipeHandle           = 86411120
  TransferFlags        = 0000000b (USBD_TRANSFER_DIRECTION_IN, USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000006
  TransferBuffer       = f7b1ec4f
  TransferBufferMDL    = 86769740
    00000000: 0d 0a 4f 4b 0d 0a
  UrbLink              = 00000000
  SetupPacket          =
    00000000: a1 01 00 00 02 00 00 01
[437102 ms] UsbSnoop - MyInternalIOCTLCompletion(f76bd126) : fido=00000000, Irp=86344438, Context=86453f80, IRQL=2
[437102 ms]  <<<  URB 241 coming back  <<< 
-- URB_FUNCTION_CONTROL_TRANSFER:
  PipeHandle           = 86411120
  TransferFlags        = 0000000b (USBD_TRANSFER_DIRECTION_IN, USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000006
  TransferBuffer       = f7b1ec4f
  TransferBufferMDL    = 86769740
    00000000: 0d 0a 4f 4b 0d 0a
  UrbLink              = 00000000
  SetupPacket          =
    00000000: a1 01 00 00 02 00 00 01
[437227 ms] UsbSnoop - FilterDispatchAny(f76bcfd2) : IRP_MJ_INTERNAL_DEVICE_CONTROL
[437228 ms] UsbSnoop - FdoHookDispatchInternalIoctl(f76bd1ea) : fdo=86369028, Irp=864299f8, IRQL=1
[437228 ms]  >>>  URB 242 going down  >>> 



This seems to be the interface/class specific control request/reply
sequence: 

 AT^NDISCONN=1,1,"internet.telekom","telekom","telekom",1
 OK

referring to interface #2, which I assume is the NCM control interface
on this modem?  Uhm, yup, the dmesg log confirms that assumption:

> [  155.080539] huawei_cdc_ncm 1-2:1.2: cdc-wdm0: USB WDM device


So, yes, it looks like Windows use AT^NDISCONN on the /dev/cdc-wdm port
here.


Bjørn


More information about the ModemManager-devel mailing list