USB hub 多usb接口重映射:udev 规则
来源:互联网 发布:telnet 端口打开 编辑:程序博客网 时间:2024/05/18 01:39
很麻法,或者每次得先插入一个再插另外一个。才能保证ttyUSB0 ttyUSB1. 但是如果你重启系统,说不定还是有问题出现。。
==》 不如将端口重映射到新的固定的名字,并且设置其权限为可读。 这样不管你的先后插入,符合对应id的硬件端口自动的映射到新定义的名字。
一. 单一的USB映射说明
参见:http://blog.csdn.net/zyh821351004/article/details/41577105
lsusb 命令查看所有usb端口信息。
- yhzhao@yhzhao:~$ lsusb
- Bus 002 Device 002: ID 0bda:0411 Realtek Semiconductor Corp.
- Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
- Bus 001 Device 004: ID 04f2:b48c Chicony Electronics Co., Ltd
- Bus 001 Device 009: ID 046d:c31c Logitech, Inc. Keyboard K120
- Bus 001 Device 010: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light
- Bus 001 Device 005: ID 0bda:5411 Realtek Semiconductor Corp.
- Bus 001 Device 008: ID 24ae:1100
- Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
简单说明:
$kernel, %k:设备的内核设备名称,例如:sda、cdrom。
ID 10c4:ea60 表示usb设备的ID(这个ID由芯片制造商设置,可以唯一表示该设备)
10c4 usb_device_descriptor.idVendor
ea60 usb_device_descriptor.idProduct
依据这些信息,就可以简单的写udev规则了:rplidar.rules
sudo gedit /etc/udev/rules.d/rplidar.rules
- # set the udev rule , make the device_port be fixed by rplidar
- #
- KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0777", SYMLINK+="rplidar"
创建生效后重新插拔USB。
用下面的命令就可以查看对应的映射结果了。
- yhzhao@yhzhao:~$ ls -l /dev |grep ttyUSB
- lrwxrwxrwx 1 root root 7 Apr 14 13:18 rplidar -> ttyUSB0
- crwxrwxrwx 1 root uucp 188, 0 Apr 14 13:18 ttyUSB0
- yhzhao@yhzhao:~$
二. USB hub的多端口映射:
同一个hub连接设备base和laser, 将其重映射换名称到 slamtec_base_ 和 slamtec_laser_
- yhzhao@yhzhao:~$ lsusb
- Bus 002 Device 002: ID 0bda:0411 Realtek Semiconductor Corp.
- Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
- Bus 001 Device 004: ID 04f2:b48c Chicony Electronics Co., Ltd
- Bus 001 Device 009: ID 046d:c31c Logitech, Inc. Keyboard K120
- Bus 001 Device 011: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light
- Bus 001 Device 012: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light
- Bus 001 Device 005: ID 0bda:5411 Realtek Semiconductor Corp.
- Bus 001 Device 008: ID 24ae:1100
- Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
现提供固定hub的每个端口的映射。
udevadm info --attribute-walk --path=/sys/bus/usb-serial/devices/ttyUSB0
说明参见: http://askubuntu.com/questions/49910/how-to-distinguish-between-identical-usb-to-serial-adapters
可以找到hub端口的不同:
- yhzhao@yhzhao:~$ udevadm info --attribute-walk --path=/sys/bus/usb-serial/devices/ttyUSB1
- Udevadm info starts with the device specified by the devpath and then
- walks up the chain of parent devices. It prints for every device
- found, all possible attributes in the udev rules key format.
- A rule to match, can be composed by the attributes of the device
- and the attributes from one single parent device.
- looking at device '/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.2/1-2.2:1.0/ttyUSB1':
- KERNEL=="ttyUSB1"
- SUBSYSTEM=="usb-serial"
- DRIVER=="cp210x"
- ATTR{port_number}=="0"
- looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.2/1-2.2:1.0':
- KERNELS=="1-2.2:1.0"
- SUBSYSTEMS=="usb"
- DRIVERS=="cp210x"
- ATTRS{bInterfaceClass}=="ff"
- yhzhao@yhzhao:~$ udevadm info --attribute-walk --path=/sys/bus/usb-serial/devices/ttyUSB0
- Udevadm info starts with the device specified by the devpath and then
- walks up the chain of parent devices. It prints for every device
- found, all possible attributes in the udev rules key format.
- A rule to match, can be composed by the attributes of the device
- and the attributes from one single parent device.
- looking at device '/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.1/1-2.1:1.0/ttyUSB0':
- KERNEL=="ttyUSB0"
- SUBSYSTEM=="usb-serial"
- DRIVER=="cp210x"
- ATTR{port_number}=="0"
- looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.1/1-2.1:1.0':
- KERNELS=="1-2.1:1.0"
- SUBSYSTEMS=="usb"
- DRIVERS=="cp210x"
- ATTRS{bInterfaceClass}=="ff"
#参考 http://askubuntu.com/questions/49910/how-to-distinguish-between-identical-usb-to-serial-adapters
#lsusb#udevadm info --attribute-walk --path=/sys/bus/usb-serial/devices/ttyUSB0
- SUBSYSTEMS=="usb"
- DRIVERS=="cp210x"
- ATTRS{bInterfaceClass}=="ff"
- ATTRS{bInterfaceSubClass}=="00"
- ATTRS{bInterfaceProtocol}=="00"
- ATTRS{bNumEndpoints}=="02"
- ATTRS{supports_autosuspend}=="1"
- ATTRS{bAlternateSetting}==" 0"
- ATTRS{bInterfaceNumber}=="00"
- ATTRS{interface}=="CP2102 USB to UART Bridge Controller"
- KERNEL=="ttyUSB*", KERNELS=="1-2.1", MODE:="0777",SYMLINK+="slamtec_base_"
- KERNEL=="ttyUSB*", KERNELS=="1-2.2", MODE:="0777",SYMLINK+="slamtec_laser_"
重新拔插。可以看到:
ls -l /dev
- yhzhao@yhzhao:~$ ls -l /dev|grep ttyUSB
- lrwxrwxrwx 1 root root 7 Apr 14 13:45 rplidar -> ttyUSB1
- lrwxrwxrwx 1 root root 7 Apr 14 13:45 slamtec_base_ -> ttyUSB0
- lrwxrwxrwx 1 root root 7 Apr 14 13:45 slamtec_laser_ -> ttyUSB1
- crwxrwxrwx 1 root uucp 188, 0 Apr 14 13:45 ttyUSB0
- crwxrwxrwx 1 root dialout 188, 1 Apr 14 13:45 ttyUSB1
参考:http://blog.csdn.net/zyh821351004/article/details/41577105
- USB hub 多usb接口重映射:udev 规则
- USB hub 多usb接口重映射:udev 规则
- USB hub 多usb接口重映射:udev 规则
- USB hub 多usb接口重映射:udev 规则
- usb hub
- USB HUB
- usb hub
- linux外设权限:hokuyo权限设置(udev文件) ubuntu USB外设重映射思路
- USB hub的苦恼
- USB Hub Kernel Debug
- Usb Hub代码分析
- usb hub 分析(转)
- USB hub 分析
- USB hub驱动分析
- USB HUB 之热插拔
- USB hub 分线器设计
- usb hub模块调试
- HUB怎么选?USB HUB常见问题解答。
- 8 流程控制(switch循环)for、while、do...while
- MFC下获得位图句柄的方法
- (四)MyBatis源码解析之SqlSession
- 1015. 德才论 (25)
- js中继承的几种用法总结(apply,call,prototype)
- USB hub 多usb接口重映射:udev 规则
- [从头学数学] 第232节 定积分
- mt6628/mt6627手动设置FM参数的方法
- SDUT 2170 The Largest SCC(强连通+边的变换)
- 超简单的python生成二维码图片
- Java数据库连接池详解
- 如何将程序的执行文件和静态加载动态库放在不同的目录
- 从摄像头中读取图像 OpenCV
- ES6学习笔记(二)--解构赋值