ubuntu中繫結USB串列埠的方法,包括同一型號的USB串列埠
阿新 • • 發佈:2019-01-09
udev是通過核心產生裝置名增加別名的方式來達到 不管裝置連線的順序而維持一個統一的裝置名。核心通常會產生自定義的裝置名,如sda1、sdb1等,但是udev可以通過裝置的其他資訊如匯流排 ,生產商等不同來區分不同的硬體裝置。在/etc的 目錄下。
例如 :ubuntu核心中,產生sda 裝置名,可以通過制定 udev規則,讓udev 除了產生/dev/sda/ 裝置檔案外, 另外建立 一個符號連結叫 /dev/name,這樣在ros串列埠處理的程式中,就可以使用產生的新的裝置名。
通過lsusb命令可以檢視到所有外接usb的介面裝置的描述列表,可以得到id product和id VENDOR的數值,來進行後續的繫結。ls /dev 可以檢視所有 外接串列埠裝置的名字列表。
所有制定的udev 規則最終 會在 /etc/ udev /rules.d 這個資料夾下面 。
通過晶片的特定碼,來產生軟連結別名
【方式一:通過檔案建立連結規則】
1.建立檔案
命令:sudo gedit /etc/udev/rules.d/ttyUSBLink.rules
2.根據查詢的資訊編寫連結規則
上面的ATTRS{devpath} 為USB埠的固定物理編號, MODE:= 為修改許可權,且生效之後不能被改變。
如果不繫結物理埠的話直接刪掉那個即可,如果不是每次都要求插固定的埠,肯定得刪掉。
使rules生效:
建立之後儲存,重新插拔USB裝置即可生效,無論按照什麼進行插拔,都能準確地識別出裝置的埠號啦!
【方式二:通過指令碼建立連結規則】
可以一個指令碼如下:
echo 'KERNELS=="ttyUSB0", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0666", GROUP:="dialout", SYMLINK+="device_0"' >/etc/udev/rules.d/ttyUSBLink.rules
繫結 10c4:ea60的串列埠裝置,會在/etc/udev/rule.d 下 產生相應的規則檔案,ttyUSB0產生新的別名即為device_0。