Nic*_*ell 5 udev putty serial-port
我有多个 USB 转串口转换器。我需要特别访问其中之一。我正在使用 udev 规则为其指定一个特殊名称。自从我上次修改它以来,我已经重新启动。
SUBSYSTEM=="usb", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", NAME="serial", MODE="0666"
Run Code Online (Sandbox Code Playgroud)
该供应商/产品组合在我所有的 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
Run Code Online (Sandbox Code Playgroud)
我正在使用 PuTTY 来读取它们,它适用于/dev/ttyUSB0,但不适用于/dev/serial. 当我以 root 身份运行 PuTTY 时,错误仍然出现。

Unable to open connection to :
Unable to configure serial port
Run Code Online (Sandbox Code Playgroud)
万一重要,我正在运行 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
Run Code Online (Sandbox Code Playgroud)
以下 udev 规则最终奏效:
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="COM1", MODE="0666"
Run Code Online (Sandbox Code Playgroud)
请注意,SUBSYSTEM是 tty,而不是 usb,NAME已更改为SYMLINK+,并且串行已更改为 COM1(正如评论者指出的那样,不干扰 /dev/serial。)
感谢您的帮助,伙计们!
您希望您的规则关注tty子系统,而不是子系统usb。
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="serial"
Run Code Online (Sandbox Code Playgroud)
当您插入 USB 设备时,它会生成多个 udev 事件,因为内核会识别出更多关于它的信息。由于它是一个 USB 设备,它首先使用usb子系统,我认为这将创建一个 PuTTY 无法使用的原始 USB 设备。几步后,它将加载设备的特定驱动程序,并且由于这是一个串行设备,它将使用tty子系统,从而创建一个 PuTTY可以使用的设备文件。
此规则将创建一个符号链接,指向/dev/ttyUSB*恰好分配给您设备的任何一个。在我自己的串行加密狗上使用 PuTTY 成功测试。
顺便说一句,对于诊断,我有时会运行以下规则,以了解 udev 脚本所看到的内容:
RUN+="/home/me/bin/udev-diag .$kernel .$number .$devpath .$id .$parent .$root .$tempnode"
Run Code Online (Sandbox Code Playgroud)
其中udev-diag基本上是:
env >>/tmp/udev-events
echo "$@" >>/tmp/udev-events
Run Code Online (Sandbox Code Playgroud)
对于更一般的用途,该udevmonitor程序也很方便。
| 归档时间: |
|
| 查看次数: |
48157 次 |
| 最近记录: |