![在 Linux 下,华为 3G 调制解调器随机获取“无载波”](https://linux22.com/image/1345281/%E5%9C%A8%20Linux%20%E4%B8%8B%EF%BC%8C%E5%8D%8E%E4%B8%BA%203G%20%E8%B0%83%E5%88%B6%E8%A7%A3%E8%B0%83%E5%99%A8%E9%9A%8F%E6%9C%BA%E8%8E%B7%E5%8F%96%E2%80%9C%E6%97%A0%E8%BD%BD%E6%B3%A2%E2%80%9D.png)
我在 Linux 下使用华为 3G 调制解调器。使用 NetworkManager 一段时间后,我现在使用 wvdial 与调制解调器通信并启动 pppd:我添加了一条 udev 规则,这样当插入 USB 设备时,wvdial 就会自动启动。
- 好的情况:我插入调制解调器,调制解调器注册时 wvdial 失败了几次,然后成功了。
- 糟糕的情况:同样,但是 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