Udev
PuTTY 可以作為 /dev/ttyUSB0 訪問串口,但不能作為命名的 udev 設備訪問
我有多個 USB 轉串口轉換器。我特別需要訪問其中之一。我正在使用 udev 規則給它一個特殊的名稱。自從我上次修改它以來,我已經重新啟動。
SUBSYSTEM=="usb", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", NAME="serial", MODE="0666"
該供應商/產品組合在我所有的 USB 設備中是獨一無二的。
$ ls -l /dev/serial crw-rw-rw-. 1 root root 189, 133 Feb 8 23:57 /dev/serial $ ls -l /dev/ttyUSB0 crw-rw----. 1 root dialout 188, 0 Feb 8 23:58 /dev/ttyUSB0
我正在使用 PuTTY 閱讀它們,它適用於
/dev/ttyUSB0
,但不適用於/dev/serial
. 當我以 root 身份執行 PuTTY 時,錯誤仍然出現。Unable to open connection to : Unable to configure serial port
萬一這很重要,我正在執行 CentOS 6。
uname -a Linux xxxxxx 2.6.32-279.22.1.el6.x86_64 #1 SMP Wed Feb 6 03:10:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
編輯:工作
以下 udev 規則最終奏效:
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="COM1", MODE="0666"
請注意,
SUBSYSTEM
tty,而不是 usb,NAME
已更改為SYMLINK+
,並且串列已更改為 COM1(正如評論者指出的那樣,不干擾 /dev/serial。)謝謝你們的幫助,伙計們!
您希望您的規則關注
tty
子系統,而不是子系統usb
。SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="serial"
當您插入 USB 設備時,它會生成幾個 udev 事件,因為核心會辨識更多關於它的內容。由於它是一個 USB 設備,它首先使用
usb
子系統,我認為它會創建一個原始 USB 設備,而 PuTTY 不能使用它。幾個步驟後,它將載入設備的特定驅動程序,並且由於這是一個串列設備,它將使用子系統,從而創建一個 PuTTY可以使用tty
的設備文件。此規則將創建一個符號連結,指向
/dev/ttyUSB*
恰好分配給您的設備的任何一個。在我自己的串列加密狗上使用 PuTTY 成功測試。順便說一句,對於診斷,我有時會執行以下規則,以了解 udev 腳本所看到的內容:
RUN+="/home/me/bin/udev-diag .$kernel .$number .$devpath .$id .$parent .$root .$tempnode"
udev-diag
本質上是:env >>/tmp/udev-events echo "$@" >>/tmp/udev-events
對於更一般的用途,該
udevmonitor
程序也很方便。