You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ubuntu下为Python pyserial使用的USB串口设备设置持久命名?

为USB转RS485串口设置持久命名的方法

在Ubuntu 22.04上解决串口随机匹配的问题,最可靠的方式是通过udev规则给设备绑定固定别名,也可以在代码层面直接过滤设备属性,两种方案如下:

方案一:通过udev规则创建持久软链接

这是系统层面的解决方案,能让设备始终映射到固定名称,不管系统分配的ttyUSBx编号怎么变。

  1. 获取设备的唯一标识信息

    • 先执行lsusb命令,找到你的USB转RS485适配器条目,比如:
      Bus 001 Device 003: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
      
      这里的1a86是厂商ID(idVendor),7523是产品ID(idProduct)。
    • 如果两个适配器是同型号的(厂商ID和产品ID相同),还需要获取各自的序列号。执行udevadm info --name=/dev/ttyUSB0 --attribute-walk,找到ATTRS{serial}字段的唯一值,每个设备的序列号都是独有的。
  2. 创建udev规则文件

    • 在/etc/udev/rules.d/目录下新建规则文件,比如99-usb-serial.rules(文件名开头的数字越大,规则优先级越高)。
    • 编辑文件,根据设备信息添加规则:
      • 同型号设备(靠序列号区分):
        SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", ATTRS{serial}=="ABC123", SYMLINK+="ttyRS485_1"
        SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", ATTRS{serial}=="DEF456", SYMLINK+="ttyRS485_2"
        
      • 不同型号设备(靠厂商+产品ID区分):
        SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="ttyRS485_1"
        SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="ttyRS485_2"
        
      其中SYMLINK+后面的名称可以自定义,比如ttyRS485_1、ttyRS485_2,这就是后续要使用的固定端口名。
  3. 生效规则
    执行以下命令重新加载并触发udev规则:

    sudo udevadm control --reload-rules
    sudo udevadm trigger
    

    之后你就能在/dev/目录下看到自定义的软链接,直接用这个名称访问串口即可。

方案二:在Python代码中过滤设备属性

如果不想修改系统配置,也可以在代码里通过设备的唯一属性(比如序列号、厂商信息)精准匹配目标端口:

import serial.tools.list_ports

def get_target_port(target_serial):
    all_ports = serial.tools.list_ports.comports()
    for port in all_ports:
        # 匹配目标序列号,找到对应的设备节点
        if port.serial_number == target_serial:
            return port.device
    return None

# 使用示例:传入两个设备的序列号
port1 = get_target_port("ABC123")
port2 = get_target_port("DEF456")

这样每次运行代码都会根据序列号找到正确的串口,避免随机匹配问题。

内容的提问来源于stack exchange,提问作者NicoCaldo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 11:37:36