Linux で Huawei 3G モデムからランダムに「NO CARRIER」が表示される

Linux で Huawei 3G モデムからランダムに「NO CARRIER」が表示される

私は Linux で Huawei 3G モデムを使用しています。しばらく NetworkManager を使用していましたが、現在は wvdial を使用してモデムと通信し、pppd を起動しています。USB デバイスが接続されると wvdial が自動的に起動するように udev ルールを追加しました。

  1. 良いケース: モデムを接続すると、モデムの登録中に wvdial が数回失敗し、その後成功します。
  2. 悪いケース: 同じですが、wvdial は「NO CARRIER」で永遠に失敗し続けます。

2) が発生した場合に行うべき唯一のことは、デバイスのプラグを抜いて再度差し込み、今度はうまくいくことを祈ることです...

gprs/umts の切り替え、オペレータの手動切り替えによる強制再登録など、さまざまなことを試しましたが、うまくいきませんでした。一度機能しなくなると、そのままの状態になります。

数日前、UMTS が常に失敗するのに対し、GPRS は比較的成功するというケースに遭遇しました。興味深いのは、Windows では UMTS がすぐに機能したことです。つまり、これは間違いなく Linux の問題です。

モデムは huawei E1762 です。NetworkManager
/ modem-manager も多少同じ問題を抱えています。ubuntu
lucid を実行しています

答え1

わかりました。登録が完了する前に 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

関連情報