USB HID Device Troubles

Using a BeagleBone Black Revision C. I am having some trouble with a HID Device (iMX8 Processor)
I get the following when attaching the device,

[  547.227944] usb 1-1: new high-speed USB device number 51 using musb-hdrc
[  564.837950] usb 1-1: device descriptor read/64, error -110
[  566.798280] usb usb1-port1: Cannot enable. Maybe the USB cable is bad?
[  566.805121] usb usb1-port1: attempt power cycle
[  567.027982] usb 1-1: new high-speed USB device number 53 using musb-hdrc
[  568.277942] usb 1-1: new high-speed USB device number 54 using musb-hdrc
[  573.747994] usb 1-1: device not accepting address 54, error -110
[  573.754356] usb usb1-port1: unable to enumerate USB device
[  574.108048] usb 1-1: new high-speed USB device number 55 using musb-hdrc
[  591.717938] usb 1-1: device descriptor read/64, error -110
[  593.678135] usb usb1-port1: Cannot enable. Maybe the USB cable is bad?
[  593.685010] usb usb1-port1: attempt power cycle
[  593.907998] usb 1-1: new high-speed USB device number 57 using musb-hdrc
[  595.157943] usb 1-1: new high-speed USB device number 58 using musb-hdrc
[  600.627962] usb 1-1: device not accepting address 58, error -110
[  600.635078] usb usb1-port1: unable to enumerate USB device
[  600.987930] usb 1-1: new high-speed USB device number 59 using musb-hdrc
[  603.958113] usb 1-1: new high-speed USB device number 60 using musb-hdrc
[  621.557969] usb 1-1: device descriptor read/64, error -110
[  621.678155] usb usb1-port1: attempt power cycle
[  622.777946] usb 1-1: new high-speed USB device number 61 using musb-hdrc
[  628.227967] usb 1-1: device not accepting address 61, error -110
[  628.597937] usb 1-1: new high-speed USB device number 62 using musb-hdrc
[  628.628650] usb 1-1: New USB device found, idVendor=1fc9, idProduct=012f, bcdDevice= 0.04
[  628.636945] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  628.644282] usb 1-1: Product: SE Blank 8QXP 
[  628.648718] usb 1-1: Manufacturer: NXP       SemiConductor Inc 
[  628.668402] hid-generic 0003:1FC9:012F.0008: hiddev96,hidraw0: USB HID v1.10 Device [NXP       SemiConductor Inc  SE Blank 8QXP ] on usb-musb-hdrc.1-1/input0
[  628.684369] PM: Cannot get wkup_m3_ipc handle

This can go on for a while, once it does finally connect it seems to be ok, i can unplug and plug it back in and it finds it straight away.

I don’t think it is an issue with the device/cable as i don’t have any issues connecting on other linux or windows systems.

I am using the most recent default buildroot configuration for beaglebone (kernel 6.1.46-ti-r13).
I have also tried with the released “am335x-eMMC-flasher-debian-12.2-minimal-armhf-2023-10-07-2gb”. I get the same issue however it seems to be more reliable and will connect after a few retries.

I’m not sure how to tackle this problem, from what i have read the “error -110” is a timeout error. Some people have suggested power rail issues. I tried putting some extra capacitance on the USB Power line but this did not make a difference.

some more info about the device,
from lsusb -v (on Ubuntu system)

Bus 003 Device 124: ID 1fc9:012f NXP Semiconductors SE Blank 8QXP 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x1fc9 NXP Semiconductors
  idProduct          0x012f 
  bcdDevice            0.04
  iManufacturer           1 NXP       SemiConductor Inc 
  iProduct                2 SE Blank 8QXP 
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0022
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          4 1F14080E828E5263
    bmAttributes         0xc0
      Self Powered
    MaxPower               10mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      76
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1

Might be a power problem. How are you powering the BBB and how much current does the iMX8 device need ?

If you have a powered hub, try using that see if it helps.

I am powering the BBB via the 5V DC jack with a 2A supply.

If you have a powered hub, try using that see if it helps.

Great Idea. I don’t have a powered hub on me. but i tried with a regular hub and I no longer get the issue. I don’t know enough about USB protocols to make sense of why this worked.

I Revisited this recently as I was still having some issues with USB Hubs.

I fount that adding the usb port quirk “USB_PORT_QUIRK_FAST_ENUM” mostly resolved the problem.
I still get the occasional disconnect, however it reconnects straight away and no longer gets stuck in the loop initially described.

The quirk can be enabled in user space by,

echo 0x2 > /sys/bus/usb/devices/1-0:1.0/usb1-port1/quirks