Linux usb设备固定端口号
- 一:/sys/bus/usb/devices/
- 二:设备信息
- 三:固定usb设备名方法
一:/sys/bus/usb/devices/
-
信息显示如下
-
1-0:1.0
- 1:表示 1 号总线,或者说 1 号 Root Hub
- 0:表示端口号
- 1:表示配置号
- 0:表示接口号
- 命名规则:Root Hub-port:configuration.interface
-
1-1.1:1.0 or 1-1.2:1.0
- 1:表示1号总线,或者说1号 Root Hub
- 1:
表示 Hub 连在 Root Hub 上的端口号
- 1:
表示设备连在 Hub 上的端口号
- 1:表示配置号
- 0:表示接口号
二:设备信息
- 设备种类
cat /sys/bus/usb/devices/1-1/bDeviceClass
09:表示为一个usb hub
#define USB_CLASS_PER_INTERFACE 0 /* for DeviceClass */
#define USB_CLASS_AUDIO 1
#define USB_CLASS_COMM 2
#define USB_CLASS_HID 3
#define USB_CLASS_PHYSICAL 5
#define USB_CLASS_STILL_IMAGE 6
#define USB_CLASS_PRINTER 7
#define USB_CLASS_MASS_STORAGE 8
#define USB_CLASS_HUB 9
#define USB_CLASS_CDC_DATA 0x0a
#define USB_CLASS_CSCID 0x0b /* chip+ smart card */
#define USB_CLASS_CONTENT_SEC 0x0d /* content security */
#define USB_CLASS_VIDEO 0x0e
#define USB_CLASS_WIRELESS_CONTROLLER 0xe0
#define USB_CLASS_MISC 0xef
#define USB_CLASS_APP_SPEC 0xfe
#define USB_CLASS_VENDOR_SPEC 0xff
-
version usb协议版本
usb2.0 hub -
busnum & devnum
-
dev 主设备号:次设备号
-
bMaxPower 设备最大电流
-
idVendor(厂商 ID) & idProduct(产品 ID)
-
product 产品名称
-
bcdDevice 固件版本
-
speed 速率
-
uevent
sysfs usb 设备的 uevent 是一个事件通知机制,表示当该 usb 设备在系统上被插入或拔出时,内核会发送一个事件通知给用户空间的系统进程,告知设备的状态变化。这个事件通知会包含一些关于设备的属性信息,例如设的厂商ID、产品ID、序列号等等,方便用户空间的应用程序进行设备管理和配置
-
bmAttributes
大小为一字节,不同的位,表示不同的特性。- bit7 是保留的,必须为1。
- bit6 表示供电方式:1 设备自供电;0 设备是总线供电的。
- bit5 表示是否支持远程唤醒:1 支持远程唤醒;0 不支持远程唤醒。
- bit0~4 是保留的,默认为0。
-
drivers_autoprobe
drivers_autoprobe 是一个 sysfs 属性,用于在新插入 USB 设备时触发自动探测 USB 驱动程序。当将此属性设置为 1 时,内核将尝试自动加载适当的驱动程序,以便为任何新连接的 USB 设备进行配置。这可以节省手动 USB 设备所需的时间和精力。
三:固定usb设备名方法
根据连接在usb hub上的端口号区分。usb hub端口号是固定的。
- 查找需要固定的usb设备
#输入命令:ls /sys/class/tty/ttyUSB* -l,输出结果如下
lrwxrwxrwx root root 2017-08-01 13:40 ttyUSB0 -> …/…/devices/ff540000.usb/usb3/3-1/3-1.1/3-1.1:1.0/ttyUSB0/tty/ttyUSB0
lrwxrwxrwx root root 2017-08-01 13:43 ttyUSB1 -> …/…/devices/ff540000.usb/usb3/3-1/3-1.2/3-1.2:1.0/ttyUSB1/tty/ttyUSB1
- 添加规则
终端输入:sudo vi /etc/udev/rules.d/10-local.rules,添加下面的内容(这句话是个模板,每固定一个设备把这句话复制一次,把开头的#号去掉,把KERNELS和SYMLINK改成自己想要的就可以了)。
#ACTION==“add”,KERNELS==“1-2:1.0”,SUBSYSTEMS==“usb”,MODE:=“0777”,SYMLINK+=“name”
ACTION==“add”,KERNELS==“3-1.1:1.0”,SUBSYSTEMS==“usb”,MODE:=“0777”,SYMLINK+=“my_serial0”
ACTION==“add”,KERNELS==“3-1.2:1.0”,SUBSYSTEMS==“usb”,MODE:=“0777”,SYMLINK+=“my_serial1”
KERNELS==“3-1.1:1.0”固定设备信息参考(第一章:第1小节)
SYMLINK+=“my_serial0” 固定名称