Ok, I've just discovered that I had the D+/D- lines the wrong way round to my hacky device. Its still not working, but its not working better :)
I'm 99% certain the D+/D- lines are correct now because on connection: [ 682.849304] hub 1-0:1.0: port 1, status 0101, change 0001, 12 Mb/s [ 683.003051] hub 1-0:1.0: debounce: port 1: total 100ms stable 100ms status 0x101 [ 683.003509] msm_hsusb msm_hsusb: port 1 reset [ 683.058837] msm_hsusb msm_hsusb: irq status 0004 PCD [ 683.062591] msm_hsusb msm_hsusb: GetStatus port 1 status 88001205 POWER sig=se0 PE CONNECT [ 683.122497] usb 1-1: new high speed USB device using msm_hsusb and address 2 This is a (for certain) USB 2.0 (High Speed) hub I'm attaching. With the D+/D- lines the wrong way round, it was reported as a low speed device. According to the USB specs, the (electrical) difference between low and full speed devices is which of the D lines a 15k pulldown resistor is on. Since its now registering as a 12Mb/s device initially, this means I have the lines correct. The important part is the last line: its going further and detecting it as a high speed device post reset. This means the the low level USB protocol signalling and negotiation is working prefectly fine, so all the necessary clocks, data line setup etc *must* be fine. However, I'm still getting errors when it tries to actually send USB packets: [ 683.122985] msm_hsusb msm_hsusb: submit_async 1 urb cb67e8a0 ep0out len 64, qtd ffc4b060 [qh 00000000] [ 683.123748] msm_hsusb msm_hsusb: irq status 0002 ERR [ 683.124023] msm_hsusb msm_hsusb: dev0 ep0in qtd token 80400d40 --> status -32 [ 683.124420] msm_hsusb msm_hsusb: ehci_urb_done 1 urb cb67e8a0 ep0in status -32 len 0/64 [ 683.124694] msm_hsusb msm_hsusb: irq status 0020 IAA I'm feeing more hopeful now that I'm certain the D+/D- lines are working ok. Investigation continues.... -- unsubscribe: android-kernel+unsubscr...@googlegroups.com website: http://groups.google.com/group/android-kernel