How to programatically determine the usb port speed in embedded devices running the Linux kernel?
You can read /sys/bus/usb/devices/usb?/speed
- it'll give you the bus speed of the root hub(s) in Mbps: either 1.5, 12, 480, 5000 or 10000. The first two indicate USB1 (low speed or full speed), the third USB2 and the fourth and fifth USB3.
This rather depends on were the code that needs the information is running. If you want to modify a kernel USB device drivers behavior based on connection speed then the usb_device struct that passed to the driver by the USB subsystem contains a speed enumeration. If you want an application in user space to detect the devices connection speed then try walking the /sys/bus/usb tree you should be able to identify your USB device by checking the idProduct and idVendor entries. Once you have a match then the speed entry will give you what you need. If you have multiple devices connected then you might need to figure a way to match USB id to specific device. Generally USB to device mappings vary on any hot plug support present whether the device supplies a serial number and the sub system that abstracts the functionality provided by the USB device.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With