1. 程式人生 > >Ubuntu下繫結USB埠號

Ubuntu下繫結USB埠號

由於ubuntu USB裝置號為從零開始依次累加,所以多個裝置每次開機後設備號不固定,機器人每次開機都要蛋疼的按順序插,

在網上找到一種方法:udev的規則

udev的規則說明,可以參考部落格說明:http://blog.csdn.net/cokewei/article/details/8281239

將埠重對映到新的固定的名字,並且設定其許可權為可讀。使用對應的id埠對映到固定的名字上。

1

lsusb

檢視對應的usb埠資訊

1

2

3

4

5

6

7

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Bus 001 Device 005: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light

Bus 001 Device 004: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter

Bus 001 Device 003: ID 05e3:0608 Genesys Logic, Inc. Hub

Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. Hub

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

udev的規則

$kernel, %k:裝置的核心裝置名稱,例如:sda、cdrom。

ID  10c4:ea60     表示usb裝置的ID(這個ID由晶片製造商設定,可以唯一表示該裝置)
    10c4    usb_device_descriptor.idVendor
    ea60    usb_device_descriptor.idProduct

依據上面資訊寫udev檔案:我用的是rplidar的鐳射雷達usb串列埠

我的串列埠裝置資訊

1

Bus 001 Device 005: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light

1

sudo vi /etc/udev/rules.d/rplidar.rules

1

KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0777", SYMLINK+="rplidar" 

 建立生效後重新插拔USB

1

ls -l /dev |grep ttyUSB

  顯示

1

2

3

lrwxrwxrwx  1 root   root           7 Nov 29 14:03 rplidar -> ttyUSB1

crw-rw-rw-  1 root   dialout 188,   0 Nov 29 14:03 ttyUSB0

crwxrwxrwx  1 root   dialout 188,   1 Nov 29 14:03 ttyUSB1

多個不同型號裝置可使用這種方法來區分

 開啟裝置時,用(/dev/rplidar)即可。