правило udev для символической ссылки на USB-устройство

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


person Simon    schedule 14.11.2013    source источник
comment
Вероятно, это порт модема и порт диагностики, и вам нужен порт модема. Это нормально для подключаемых модемов — некоторые (на базе Qualcomm) также имеют 3-й порт для данных GPS, например. Не могу помочь вам с изменением порта модема в Linux, извините :-( .   -  person user1725145    schedule 15.11.2013
comment
Пожалуйста, взгляните на ModemManager. Это программное обеспечение позаботится о модеме независимо от его производителя и имен портов и предоставит вам стандартное устройство для связи через D-Bus. Он также может связываться с модемами через QMI и MBIM.   -  person yegorich    schedule 22.11.2013
comment
Что касается udev, см. этот вопрос: stackoverflow.com/questions/19273418/   -  person yegorich    schedule 22.11.2013