linux - 如何在 Ubuntu 10.1 下识别多个 USB 串口适配器

标签 linux ubuntu usb usbserial identification

我在 Ubuntu 10.1 下从多个相同的 USB 串行适配器读取数据。

有时,它们的/dev/tty 路径会发生变化(例如,如果在启动时连接了其他 USB 设备)。

我需要一种通过任何此类更改重复引用同一适配器的方法。

根据 udevadm,所有设备都具有相同的序列号。

我认为最有可能的选择是识别适配器通过哪个端口连接(它们不会四处移动)。

我可以找到各种可能有用的有趣/dev 路径,但是尽管网上有很多关于 udev 的讨论,但如果设备插入静态设备,我无法找到关于这些路径中的一些是否是静态的明确声明端口。

最佳答案

有一个解决方案。迟到总比不到好 ;)

使用以下 udev 规则将 /dev/ttyUSB{?} 设备映射到 /dev/usb-ports/%bus_id-%port_id 链接。

这是我的/etc/udev/rules.d/usb-parse-devpath.rules:

ACTION=="add", KERNEL=="ttyUSB[0-9]*", PROGRAM="/etc/udev/rules.d/usb-parse-devpath.pm %p", SYMLINK+="usb-ports/%c"

usb-parse-devpath.pm 脚本:

#!/usr/bin/perl -w

@items = split("/", $ARGV[0]);
for ($i = 0; $i < @items; $i++) {
    if ($items[$i] =~ m/^usb[0-9]+$/) {
        print $items[$i + 1] . "\n";
        last;
    }
}

如您所见,这有助于我们创建指向 /dev/ttyUSB{?} 设备的命名链接,并将它们放在 /dev/usb-ports 中,如下所示格式:bus_id-port_id

例如,下一个命令会给出以下内容:

$ udevadm info --query=path --name=/dev/ttyUSB0
/devices/pci0000:00/0000:00:1d.1/usb3/3-1/3-1:1.0/ttyUSB0/tty/ttyUSB0

所以,bus_id3port_id1 现在我的 >/dev/usb 端口:

$ ls -al /dev/usb-ports
lrwxrwxrwx  1 root root   10 Май 12 00:26 3-1 -> ../ttyUSB0

问候。

关于linux - 如何在 Ubuntu 10.1 下识别多个 USB 串口适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4800099/

相关文章:

linux - 如何从 POS 打印机获取状态

ubuntu - 如何让 Phpmyadmin 与 Nginx 和 Ubuntu 一起工作?

java - 如何在ubuntu中从java程序运行c可执行文件

codeigniter - Nginx & PHP5-fpm + CodeIgniter 或 Kohana = 404 错误?

opencv - 在处理和 OpenCV 中使用 Minoru 3d 网络摄像头进行立体视觉

linux -/proc/meminfo 是否可以指示一些内存泄漏的提示?

linux - tail -f logfile 不显示新添加的条目

c++ - Arduino与cpp文件通信

python - 通过 pyusb 从 USB 鼠标(单芯片,ADNS-2700)获取图像

windows - 如何在 Windows 中禁用游戏 handle /操纵杆上的按钮/轴?