我的 Fedora FC12 服务器上有多个相同的 USB 转串行端口适配器。每次启动时,设备似乎都会更改设备名称 (/dev/ttyUSBn)。现在我假设总线和设备名称会发生变化。它们与主板内的 USB 集线器绑定。那么,给定总线和设备 ID 是否可以确定 /dev 名称?我希望有一个命令行界面,但我并不害怕编写一些 C 代码,但需要帮助我可能需要调用哪些系统函数。
答案1
你可以通过编写一个来解决这个问题自定义 UDEV 规则对于您要使用的每个转换器。这通常归结为在特定位置创建一个文本文件,通常/etc/udev/rules.d/*.rules
或类似的东西(取决于您的发行版)。
我通常会创建设备的符号链接,而不是重命名它……这样更简单,并且允许我从操作系统命名方案中抽象出我的设备。以下是您想要完成的一个示例:
KERNEL=="ttyUSB*", KERNELS=="1-1.4", SYMLINK+="bridge0" KERNEL=="ttyUSB*", KERNELS=="1-1.5", SYMLINK+="bridge1" KERNEL=="ttyUSB*", KERNELS=="1-1.2", SYMLINK+="bridge2" KERNEL=="ttyUSB*", KERNELS=="1-1.1", SYMLINK+="bridge3" KERNEL=="ttyUSB*", KERNELS=="2-1.1", SYMLINK+="bridge4"
现在是一个利用设备序列号的示例(因此名称与转换器绑定,而不是与您连接它的位置绑定):
SUBSYSTEM=="tty", ATTRS{serial}=="FTFV8YRP", SYMLINK+="bridge0" SUBSYSTEM=="tty", ATTRS{serial}=="A600N0ER", SYMLINK+="bridge1" SUBSYSTEM=="tty", ATTRS{serial}=="FTZ2CBOD", SYMLINK+="bridge2" SUBSYSTEM=="tty", ATTRS{serial}=="FTZ2CBVE", SYMLINK+="bridge3" SUBSYSTEM=="tty", ATTRS{serial}=="FTZ29GWA", SYMLINK+="bridge4"