硬件开发时有时候需要配置USB串口,一般配置方式有以下两种:
输入指令:
lsusb
例如图片中的最上面0951:1666就是对应Kingston Technology DataTraveler 100 G3/G4/SE9 G2设备的ID号,这是我自己的U盘
对于这种情况,如果我们需要锁定USB端口的话,可以通过以下指令:
sudo gedit /etc/udev/rules.d/xxx.rules
这里相当于在/etc/udev/rules.d路径下新建了一个名为xxx.rules的文件,xxx.rules名称可以根据自己的需要修改
然后在该文件中输入:
KERNEL=="ttyUSB*" ,ATTRS{idVendor}=="0951" ,ATTRS{idProduct}=="1666" ,MODE:="0777" ,SYMLINK+="xxx"
注意这里的ATTRS{idVendor}与ATTRS{idProduct}中的"0951"与"1666"需要根据实际ID修改,不可照抄,最后的SYMLINK中的xxx名称根据自己的需要设置
在终端输入:
sudo udevadm trigger
使其生效,同时插拔设备重新连接。最后使用:
ls -l /dev/***
查看是否成功连接。其中***即为第二步中SYMLINK中所填内容
对于某些情况下,同一台设备连接了两个相同设备的时候,它们的ID很可能会出现重复:
例如这里连接了两个RealSense™ Depth Camera 435的时候,可以看到它们的ID是一样的,这时候如果用第一种方式去固定ID就不合适了。此时我们可以通过以下方式去固定ID:
首先将需要固定ID的设备断开连接,通过:
ls /dev | grep USB
查看一次端口号
然后将设备连接上,运行同样的命令再查看一次。得到结果如下:
例如这里我需要固定的设备连接的端口是USB6
然后我们通过下列命令确定其KERNELS:
udevadm info -a -n /dev/ttyUSB6 | grep KERNELS
这里会有很多个结果,使用的是3-7.3:1.0这个.
同样的新建一个规则文件:
sudo gedit /etc/udev/rules.d/xxx.rules
在其中输入:
ACTION=="add" ,KERNELS=="3-7.3:1.0" ,SUBSYSTEMS=="usb" ,MODE:="0777" ,SYMLINK+="xxx"
然后通过下述命令使其生效:
service udev reload
service udev restart
然后重新运行:
ls -l /dev/***
查看设备状态,如果配置成功则应该会有如下显示:
另外如果规则文件生效成功的话在/dev路径下会有个对应文件,如果查看设备状态找不到设备的话看看该路径下文件是否存在,不存在说明规则文件没有配置成功。(有时候配置完不会立即生效,可以重启一下)