> Dear folks: > > I am developping USB Device Controller driver in Gadget framework for our own > SoC chip. > The development board is based on Linux 2.6.12 kernel and PC host is Linux > 2.6.14 (also 2.6.13.4) with CONFIG_USB_DEBUG enable and USB mass storage > debug enable. > > Gadget driver is g_file_storage. I find some problems about enumeration: > > Firstly, I use Bulk only transport > # insmod g_file_storage file=fsg_data > Here is the dmesg > ============================================================================== > usb 2-2: new full speed USB device using uhci_hcd and address 46 > usb 2-2: khubd timed out on ep0in len=8/64 > usb 2-2: ep0 maxpacket = 8 > usb 2-2: khubd timed out on ep0in len=18/18 > usb 2-2: khubd timed out on ep0in len=9/9 > usb 2-2: khubd timed out on ep0in len=24/32 > usb 2-2: config index 0 descriptor too short (expected 32, got 24) > usb 2-2: config 1 has an invalid descriptor of length 7, skipping remainder > of the config > usb 2-2: config 1 interface 0 altsetting 0 has 0 endpoint descriptors, > different from the interface descriptor's value: 2 > usb 2-2: khubd timed out on ep0in len=4/255 > usb 2-2: default language 0x0409 > usb 2-2: khubd timed out on ep0in len=0/255 > usb 2-2: khubd timed out on ep0in len=2/2 > usb 2-2: khubd timed out on ep0in len=54/54 > usb 2-2: khubd timed out on ep0in len=54/255 > usb 2-2: khubd timed out on ep0in len=26/255 > usb 2-2: new device strings: Mfr=1, Product=2, SerialNumber=3 > usb 2-2: Product: File-backed Storage Gadget > usb 2-2: Manufacturer: Linux 2.6.12 with z228_udc > usb 2-2: SerialNumber: 3230204F6374 > usb 2-2: hotplug > usb 2-2: khubd timed out on ep0in len=26/255 > usb 2-2: adding 2-2:1.0 (config #1, interface 0) > usb 2-2:1.0: hotplug > ub 2-2:1.0: usb_probe_interface > ub 2-2:1.0: usb_probe_interface - got id > ub(2.46): failed endpoint check > ub(2.46): Unable to submit GetMaxLUN (-22) > usb 2-2: khubd timed out on ep0in len=26/255 > hub 2-0:1.0: state 5 ports 2 chg 0000 evt 0004 > ========================================================================================================================= > Why khubd timed out? and GetMaxLUN error? > > And I used CBI for transport > # insmod g_file_storage file=fsg_data transport=CBI > ============================================================================================ > usb 2-2: new full speed USB device using uhci_hcd and address 51 > usb 2-2: khubd timed out on ep0in len=8/64 > usb 2-2: ep0 maxpacket = 8 > usb 2-2: khubd timed out on ep0in len=18/18 > usb 2-2: khubd timed out on ep0in len=9/9 > usb 2-2: khubd timed out on ep0in len=39/39 > usb 2-2: khubd timed out on ep0in len=4/255 > usb 2-2: default language 0x0409 > usb 2-2: khubd timed out on ep0in len=54/255 > usb 2-2: khubd timed out on ep0in len=54/255 > usb 2-2: khubd timed out on ep0in len=26/255 > usb 2-2: new device strings: Mfr=1, Product=2, SerialNumber=3 > usb 2-2: Product: File-backed Storage Gadget > usb 2-2: Manufacturer: Linux 2.6.12 with z228_udc > usb 2-2: SerialNumber: 3230204F6374 > usb 2-2: hotplug > usb 2-2: khubd timed out on ep0in len=26/255 > usb 2-2: adding 2-2:1.0 (config #1, interface 0) > usb 2-2:1.0: hotplug > usb-storage 2-2:1.0: usb_probe_interface > usb-storage 2-2:1.0: usb_probe_interface - got id > usb-storage: USB Mass Storage device detected > usb-storage: -- associate_dev > usb-storage: Vendor: 0x0525, Product: 0xa4a5, Revision: 0x0314 > usb-storage: Interface Subclass: 0x06, Protocol: 0x00 > usb-storage: Transport: Control/Bulk/Interrupt > usb-storage: Protocol: Transparent SCSI > scsi3 : SCSI emulation for USB Mass Storage devices > usb-storage: *** thread sleeping. > usb-storage: device found at 51 > usb-storage: waiting for device to settle before scanning > usb-storage: queuecommand called > usb-storage: *** thread awakened. > usb-storage: Command INQUIRY (6 bytes) > usb-storage: 12 00 00 00 24 00 > usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6 > usb 2-2: khubd timed out on ep0in len=26/255 > hub 2-0:1.0: state 5 ports 2 chg 0000 evt 0004 > usb-storage: command_abort called > usb-storage: usb_stor_stop_transport called > usb-storage: -- cancelling URB > usb-storage: Status code -104; transferred 0/6 > usb-storage: -- transfer cancelled > usb-storage: Call to usb_stor_ctrl_transfer() returned 4 > usb-storage: -- command was aborted > usb 2-2: reset full speed USB device using uhci_hcd and address 51 > usb 2-2: usb-storage timed out on ep0in len=8/64 > usb 2-2: ep0 maxpacket = 8 > usb 2-2: usb-storage timed out on ep0in len=18/18 > usb 2-2: usb-storage timed out on ep0in len=39/39 > usb-storage: usb_reset_device returns 0 > usb-storage: scsi command aborted > usb-storage: queuecommand called > usb-storage: *** thread sleeping. > usb-storage: *** thread awakened. > usb-storage: Command TEST_UNIT_READY (6 bytes) > usb-storage: 00 00 00 00 00 00 > usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6 > usb-storage: command_abort called > usb-storage: usb_stor_stop_transport called > usb-storage: -- cancelling URB > usb-storage: Status code -104; transferred 0/6 > usb-storage: -- transfer cancelled > usb-storage: Call to usb_stor_ctrl_transfer() returned 4 > usb-storage: -- command was aborted > hub 2-0:1.0: state 5 ports 2 chg 0000 evt 0004 > usb 2-2: reset full speed USB device using uhci_hcd and address 51 > usb 2-2: usb-storage timed out on ep0in len=8/64 > usb 2-2: ep0 maxpacket = 8 > usb 2-2: usb-storage timed out on ep0in len=18/18 > usb 2-2: usb-storage timed out on ep0in len=39/39 > usb-storage: usb_reset_device returns 0 > usb-storage: scsi command aborted > usb-storage: device_reset called > usb-storage: usb_stor_CB_reset called > usb-storage: usb_stor_control_msg: rq=00 rqtype=21 value=0000 index=00 len=12 > usb-storage: *** thread sleeping. > usb-storage: Timeout -- cancelling URB > usb-storage: Soft reset failed: -104 > usb-storage: bus_reset called > usb 2-2: reset full speed USB device using uhci_hcd and address 51 > usb 2-2: scsi_eh_3 timed out on ep0in len=8/64 > hub 2-0:1.0: state 5 ports 2 chg 0000 evt 0004 > usb 2-2: ep0 maxpacket = 8 > usb 2-2: scsi_eh_3 timed out on ep0in len=18/18 > usb 2-2: scsi_eh_3 timed out on ep0in len=39/39 > usb-storage: usb_reset_device returns 0 > usb-storage: queuecommand called > usb-storage: *** thread awakened. > usb-storage: Command TEST_UNIT_READY (6 bytes) > usb-storage: 00 00 00 00 00 00 > usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6 > usb-storage: command_abort called > usb-storage: usb_stor_stop_transport called > usb-storage: -- cancelling URB > usb-storage: Status code -104; transferred 0/6 > usb-storage: -- transfer cancelled > usb-storage: Call to usb_stor_ctrl_transfer() returned 4 > usb-storage: -- command was aborted > usb 2-2: reset full speed USB device using uhci_hcd and address 51 > usb 2-2: usb-storage timed out on ep0in len=8/64 > usb 2-2: ep0 maxpacket = 8 > usb 2-2: usb-storage timed out on ep0in len=18/18 > usb 2-2: usb-storage timed out on ep0in len=39/39 > usb-storage: usb_reset_device returns 0 > usb-storage: scsi command aborted > scsi: Device offlined - not ready after error recovery: host 3 channel 0 id 0 > lun 0 > usb-storage: *** thread sleeping. > usb-storage: queuecommand called > usb-storage: *** thread awakened. > usb-storage: Bad target number (1:0) > usb-storage: scsi cmd done, result=0x40000 > usb-storage: *** thread sleeping. > usb-storage: queuecommand called > usb-storage: *** thread awakened. > usb-storage: Bad target number (2:0) > usb-storage: scsi cmd done, result=0x40000 > usb-storage: *** thread sleeping. > usb-storage: queuecommand called > usb-storage: *** thread awakened. > usb-storage: Bad target number (3:0) > usb-storage: scsi cmd done, result=0x40000 > usb-storage: *** thread sleeping. > usb-storage: queuecommand called > usb-storage: *** thread awakened. > usb-storage: Bad target number (4:0) > usb-storage: scsi cmd done, result=0x40000 > usb-storage: *** thread sleeping. > usb-storage: queuecommand called > usb-storage: *** thread awakened. > usb-storage: Bad target number (5:0) > usb-storage: scsi cmd done, result=0x40000 > usb-storage: *** thread sleeping. > usb-storage: queuecommand called > usb-storage: *** thread awakened. > usb-storage: Bad target number (6:0) > usb-storage: scsi cmd done, result=0x40000 > usb-storage: *** thread sleeping. > usb-storage: queuecommand called > usb-storage: *** thread awakened. > usb-storage: Bad target number (7:0) > usb-storage: scsi cmd done, result=0x40000 > usb-storage: *** thread sleeping. > usb-storage: device scan complete > ====================================================================================================== > > Thanks a lot for you contribution and help > Best Regards > Bryan Wu from China > NHS甸�X����u��猗��链'?y�u�z店⒍�N��) > �贬y喈�����农���:�x� zwz漠��I↓��?囤� > �罕漱�?橱������⒐��~�j��富n氘刹邰�y��榈:�吮�m�z���~�~'u��?�槽㈥y��榉�槽�+�w�X?nN�HS^甸��X���'���u辑��A⑺����'��'�y澡u��z�店撷���,N盯�)� ��贬ky������骗��呐����%�:��x��mzw^z尼����I荨�从�b�+a囤� 0��,笔&�谦�'橱����骗��撷龚�瑙~��j亘�XЩ�m庄zYb槽,㈥�y�+�檗�:.���笔�m氍z�^��-~��~'�u�a囤l��b槽,㈥�y�+�檗幅b槽?�+-�w棹XЩ�m庄z
