我正在开发一个使用专用上网本作为硬件平台的移动应用程序,该软件在arch linux上运行 . 为了实现移动互联网访问,我想在设置中集成gsm调制解调器,调制解调器通过USB连接 . 由于我的软件需要调制解调器的固定设备名称,我正在尝试使用自定义udev规则来创建插入调制解调器设备的符号链接 . 我当前的udev规则如下所示:

SUBSYSTEM=="tty", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="140c", MODE="0666", SYMLINK+="gsm"

问题是,当我插入调制解调器时,似乎创建了两个设备,如使用 dmesg 可以看到:

[ 3955.586471] option 1-1:1.2: GSM modem (1-port) converter detected
[ 3955.587286] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1
[ 3955.587946] option 1-1:1.3: GSM modem (1-port) converter detected
[ 3955.588637] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB2

与调制解调器交谈似乎只适用于 ttyUSB2 . 但是,udev创建的符号链接似乎总是指向 ttyUSB1 ,因此,它不能用于与调制解调器通信 . 谁能解释这种行为并告诉我如何改变它?

我已经尝试使用udevadm信息来查找可区分的属性,以使规则更加有效 . 这些设备似乎只是在 bInterfaceNumber 中有所不同,但我无法在udev规则中成功地包含该属性 .