0

I have an embedded linux USB host which refuses to detect a number of my USB devices. The host is running Ubutun 20.04LTS

Nothing shows up in dmesg during a failed detection and afterward the USB port is unusable for any USB device until the host is rebooted.

Some devices are detected by the host, including mass storage devices and a webcam (with imaging and audio interface). Devices which have failed include a Zoom H1n audio recorder, a USB-to-serial adaptor cable, and this device. All the devices which fail are detected successfully by my windows laptop, Ubuntu desktop, and another sama5d27-based embedded linux SBC running Debian.

As I understand this isn't a matter of missing kernel modules as unrecognized/unsupported devices should still be reported in dmesg.

I installed usbmon and captured this trace when connecting one device. Here is a pcap representation.

c24a4900 803906549 S Ci:1:001:0 s a3 00 0000 0001 0004 4 <
c24a4900 803906679 C Ci:1:001:0 0 4 = 00010000
c24a4900 803906728 S Ci:1:001:0 s a3 00 0000 0002 0004 4 <
c24a4900 803906760 C Ci:1:001:0 0 4 = 01050100
c24a4900 803906792 S Co:1:001:0 s 23 01 0010 0002 0000 0
c24a4900 803906822 C Co:1:001:0 0 0
c24a4900 803906849 S Ci:1:001:0 s a3 00 0000 0003 0004 4 <
c24a4900 803906874 C Ci:1:001:0 0 4 = 00010000
c1e14580 804020108 S Ii:1:001:1 -115:2048 4 <
c24a4900 804020218 S Ci:1:001:0 s a3 00 0000 0002 0004 4 <
c24a4900 804020293 C Ci:1:001:0 0 4 = 01050000
c24a4900 804020409 S Co:1:001:0 s 23 03 0004 0002 0000 0
c24a4900 804020472 C Co:1:001:0 0 0
c24a4400 804100105 S Ci:1:001:0 s a3 00 0000 0002 0004 4 <
c1e14580 804100183 C Ii:1:001:1 0:2048 1 = 04
c1e14580 804100209 S Ii:1:001:1 -115:2048 4 <
c24a4400 804100749 C Ci:1:001:0 0 4 = 01051000
c24a4400 804100826 S Co:1:001:0 s 23 03 0004 0002 0000 0
c24a4400 804100875 C Co:1:001:0 0 0
c24a4400 804320164 S Ci:1:001:0 s a3 00 0000 0002 0004 4 <
c24a4400 804320239 C Ci:1:001:0 0 4 = 00010100
c24a4400 804540102 S Ci:1:001:0 s a3 00 0000 0002 0004 4 <
c24a4400 804540175 C Ci:1:001:0 0 4 = 00010100
c24a4400 804760112 S Ci:1:001:0 s a3 00 0000 0002 0004 4 <
c24a4400 804760185 C Ci:1:001:0 0 4 = 00010100
c24a4400 804980144 S Ci:1:001:0 s a3 00 0000 0002 0004 4 <
c24a4400 804980220 C Ci:1:001:0 0 4 = 00010100
c24a4400 804980262 S Co:1:001:0 s 23 01 0014 0002 0000 0
c24a4400 804980294 C Co:1:001:0 0 0
c24a4400 804980329 S Co:1:001:0 s 23 01 0001 0002 0000 0
c24a4400 804980359 C Co:1:001:0 0 0
c24a4400 804980413 S Co:1:001:0 s 23 01 0001 0002 0000 0
c24a4400 804980447 C Co:1:001:0 0 0
c24a4400 804980517 S Ci:1:001:0 s a3 00 0000 0002 0004 4 <
c24a4400 804980556 C Ci:1:001:0 0 4 = 00010100
c24a4400 804980586 S Co:1:001:0 s 23 01 0010 0002 0000 0
c24a4400 804980616 C Co:1:001:0 0 0
c24a4400 804980648 S Ci:1:001:0 s a3 00 0000 0002 0004 4 <
c24a4400 804980678 C Ci:1:001:0 0 4 = 00010000
c24a4400 805030147 S Ci:1:001:0 s a3 00 0000 0002 0004 4 <
c24a4400 805030221 C Ci:1:001:0 0 4 = 00010000
c24a4400 805080107 S Ci:1:001:0 s a3 00 0000 0002 0004 4 <
c24a4400 805080176 C Ci:1:001:0 0 4 = 00010000
c24a4400 805130098 S Ci:1:001:0 s a3 00 0000 0002 0004 4 <
c24a4400 805130167 C Ci:1:001:0 0 4 = 00010000
c24a4400 805180127 S Ci:1:001:0 s a3 00 0000 0002 0004 4 <
c24a4400 805180195 C Ci:1:001:0 0 4 = 00010000
c1e14580 805180329 C Ii:1:001:1 -2:2048 0

The last line represents an error status -2 ENOENT which means "specified interface or endpoint does not exist or is not enabled" and this is sent by the device to the host. What does this mean?

Why is the host failing to detect this device?

1 Answer 1

0

This turned out to be the result of the fact the manufacturer-provided devicetree included EHCI but not OHCI. As such, only high-speed USB devices were being detected, not full-speed ones.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .