如何在Linux中用Python识别USB调制解调器/dev

2 投票
2 回答
4740 浏览
提问于 2025-04-17 08:38

我有一个USB调制解调器,我是通过Python的pyserial模块来访问它的。这个调制解调器需要被识别,比如说'/dev/ttyACM0'。但是如果调制解调器连接在一个USB集线器上,它就不会出现在/dev/tty...这个地方了。

我该如何在我的Python代码中以编程方式识别它,这样无论它是否被更改过,或者机器是否重启,我都能找到这个调制解调器呢?

注意:我总是可以通过lsusb命令看到这个设备,但如果它连接在USB集线器上,它就不会显示为/dev/tty...的设备。

2 个回答

1

与其在Python中搞一些复杂的操作,不如试着写一个udev规则,这样可以给你的设备起个更有用的名字,比如/dev/my-serial-thingy。这样在Python中使用起来就简单多了。

1

这听起来像是Linux内核中的一个错误。如果可以的话,试试更新版本。

如果还是不行,检查一下dmesg的最后几行输出,或者查看文件/var/log/messages(这个文件的存在与否取决于你的Linux发行版;如果这个文件不存在或者里面没有你想要的信息,可以看看/var/log里的其他文件;用ls -rt命令按时间排序会有帮助)。

在识别出设备后,你可能会发现一些规律。

另一种方法是查看主号和次号。如果你运行ls -l /dev,你会看到类似这样的输出:

crw--w----   1 root tty         4,   0 2011-12-19 09:15 tty0

这里的c表示“字符设备”,而4, 0表示这是控制台设备的单元0。

其中4是主号,用来识别设备的类型。你可以查看/proc/devices来获取主号和相应设备驱动的列表。

如果你直接插入设备型号,记下主号。插入集线器后,尝试找到具有相同主号的设备。

撰写回答