1. 程式人生 > 其它 >ubuntu 下 串列埠、USB裝置繫結固定名稱

ubuntu 下 串列埠、USB裝置繫結固定名稱

技術標籤:linuxjava大資料ubuntu作業系統

目錄[-]


1、為什麼串列埠裝置、USB裝置有繫結固定名稱的需求

• /dev 目錄下原有掛在靜態裝置太多

在/dev目錄下存在的靜態裝置關聯檔案過於多,並且在系統啟動時無法得知哪些裝置是真實存在的。

•Linux下裝置檔案與實際硬體裝置的對映關係不是確定的

比如系統中有兩個USB轉串列埠裝置,每次開機啟動時,由於載入順序存在一定的不確定性,此時則系統中存在的裝置檔案 /dev/ttyUSB0 與 /dev/ttyUSB1 對應的硬體裝置可能是不同的。


2、udev的使用

udev是Linux2.6核心之後預設的裝置管理工具,其目標就是解決上面的兩個問題,並且以守護程序的形式執行。udev和檔案系統是獨立的,可以讓使用者定製自己的系統,比如建立裝置連線符,修改裝置名稱,更改裝置屬組,許可權等。udev的配置檔案處於 /etc/udev/udev.conf

目錄下,按照配置檔案在 /etc/udev/rules.d 目錄下新增對應的rule檔案即可。


3、設定 usb轉串列埠裝置的例子

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

• KERNEL 核心裝置的名稱,例如 ttyUSB* ,sda,等,是處於/dev 目錄下的裝置名稱

每臺裝置都有一個idVendor:廠家標示 和idProduct:產品標示。其中廠家標示是供應商ID,是唯一的,產品標示則是廠家自定義的ID。

通過 lsusb 可以檢視USB的裝置資訊。

• MODE

賦予裝置許可權。採用 0777 讀寫許可權即可。

•SYMLINK

SYMLINK為 /dev/下的裝置檔案產生符號連結。因為 udev 只能為某個裝置產生一個裝置檔案,所以為了不覆蓋系統預設的 udev 規則產生的裝置檔案,推薦使用符號連結。


4、cannot open /dev/ttyUSB0 或cannot open /dev/ttyS0

原因是因為 tty 屬於 dialout 組別,可以先檢視下當前使用者所屬的組別。比圖使用者名稱是ubuntu,則可以按下以下指令檢視:

groups ubuntu

如果當前使用者沒有隸屬於dialout,則將該使用者加進去dialout組別。

sudo gpasswd --add ubuntu dialout