Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

USB Port Speed Linux [closed]

How to programatically determine the usb port speed in embedded devices running the Linux kernel?

like image 217
bluegenetic Avatar asked Dec 24 '09 09:12

bluegenetic


2 Answers

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.

like image 76
caf Avatar answered Nov 14 '22 01:11

caf


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.

like image 43
Andrew Roca Avatar answered Nov 14 '22 03:11

Andrew Roca