How to 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 or 480. The first two indicate USB1 (low speed or full speed) and the third USB2.
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.