日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Ubuntu >内容正文

Ubuntu

Ubuntu USB设备端口号绑定

發布時間:2023/12/8 Ubuntu 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ubuntu USB设备端口号绑定 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Ubuntu USB設備端口號綁定

  • 1. 需求和來源
  • 2. 查看端口信息
  • 3. 規則配置
  • 4. 單端口情況
  • 5. 多端口情況
  • 6. 相同ID情況


1. 需求和來源

ROS機器人開發過程中,需要通過USB口連接多個設備,如:下層執行器,雷達等
而Linux是按照插入順序對設備進行編號的,例如ttyUSB0, ttyUSB1或者 ttyACM0, ttyACM1等等
這樣的話,每次重新開機的時候容易出現設備不對應編號的情況
這就無法在代碼中固定設備的端口號
因此需要將設備的端口號固定


2. 查看端口信息

接下來以兩塊正點原子阿波羅開發板和一個RPLIDAR-A1激光雷達在 Ubuntu 16.04 環境下為例:

先不接設備,查看端口信息:

$ lsusb


然后接上一塊正點原子阿波羅開發板,再查看端口信息:

$ lsusb


可以查看到新增加的正點原子阿波羅開發板設備端口

ID 1a86:7523 表示USB設備的ID
這個ID由芯片制造商設置,可以唯一表示該設備

  • 1a86 usb_device_descriptor.idVendor
  • 7523 usb_device_descriptor.idProduct

3. 規則配置

在/etc/udev/rules.d/下創建任意名稱的規則配置文件,如:usb.rules并進行編輯

$ cd /etc/udev/rules.d/ $ sudo touch usb.rules $ sudo nano usb.rules


編輯內容如下:

KERNEL=="ttyUSB*",ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777", SYMLINK+="alientek_apollo"

內容中匹配sys中內核名為ttyUSB*的設備
依據生產商編號idVendor和產品號idProduct匹配屬性
設定讀寫權限為0777
符號鏈接名為alientek_apollo

重新配置生效規則:

$ sudo /etc/init.d/udev restart

4. 單端口情況

現在,拔插設備,再查看映射結果:

$ ls -l /dev |grep ttyUSB


現在訪問/dev/alientek_apollo就是訪問該設備了

利用Python進行簡單的測試:


5. 多端口情況

現在先拔出正點原子阿波羅開發板,插入RPLIDAR-A1激光雷達,查看端口信息:

$ lsusb


可以查看到新增加的RPLIDAR-A1激光雷達設備端口 ID 10c4:ea60
再查看端口:

$ ls /dev/ttyUSB*


現在的ttyUSB0為RPLIDAR-A1激光雷達設備端口,而不是剛剛拔出的正點原子阿波羅開發板
如果在相關的端口配置代碼中以ttyUSB0為端口名稱,那這樣搞混設備就炸裂了

那么對規則/etc/udev/rules.d/usb.rules 再次配置,增加以下內容:

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

重新配置生效規則:

$ sudo /etc/init.d/udev restart

現在,拔插設備,再查看映射結果:

$ ls -l /dev |grep ttyUSB


現在訪問/dev/rplidar就是訪問RPLIDAR-A1激光雷達設備了

利用Python進行簡單的測試:

接下來,利用Python同時配置這兩個端口:

可以看到,正點原子阿波羅開發板的設備端口應為連接而配置錯誤
那么現在插上剛剛的正點原子阿波羅開發板
再配置這兩個端口:

這樣的配置就避免了設備不對應編號的情況,且在代碼中以ser0,ser1區分兩個設備


6. 相同ID情況

但需要注意的是:
現在的規則,只適用于某個設備插上之后,其ID是唯一的,與其他設備不同

那么在相同ID情況下,如兩塊正點原子阿波羅開發板

這樣的情況,以上的規則也無法避免設備不對應編號的情況

莫慌,查詢端口號:

ls -l /sys/class/tty


注意到tyyUSB的前一位不相同,3-2:1.0 與 3-3.1:1.0
那么對規則/etc/udev/rules.d/usb.rules 再次配置:

KERNEL=="ttyUSB*", KERNELS=="3-2", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777", SYMLINK+="alientek_apollo_0" KERNEL=="ttyUSB*", KERNELS=="3-3.1", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777", SYMLINK+="alientek_apollo_1" KERNEL=="ttyUSB*",ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0777", SYMLINK+="rplidar"

重新配置生效規則:

$ sudo /etc/init.d/udev restart

現在,拔插設備,再查看映射結果:

$ ls -l /dev |grep ttyUSB


謝謝!

總結

以上是生活随笔為你收集整理的Ubuntu USB设备端口号绑定的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。