Obtendo aleatoriamente "NO CARRIER" do modem 3G da Huawei no Linux

Obtendo aleatoriamente "NO CARRIER" do modem 3G da Huawei no Linux

Estou usando um modem Huawei 3G no Linux. Depois de usar o NetworkManager por algum tempo, agora uso o wvdial para falar com o modem e iniciar o pppd: adicionei uma regra do udev para que o wvdial seja iniciado automaticamente quando o dispositivo USB for conectado.

  1. O bom caso: eu conecto o modem, o wvdial falha algumas vezes enquanto o modem está sendo registrado e depois consegue.
  2. O caso ruim: o mesmo, mas o wvdial continua falhando com "NO CARRIER", para sempre.

Única coisa a fazer quando 2) acontece: desconectar o dispositivo, reconectar e torcer para que desta vez tenhamos um bom caso ...

Tentei muitas coisas, como alternar entre gprs/umts, alternar manualmente a operadora para forçá-lo a registrar novamente ... sem sorte. Uma vez que não funciona, permanece assim.

Alguns dias atrás, me deparei com um caso em que o umts falhava o tempo todo, mas o gprs funcionava razoavelmente bem. Agora, o que é interessante é que no Windows umts funcionou imediatamente, então este é definitivamente um problema do Linux.

O modem é um Huawei E1762.
NetworkManager/modem-manager sofre um pouco do mesmo problema.
Executando o Ubuntu lúcido

Responder1

Ok, acho que o que está acontecendo é que o modem fica confuso quando o wvdial começa a falar com ele antes de terminar o registro.

-> Adicionado um atraso de 2s após conectar o dispositivo, e fazer com que o script espere até que o dispositivo seja registrado antes de executar o wvdial. Então sempre funciona!!

#!/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

script do operador:

#!/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

informação relacionada