樹莓派USB埠繫結

2021-08-28 07:05:42 字數 1366 閱讀 2073

本文參考引用部落格

在做樹莓派相關的工程時,由於linux是按照插入順序對裝置進行編號,常遇到插拔不同usb裝置(如串列埠、攝像頭、感測器等外設)樹莓派識別埠號跳躍的問題,例如原本識別為/dev/video0,重插後識別為/dev/video2這種尷尬的問題。這使得在程式中固定埠號讀取十分不方便。幸運的是,我們可以通過使用usb裝置的唯一識別碼固定埠號。下面分別對串列埠裝置和usb攝像頭裝置的繫結方法做簡介(假設插拔裝置後其id唯一):

lsusb
結果如下

bus 001 device 001: id 0909:0824 audio-technica corp

bus 001 device 002: id 1a40:0101 qinheng electronics hl-340 usb-serial adapter

bus 001 device 003: id 0924:1b25 cubeternet

通過多次插拔觀察裝置增減可以確認出裝置資訊和裝置的對應關係。以上device001/002/003分別是攝像頭0、串列埠藍芽、攝像頭1。接下來我們嘗試使用其32位id號固定其埠。

sudo vim /etc/udev/rules.d/99-com.rules
開啟檔案後在最後一行新增

kernel=="ttyusb*",attrs=="1a40",attrs=="0101", mode:=「0777」, symlink+="device0"

kernel=="video*",attrs=="0909",attrs=="0824", mode:=「0777」, symlink+="video0"

kernel=="video*",attrs=="0924",attrs=="1b25", mode:=「0777」, symlink+="video1"

如果繫結的是串列埠裝置,則kernel項寫「ttyusb*」,如果是攝像頭裝置則寫「video*」,將32位id按順序寫入後兩項中,將預繫結的裝置名稱寫入symlink項中

// 重啟指令

sudo /etc/init.d/udev restart

重啟後,再次檢視當前連線的攝像頭裝置和串列埠裝置,可以看到新名稱,無論之後如何插拔,只要識別到相同的裝置id,linux都會將其命名為剛剛設定的名稱。

ls /dev/device*

device0

ls /dev/video*

/dev/video0 /dev/video1

使用/dev/device0, /dev/video0, /dev/video1即可訪問相應裝置。

樹莓派固定USB埠號的方法

樹莓派的 usb埠接通時被對映為乙個檔案存在 dev 目錄下,通常是 ttyusb0,ttyusb1 等等。實際應用它存在這樣乙個問題,樹莓派並不是指定哪乙個埠就是 ttyusb0,或哪乙個就是 ttyusb1,而是把第乙個接入裝置的 usb口定為 ttyusb0,第二個是 ttyusb1,這在接乙...

樹莓派的gpio埠

樹莓派的gpio埠圖 gpio readall gpio generalpurposei oports 意思為通用輸入 輸出埠,通俗地說,就是一些引腳,可以通過它們輸出高低電平或者通過它們讀入引腳的狀態 是高電平或是低電平。gpio是個比較重要的概念,使用者可以通過gpio口和硬體進行資料互動 如u...

樹莓派如何接硬碟 樹莓派新增USB外接硬碟

1 顯示系統的硬碟裝置以及分割槽 sudo fdisk l 顯示裝置名,例如 dev sda1 2 樹莓派預設不支援ntfs檔案系統,如果需要支援則要安裝相應的軟體包 sudo apt get install ntfs 3g 安裝支援ntfs檔案系統的軟體包 sudo reboot 重新啟動後才有效...