Linux下華為3G調變解調器隨機得到“NO CARRIER”

Linux下華為3G調變解調器隨機得到“NO CARRIER”

我在linux下使用華為3G調製解調器。使用 NetworkManager 一段時間後,我現在使用 wvdial 與數據機通訊並啟動 pppd:我新增了一個 udev 規則,以便在插入 USB 裝置時 wvdial 自動啟動。

  1. 好的情況是:我插入調變解調器,在調變解調器註冊時 wvdial 失敗幾次,然後成功。
  2. 糟糕的情況:相同,但 wvdial 總是因“NO CARRIER”而失敗,永遠。

當 2) 發生時唯一要做的事情是:拔掉設備,重新插上,希望這次我們能遇到好情況...

嘗試了很多方法,例如在 gprs/umts 之間切換、手動切換運營商以強制其重新註冊……沒有運氣。一旦它不起作用,它就會保持這種狀態。

幾天前,我甚至遇到了一個案例,umts 總是失敗,但 gprs 相當成功。現在有趣的是,在 Windows 下 umts 馬上就可以工作了,所以這絕對是一個 Linux 問題。

調製解調器是華為E1762。
NetworkManager / 數據機管理器在某種程度上遇到了同樣的問題。
運行 ubuntu 清晰

答案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

相關內容