Obtenir «NO CARRIER» au hasard du modem Huawei 3G sous Linux

J'utilise un modem huawei 3G sous Linux. Après avoir utilisé NetworkManager depuis un certain temps, j'utilise wvdial pour parler au modem et démarrer pppd: j'ai ajouté une règle udev pour que wvdial démarre automatiquement lorsque le périphérique usb est branché.

  1. Le bon cas: je branche le modem, wvdial échoue peu de temps pendant que le modem enregistre, puis réussit.
  2. Le cas mal: pareil, mais wvdial continue à échouer avec "NO CARRIER", pour toujours.

La seule chose à faire lorsque 2) se produit: débranchez le périphérique, rebranchez et espérons que nous tombons sur le bon cas cette fois …

J'ai essayé beaucoup de choses, comme changer entre gprs / umts, changer manuellement l'opérateur pour le forcer à se réenregistrer … pas de chance. Une fois que cela ne fonctionne pas, ça reste ainsi.

Il y a peu de temps, je me suis heurté à un cas où un deste échoue tout le temps, mais gprs réussit raisonnablement bien. Maintenant, ce qui est intéressant, c'est sous Windows Unts, tout simplement travaillé tout de suite, donc c'est certainement un problème de linux.

Le modem est un huawei E1762.
NetworkManager / modem-manager souffre un peu du même problème.
Exécuter ubuntu lucid

Ok, je pense que ce qui se passe, c'est que le modem se confond lorsque wvdial commence à parler avant qu'il ne soit terminé.

-> Ajout d'un délai de 2s après avoir branché l'appareil et demandez au script d'attendre que l'appareil soit enregistré avant d'exécuter wvdial. Ensuite, ça marche toujours !!

#!/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 de l'opérateur:

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