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="aero"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403",ATTRS{idProduct}=="6010", MODE="664", OWNER="aero"
# Olimex ARM-USB-TINY-H
UBSYSTEM=="usb", ATTR{idVendor}=="15ba",ATTR{idProduct}=="002a", MODE="664", OWNER="aero"
SUBSYSTEM=="tty", ATTRS{idVendor}=="15ba",ATTRS{idProduct}=="002a", MODE="664", OWNER="aero"
# Silicon Labs CP210x UART Bridge
SUBSYSTEM=="usb", ATTR{idVendor}=="10c4",ATTR{idProduct}=="ea60", MODE="664", OWNER="aero"
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4",ATTRS{idProduct}=="ea60", MODE="664", OWNER="aero"
# FPGA Debugger
SUBSYSTEM=="usb", ATTR{idVendor}=="0403",ATTR{idProduct}=="6014", MODE="664", OWNER="aero"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403",ATTRS{idProduct}=="6014", MODE="664", OWNER="aero"
# PL2303 UART Bridge
SUBSYSTEM=="tty", ATTRS{idVendor}=="067b",ATTRS{idProduct}=="2303", MODE="664", OWNER="aero"
# HL-340 UART Bridge
SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86",ATTRS{idProduct}=="7523", MODE="664", OWNER="aero"
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
就是對設備的描述,可方便使用者用以判斷設備身份