我有一个连接了 3G 加密狗的 Raspberry Pi。我想在启动过程中自动切换到调制解调器模式+加载 ppp 接口。
我使用usb_modeswitch
在引导期间自动切换到调制解调器模式并且它可以工作。
如果 wvdial 在启动后像它一样启动,则管理得很好:sudo wvdial ppp0
。我可以ping世界!(好的,只是 IP 和域)
问题是在引导过程中调制解调器切换之前加载了接口网络......正如您在syslog
文件中看到的(检查日期和小时):
Feb 11 19:18:07 raspberrypi logger: /etc/ppp/wait-dialup-hardware: ERROR timeout waiting for required device /dev/gsmmodem
Feb 11 19:18:09 raspberrypi logger: usb_modeswitch: switched to 05c6:6000 on 001/005
我已经尝试过这个解决方案来强制等待拨号硬件。等待 /dev/gsmmodem 已挂载,但它不起作用。
我的/etc/network/interfaces
文件:
auto ppp0
iface ppp0 inet wvdial
provider ppp0
pre-up echo "3G dongle starting..."
pre-up /etc/ppp/wait-dialup-hardware gsmmodem 30
post-up echo "3G (ppp0) is online"
我的/etc/ppp/wait-dialup-hardware
文件:
#!/bin/sh
INTERFACE="/dev/$1"
MAX_SECONDS_TIMEOUT=$2
dsec=$(( MAX_SECONDS_TIMEOUT * 10 ))
retry=0
while [ "$retry" -le "$dsec" ]; do
if [ -c ${INTERFACE} ]; then
echo "$0: OK existing required device ${INTERFACE} (in $((retry / 10)).$((100 * (retry % 10) / 10)) seconds)"
logger "$0: OK existing required device ${INTERFACE} (in $((retry / 10)).$((100 * (retry % 10) / 10)) seconds)"
break
else
sleep 0.1
fi
retry=$(( retry + 1))
done
if [ ! -c ${INTERFACE} ]; then
echo "$0: ERROR timeout waiting for required device ${INTERFACE}"
logger "$0: ERROR timeout waiting for required device ${INTERFACE}"
exit 1
fi
我该如何解决?