Hi Bjørn, On Fri, Jun 22, 2012 at 11:53:12AM +0200, Bjørn Mork wrote: > Dan Williams <dcbw@xxxxxxxxxx> writes: > > > This was just a comment to let others (Bjorn!) know that we'll *also* > > probably need some more ids in cdc_wdm. I'm not 100% certain the device > > does QMI, but I'm 95% sure. > > Thanks for the confidence, but I don't see how I can guess this at > all. The only way to know for sure is if one of you with the device can > test it. > > I am attaching my perl example of how QMI support can be tested without > any driver support or other QMI utilities. It creates a CDC embedded > QMI_CTL "Get Version" request and sends that using libusb to all possible > interfaces on a device. No magic. If we get a response, then the > interface supports QMI. Otherwise it doesn't. I guess this indicates no QMI support? Or is there some other problem? # ./qmiver.pl --device=1410:b001 Debugging: off Device: 1410:b001 Candidate: ifnum=0 control_msg() failed (-32): Broken pipe Unsupported endpoint configuration on ifnum=1 Unsupported endpoint configuration on ifnum=2 Unsupported endpoint configuration on ifnum=4 Candidate: ifnum=6 control_msg() failed (-108): Cannot send after transport endpoint shutdown Unsupported endpoint configuration on ifnum=7 Debug output is attached. Thanks, Forest -- Forest Bond http://www.alittletooquiet.net http://www.rapidrollout.com
usb_set_debug: Setting debugging level to 1 (on) skipping descriptor 0xB skipping descriptor 0xFF Device: 1410:b001 $VAR1 = [ [ bless( { 'bInterfaceSubClass' => 255, 'bNumEndpoints' => 3, 'endpoints' => [ bless( { 'bmAttributes' => 3, 'wMaxPacketSize' => 64, 'bSynchAddress' => 0, 'bRefresh' => 0, 'bEndpointAddress' => 129, 'bInterval' => 5, 'bDescriptorType' => 5 }, 'Device::USB::DevEndpoint' ), bless( { 'bmAttributes' => 2, 'wMaxPacketSize' => 512, 'bSynchAddress' => 0, 'bRefresh' => 0, 'bEndpointAddress' => 130, 'bInterval' => 32, 'bDescriptorType' => 5 }, 'Device::USB::DevEndpoint' ), bless( { 'bmAttributes' => 2, 'wMaxPacketSize' => 512, 'bSynchAddress' => 0, 'bRefresh' => 0, 'bEndpointAddress' => 1, 'bInterval' => 32, 'bDescriptorType' => 5 }, 'Device::USB::DevEndpoint' ) ], 'bInterfaceProtocol' => 255, 'iInterface' => 0, 'bInterfaceNumber' => 0, 'bDescriptorType' => 4, 'bAlternateSetting' => 0, 'bInterfaceClass' => 255 }, 'Device::USB::DevInterface' ) ], [ bless( { 'bInterfaceSubClass' => 255, 'bNumEndpoints' => 2, 'endpoints' => [ bless( { 'bmAttributes' => 2, 'wMaxPacketSize' => 512, 'bSynchAddress' => 0, 'bRefresh' => 0, 'bEndpointAddress' => 131, 'bInterval' => 32, 'bDescriptorType' => 5 }, 'Device::USB::DevEndpoint' ), bless( { 'bmAttributes' => 2, 'wMaxPacketSize' => 512, 'bSynchAddress' => 0, 'bRefresh' => 0, 'bEndpointAddress' => 2, 'bInterval' => 32, 'bDescriptorType' => 5 }, 'Device::USB::DevEndpoint' ) ], 'bInterfaceProtocol' => 255, 'iInterface' => 0, 'bInterfaceNumber' => 1, 'bDescriptorType' => 4, 'bAlternateSetting' => 0, 'bInterfaceClass' => 255 }, 'Device::USB::DevInterface' ) ], [ bless( { 'bInterfaceSubClass' => 255, 'bNumEndpoints' => 2, 'endpoints' => [ bless( { 'bmAttributes' => 2, 'wMaxPacketSize' => 512, 'bSynchAddress' => 0, 'bRefresh' => 0, 'bEndpointAddress' => 132, 'bInterval' => 32, 'bDescriptorType' => 5 }, 'Device::USB::DevEndpoint' ), bless( { 'bmAttributes' => 2, 'wMaxPacketSize' => 512, 'bSynchAddress' => 0, 'bRefresh' => 0, 'bEndpointAddress' => 3, 'bInterval' => 32, 'bDescriptorType' => 5 }, 'Device::USB::DevEndpoint' ) ], 'bInterfaceProtocol' => 255, 'iInterface' => 0, 'bInterfaceNumber' => 2, 'bDescriptorType' => 4, 'bAlternateSetting' => 0, 'bInterfaceClass' => 255 }, 'Device::USB::DevInterface' ) ], [ bless( { 'bInterfaceSubClass' => 255, 'bNumEndpoints' => 2, 'endpoints' => [ bless( { 'bmAttributes' => 2, 'wMaxPacketSize' => 512, 'bSynchAddress' => 0, 'bRefresh' => 0, 'bEndpointAddress' => 133, 'bInterval' => 32, 'bDescriptorType' => 5 }, 'Device::USB::DevEndpoint' ), bless( { 'bmAttributes' => 2, 'wMaxPacketSize' => 512, 'bSynchAddress' => 0, 'bRefresh' => 0, 'bEndpointAddress' => 4, 'bInterval' => 32, 'bDescriptorType' => 5 }, 'Device::USB::DevEndpoint' ) ], 'bInterfaceProtocol' => 255, 'iInterface' => 0, 'bInterfaceNumber' => 4, 'bDescriptorType' => 4, 'bAlternateSetting' => 0, 'bInterfaceClass' => 255 }, 'Device::USB::DevInterface' ) ], [ bless( { 'bInterfaceSubClass' => 6, 'bNumEndpoints' => 1, 'endpoints' => [ bless( { 'bmAttributes' => 3, 'wMaxPacketSize' => 64, 'bSynchAddress' => 0, 'bRefresh' => 0, 'bEndpointAddress' => 134, 'bInterval' => 5, 'bDescriptorType' => 5 }, 'Device::USB::DevEndpoint' ) ], 'bInterfaceProtocol' => 0, 'iInterface' => 0, 'bInterfaceNumber' => 6, 'bDescriptorType' => 4, 'bAlternateSetting' => 0, 'bInterfaceClass' => 2 }, 'Device::USB::DevInterface' ) ], [ bless( { 'bInterfaceSubClass' => 0, 'bNumEndpoints' => 0, 'endpoints' => [], 'bInterfaceProtocol' => 0, 'iInterface' => 0, 'bInterfaceNumber' => 7, 'bDescriptorType' => 4, 'bAlternateSetting' => 0, 'bInterfaceClass' => 10 }, 'Device::USB::DevInterface' ), bless( { 'bInterfaceSubClass' => 0, 'bNumEndpoints' => 2, 'endpoints' => [ bless( { 'bmAttributes' => 2, 'wMaxPacketSize' => 512, 'bSynchAddress' => 0, 'bRefresh' => 0, 'bEndpointAddress' => 135, 'bInterval' => 32, 'bDescriptorType' => 5 }, 'Device::USB::DevEndpoint' ), bless( { 'bmAttributes' => 2, 'wMaxPacketSize' => 512, 'bSynchAddress' => 0, 'bRefresh' => 0, 'bEndpointAddress' => 5, 'bInterval' => 32, 'bDescriptorType' => 5 }, 'Device::USB::DevEndpoint' ) ], 'bInterfaceProtocol' => 0, 'iInterface' => 0, 'bInterfaceNumber' => 7, 'bDescriptorType' => 4, 'bAlternateSetting' => 1, 'bInterfaceClass' => 10 }, 'Device::USB::DevInterface' ) ] ]; Candidate: ifnum=0 control_msg() returned -32 control_msg() failed (-32): Broken pipe control_msg() returned 0 control_msg() returned 0 control_msg() returned 0 control_msg() returned 0 control_msg() returned 0 control_msg() returned 0 control_msg() returned 0 control_msg() returned 0 control_msg() returned 0 control_msg() returned 0 Unsupported endpoint configuration on ifnum=1 Unsupported endpoint configuration on ifnum=2 Unsupported endpoint configuration on ifnum=4 Candidate: ifnum=6 unbinding interface 6 from kernel driver "cdc_ether" control_msg() returned -108 control_msg() failed (-108): Cannot send after transport endpoint shutdown control_msg() returned -19 Unsupported endpoint configuration on ifnum=7 Debugging: on libusb_get_driver_np( 0 ) libusb_claim_interface( 0 ) libusb_control_msg( 0x21, 0000, 0000, 0000, 0x98e0788, 12, 1000 ) => -32 libusb_control_msg( 0xa1, 0x01, 0000, 0000, 0x98e1aa8, 512, 1000 ) => 0 libusb_control_msg( 0xa1, 0x01, 0000, 0000, 0x98e1aa8, 512, 1000 ) => 0 libusb_control_msg( 0xa1, 0x01, 0000, 0000, 0x98e1aa8, 512, 1000 ) => 0 libusb_control_msg( 0xa1, 0x01, 0000, 0000, 0x98e1aa8, 512, 1000 ) => 0 libusb_control_msg( 0xa1, 0x01, 0000, 0000, 0x98e1aa8, 512, 1000 ) => 0 libusb_control_msg( 0xa1, 0x01, 0000, 0000, 0x98e1aa8, 512, 1000 ) => 0 libusb_control_msg( 0xa1, 0x01, 0000, 0000, 0x98e1aa8, 512, 1000 ) => 0 libusb_control_msg( 0xa1, 0x01, 0000, 0000, 0x98e1aa8, 512, 1000 ) => 0 libusb_control_msg( 0xa1, 0x01, 0000, 0000, 0x98e1aa8, 512, 1000 ) => 0 libusb_control_msg( 0xa1, 0x01, 0000, 0000, 0x98e1aa8, 512, 1000 ) => 0 libusb_release_interface( 0 ) libusb_get_driver_np( 6 ) libusb_detach_kernel_driver_np( 6 ) libusb_claim_interface( 6 ) libusb_control_msg( 0x21, 0000, 0000, 0x06, 0x98e1aa8, 12, 1000 ) => -108 libusb_control_msg( 0xa1, 0x01, 0000, 0x06, 0x98e1aa8, 512, 1000 ) => -19 libusb_release_interface( 6 )
Attachment:
signature.asc
Description: Digital signature