Я работаю над мобильным приложением, которое использует выделенные нетбуки в качестве аппаратной платформы, программное обеспечение работает на 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.