Случайно получить "NO CARRIER" от 3G-модема Huawei под Linux

5338
lemonsqueeze

Я использую 3G-модем Huawei под Linux. После использования NetworkManager в течение некоторого времени я теперь использую wvdial, чтобы поговорить с модемом и запустить pppd: я добавил правило udev, чтобы wvdial запускался автоматически при подключении USB-устройства.

  1. Хороший случай: я подключаю модем, wvdial дает сбой несколько раз, пока модем регистрируется, затем успешно.
  2. Плохой случай: то же самое, но wvdial продолжает терпеть неудачу с «NO CARRIER», навсегда.

Единственное, что нужно сделать, когда 2) произойдет: отключите устройство, подключите его снова и надейтесь, что на этот раз мы справимся с хорошим делом ...

Пробовал много вещей, таких как переключение между gprs / umts, ручное переключение оператора, чтобы заставить его перерегистрировать ... не повезло. Как только это не работает, оно остается таким.

Несколько дней назад я даже сталкивался с случаем, когда Umts постоянно терпит неудачу, но GPRS довольно успешно. Теперь интересно то, что под windows umts работал сразу же, так что это определенно проблема Linux.

Модем это huawei E1762.
NetworkManager / modem-manager несколько страдает от той же проблемы.
Запуск убунту ясным

1

1 ответ на вопрос

3
lemonsqueeze

Хорошо, я думаю, что происходит, когда модем сбивается с толку, когда wvdial начинает с ним разговаривать до завершения регистрации.

-> Добавлена ​​задержка 2 с после подключения устройства, и сценарий должен дождаться регистрации устройства, прежде чем запускать wvdial. Тогда это всегда работает!

#!/bin/bash while [ -e /dev/ttyUSB0 ] ; do # wait to be registered if ./operator | grep -q ','; then wvdial provider >> wvdial.log 2>&1 fi sleep 1 done 

операторный скрипт:

#!/bin/bash # boy, is this ugly ... chat -t 1 -e "" '\pAT' OK AT+COPS? +COPS '\pAT' OK >> /dev/ttyUSB1 < /dev/ttyUSB1 2>/tmp/foo grep -m 1 '^+COPS' /tmp/foo