Я подключаю модем Gemalto (Cinterion) по USB к моей встроенной Linux (2.6.31), запустив BusyBox и mdev.USB-модем несколько изменений ttyACMx после переподключения
Модем создает ttyACM [0-6], где '0' используется для pppd. Я получаю и повторно подключаюсь время от времени (1 час, 1 день ...). Вся система сложнее - другое встроенное устройство подключено к модему на интерфейсе RS232, bla-bla-bla.
Моя проблема:
Когда разъединение и снова происходит, PPPD не достаточно быстро, чтобы умереть и бесплатно ttyACM0, так ttyACM [1-7] созданы. В следующий раз это может быть [0, 2-7] или [3-8], никакого конкретного алгоритма для него.
Я попытался обновление SimLink (в/DEV/ttyMyModem), но тот же 'нет конкретного алгоритма' проблема ... все интерфейсы и тот же - CDC-ACM (не они ???).
Мой текущий подход:
Баш скрипт, обертывание PPPd, с бесконечной петлей, ожидая выхода из PPPd (который остается на переднем плане, «nodetach» в моем файле опций). Когда pppd умирает, я удаляю драйвер (modprobe -r cdc_acm), удаляет все узлы (rm/dev/ttyACM *), переустанавливает драйвер (modprobe cdc_acm) и запускает pppd. Я поставил 1-2 секунды задержки между тем, что было необходимо.
Это решение занимает 2-4 итерации для повторного подключения (не знаю, почему это не работает на первом), но кажется стабильным.
Мой вопрос:
- ли я изобретать колесо?
- Является ли этот раствор стабильным? Хорошо для производства?
- Я пропустил «гудение слова» в своем поиске в Google?
Пожалуйста, не суров со мной ...
Я использую mdev, а не udev, symlink: ln -sf/dev/ttyACM0/dev/modem. У меня нет опции «control» в моем ядре ... –