USB Device not showing up as tty (xhci-hcd)

Hello,

I have a USB device that is not showing up as a tty device. Typically when a USB is connected it is mounted as ttyUSB*. When this device is connected the kernal message bugger output is:

[84904.951061] usb 1-1.2: new high-speed USB device number 10 using xhci-hcd

How do you deal with devices that use xhci-hcd?

USB Device: https://digilent.com/shop/mcc-usb-1608g-series-high-speed-multifunction-usb-daq-devices/

Module: Verdin IMX8M Plus
Carrier: Verdin Dev Board V1.1E

Why do you assume that the specified device should appear as a USB to serial interface (e.g., ttyUSB)? The documentation from the provided link doesn’t mention this. It instead highlights the need to install custom software to communicate with the device. For Linux, the manufacturer advises installing the Universal Library API from GitHub (GitHub - mccdaq/uldaq: MCC Universal Library for Linux). This needs to be integrated into your Linux system. One more Linux related link from the device manufacturer - Universal Library for Linux® - Digilent Reference

Some useful links about Linux USB subsystem:

https://www.kernel.org/doc/html/v4.15/driver-api/usb/index.html

http://www.linux-usb.org/USB-guide/book1.html

Hi Alex,

Took me a while to hop back on this. Thanks for all the information.

I have installed uldaq and it’s associated dependencies in the dockerfile. These appears to allow for a basic connection to the device where I can request information from it. However I still can’t establish a connection with the device.

When trying to connect, I am met with an “insufficient permissions to access this device” error. This leads me to believe that I still need to expose either a “device” or “volume” to access the USB device.

Let me know what you think.

Cheers

When trying to connect, I am met with an “insufficient permissions to access this device” error. This leads me to believe that I still need to expose either a “device” or “volume” to access the USB device.

Have you already tried this? A quick and easy check to see if this is the case is to bind-mount all of /dev and then run the container with --privileged. This would give you a container with full access. If this works then it was a permission issue. In which case you can scale back the permissions to only give access to what you need.

Best Regards,
Jeremias