1. 程式人生 > 實用技巧 >linux 下 USB裝置訪問許可權問題

linux 下 USB裝置訪問許可權問題

linux 下 USB裝置訪問許可權問題

本文適用於解決 linux 下,對串列埠、 FPGA 下載器、JLink 等偵錯程式等等的訪問許可權問題
建立 /etc/udev/rules.d/70-ttyusb.rules,然後加入 KERNEL=="ttyUSB[0-9]*", MODE="0666" 然後另起一行加入 KERNEL=="ttyACM[0-9]*", MODE="0666" (適用於 zedboard 的 ps 串列埠)

上面的方法不好使,會使 FPGA 下載器能識別到但無法正常執行

可以新建一個 /etc/udev/rules.d/70-my.rules

, 其內容如下:

# These are for the HiFive1 Board
SUBSYSTEM=="usb", ATTR{idVendor}=="0403",ATTR{idProduct}=="6010", MODE="664", OWNER="rv"
SUBSYSTEM=="tty", ATTR{idVendor}=="0403",ATTR{idProduct}=="6010", MODE="664", OWNER="rv"

# Olimex ARM-USB-TINY-H
UBSYSTEM=="usb", ATTR{idVendor}=="15ba",ATTR{idProduct}=="002a", MODE="664", OWNER="rv"
SUBSYSTEM=="tty", ATTRS{idVendor}=="15ba",ATTRS{idProduct}=="002a", MODE="664", OWNER="rv"

# FPGA Debugger
SUBSYSTEM=="usb", ATTR{idVendor}=="0403",ATTR{idProduct}=="6014", MODE="664", OWNER="rv"
SUBSYSTEM=="tty", ATTR{idVendor}=="0403",ATTR{idProduct}=="6014", MODE="664", OWNER="rv"

# Silicon Labs CP210x UART Bridge 
SUBSYSTEM=="tty", ATTR{idVendor}=="10c4",ATTR{idProduct}=="ea60", MODE="664", OWNER="rv"

# PL2303 UART Bridge
SUBSYSTEM=="tty", ATTR{idVendor}=="067b",ATTR{idProduct}=="2303", MODE="664", OWNER="rv"

OWNER="rv" 這個 rv 就是當前的使用者名稱,改成自己的 linux 使用者名稱即可 (linux 使用者名稱可用 whoami 命令來查詢)
以 CP210X 項為例,其 ATTR{idVendor}=="10c4" 即為指定USB裝置的 vid (vendor id) ,其 ATTR{idProduct}=="ea60" 即為指定USB裝置的 pid (product id) 。這個屬性可以通過 lsusb 命令獲取:

rv@rv:~$ lsusb
Bus 002 Device 002: ID 0bda:0411 Realtek Semiconductor Corp. 4-Port USB 3.0 Hub
Bus 002 Device 003: ID 05e3:0612 Genesys Logic, Inc. Hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 0bda:5411 Realtek Semiconductor Corp. 4-Port USB 2.0 Hub
Bus 001 Device 008: ID 24ae:1813  
Bus 001 Device 007: ID 046d:c31c Logitech, Inc. Keyboard K120
Bus 001 Device 006: ID 14cd:8601 Super Top 4-Port hub
Bus 001 Device 011: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
Bus 001 Device 013: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 001 Device 003: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

其中

Bus 001 Device 011: ID 10c4:ea60 Silicon Labs CP210x UART Bridge

10c4:ea60 即為 vid-pid 對,Silicon Labs CP210x UART Bridge 就是對裝置的描述,可方便使用者用以判斷裝置身份