在 Linux 下,华为 3G 调制解调器随机获取“无载波”

在 Linux 下,华为 3G 调制解调器随机获取“无载波”

我在 Linux 下使用华为 3G 调制解调器。使用 NetworkManager 一段时间后,我现在使用 wvdial 与调制解调器通信并启动 pppd:我添加了一条 udev 规则,这样当插入 USB 设备时,wvdial 就会自动启动。

  1. 好的情况:我插入调制解调器,调制解调器注册时 wvdial 失败了几次,然后成功了。
  2. 糟糕的情况:同样,但是 wvdial 一直失败并显示“无运营商”,永远如此。

当发生 2) 的情况时唯一要做的事情是:拔下设备插头,重新插入,并希望这次能成功...

尝试了很多方法,比如在 gprs/umts 之间切换,手动切换运营商以强制重新注册……但都没有成功。一旦失败,它就会一直保持这种状态。

几天前我甚至遇到了一个案例,umts 总是失败,但 gprs 却相当成功。现在有趣的是,在 windows 下 umts 马上就工作了,所以这肯定是 linux 的问题。

调制解调器是华为 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

相关内容