On Thu, 8 Nov 2007, Brad Schick wrote: > I have a usb device (lsusb -v below) running custom firmware based on > example code from Atmel . There are two interfaces: 0 is a mass storage > interface with two endpoints, 1 is a custom vendor interface with one > interrupt IN endpoint. The custom interface is used to send data to an > app on the host based on libusb (Ubuntu 2.6.22-14-generic kernel). > Custom commands are sent to the device on the default control endpoint. > > When I remove interface 0 (mass storage) in the firmware, the custom > interface works as expected. I can send commands on the default endpoint > and successfully read resulting data on the interrupt IN endpoint. > > But when I enable the mass storage IF I can no longer read from the > interrupt endpoint. Each read request returns almost immediately with no > data. This is what reads look like in usbmon's output: > > cd5c10c0 2870377317 S Ii:107:03 -115 32 < > cd5c10c0 2870424737 C Ii:107:03 -84 0 > > Error 84 is EILSEQ, and looking around the kernel source seems to mean > "protocol error or unplug" (although it has various uses). Any ideas why > this might be happening? I've been digging around the firmware code, but > I was hoping someone might have some suggestions.
Perhaps the device doesn't transmit any packets in response to the IN packet for the interrupt endpoint. It should reply with either NAK or DATAx, and if it doesn't send anything at all the host will report a protocol error. Alan Stern ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ Linux-usb-users@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-users