1. 程式人生 > >樹莓派裝置埠號繫結

樹莓派裝置埠號繫結

project做到最近,遇到了一個尷尬的問題:一臺樹莓派接了多個裝置,例如多個arduino、串列埠轉USB和無線鍵鼠等等。物理上USB不夠,直接將一個USB hub就可以了。 
不過這就出現了問題:Linux是按照插入順序對裝置進行編號的,例如ttyUSB0,ttyUSB1或者ttyACM0,ttyACM1等等,那麼每次重新開機的時候容易出現裝置不對應編號的情況,這就無法在程式碼中固定裝置的埠號,因此我們必須想辦法將裝置的埠號固定。筆者總結了網上相關的資料,發現大家寫的還是比較詳細了,因此就簡單地總結一下具體用法,原理就不再贅述了。

1. 將單臺裝置埠號固定
【適用情況】: 
適用於某個裝置插上之後,它的ID是唯一的,與其他裝置不同。

【查詢ID】:

lsusb
1
應該會看到若干USB裝置的資訊:

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
1
2
3
4
以Device010為例:其ID是:10c4:ea60

【修改檔案】:

sudo nano /etc/udev/rules.d/99-com.rules
1
在後面新增:

KERNEL=="ttyUSB*",ATTRS{idVendor}=="10c4",ATTRS{idProduct}=="ea60", MODE:=“0777”, SYMLINK+="device0"
1
其中device0是我們將其重新命名的裝置,之後我們直接訪問device0即可。換句話說,之後開機無論ID為10c4:ea60的裝置被分配為ttyUSB0或者ttyUSB1,始終都可以通過device0來訪問它。

【重啟插拔】: 
檔案最後一行新增之後,執行:

sudo /etc/init.d/udev restart
1
並且插拔USB裝置

【再次訪問】: 
再次訪問:

ls -l /dev |grep ttyUSB
1
就能看到重定向的資訊啦,我們之後在程式碼裡直接訪問/dev/device0即可訪問該裝置。

2. 多臺相同ID的裝置埠號固定
【適用情況】: 
多臺相同裝置,例如多臺arduino,它們被分配為ttyACM0和ttyACM1,通過第一個方法我們發現它們的ID都一樣。

【查詢】:

ls -l /sys/class/tty
1
這時應該會打印出來例如:

ttyACM0'/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.1/1-2.1:1.0/':
ttyACM1'/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.2/1-2.2:1.0':
1
2
我們發現最後的一位1-2.1和1-2.2是有區別的

【修改檔案】:

sudo nano /etc/udev/rules.d/99-com.rules
1
在後面新增:

KERNEL=="ttyACM*",KERNELS=="1-2.1",MODE:=“0777”, SYMLINK+="device1"
KERNEL=="ttyACM*",KERNELS=="1-2.1",MODE:=“0777”, SYMLINK+="device2"
1
2
其中device1和device2是我們將兩個arduino重新命名的裝置,道理同上。

【重啟插拔】: 
檔案最後一行新增之後,執行:

sudo /etc/init.d/udev restart
1
並且插拔USB裝置

【再次訪問】: 
再次訪問:

ls -l /dev |grep ttyACM
1
就能看到重定向的資訊啦,我們之後在程式碼裡直接訪問/dev/device1和/dev/device2即可訪問該裝置。

3. 參考資料
[1]http://blog.csdn.net/qq_33662195/article/details/71185063 
[2]http://blog.csdn.net/zuoxi4621/article/details/75173536
--------------------- 
作者:SYSU_LBY 
來源:CSDN 
原文:https://blog.csdn.net/lby0910/article/details/77586728 
版權宣告:本文為博主原創文章,轉載請附上博文連結!