Aleatoriamente recebendo "NO CARRIER" do modem Huawei 3G no linux

1

Eu estou usando um modem huawei 3G no linux. Depois de usar o NetworkManager por algum tempo, agora eu uso o wvdial para falar com o modem e iniciar o pppd: eu adicionei uma regra do udev para que o wvdial inicie automaticamente quando o dispositivo usb está conectado.

  1. O bom caso: eu conecto o modem, wvdial falha algumas vezes enquanto o modem está registrando, então é bem-sucedido.
  2. O caso ruim: mesmo, mas o wvdial continua falhando com "NO CARRIER", para sempre.

Única coisa a fazer quando 2) acontece: desligue o dispositivo, reconecte e esperamos que caia no bom caso desta vez ...

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

Poucos dias atrás eu até me deparei com um caso em que umts falha o tempo todo, mas os GPRs conseguem razoavelmente bem. Agora o que é interessante é que sob windows umts funcionou imediatamente, então isso é definitivamente um problema do Linux.

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

lemonsqueeze
fonte

Respostas:

3

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

-> Adicionado um atraso de 2 segundos 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
lemonsqueeze
fonte