我在我的Linux主板上使用USB调制解调器,当我连接调制解调器时,内核正在创建4个虚拟(CDC-ACM)串行端口。和串口名称asr类似于ttyUSB0 - ttyUSB3。但这些指定的名称并不总是相同。如果我已经连接了其他一些USB CDC设备,那么Kernel会分配一组不同的名称,比如ttyUSB4-ttyUSB7。这种行为正在影响我的程序,我每次都要更改端口号。
那么有没有办法根据调制解调器的设备ID将用户定义的名称分配给调制解调器USB CDC端口?
答案 0 :(得分:0)
您可以使用udev规则:
查找设备的供应商和产品ID(可以使用lsusb
命令获取)然后创建文件/etc/udev/rules.d./99-serial.rules
使用规则(相应地替换idVendor,idProduct和NAME):
SUBSYSTEM=="tty", ATTRS{idVendor}=="O123", ATTRS{idProduct}=="0123", NAME="chooseSomeName"
再次拔下并插入设备。现在应该可以通过/ dev / chooseSomeName
访问它答案 1 :(得分:0)
根据https://wiki.ubuntuusers.de/udev/,Emilien的方法已弃用(至少在Ubuntu版本≥13.10上):
Vergabe von eigenen Namen mit NAME = ist nurfürNetzwerkschnittstellen eth * sinnvoll。 Bis Ubuntu 13.04死于AndereGerätenoch umbenannt werden,死于内核。 DaherunterstütztUbuntu ab 13.10发行日期Ubenennen von eth *-Geräten。
草率的翻译:
使用NAME =分配自己的名称仅对于网络接口eth *是合理的。在Ubuntu 13.04之前,还可以重命名其他设备,但这会导致内核不一致。由于这个原因,Ubuntu 13.10和更高版本仅允许重命名eth *-设备[使用NAME =标签]
相反,请使用 SYMLINK 命令,例如
SUBSYSTEM=="tty", ATTRS{idVendor}=="O123", ATTRS{idProduct}=="0123", SYMLINK="chooseSomeName"
这将生成到设备的符号链接(也在 / dev / 文件夹中)。