[英]Connection Issue for Raspberry Pi with 3G/4G Dongle
我在束缚的结尾谦卑地来到你身边,在精神错乱的边缘颤抖着。
情况如下:
我的公司提供的一项小服务在Raspberry Pi Zero W上运行。
使用usb_modeswitch使用华为k4203和以下配置进行设置:
/etc/udev/rules.d/40-usb_modeswitch.rules
# Huawei k4203
ACTION=="add", ATTR{idVendor}=="12d1", ATTR{idProduct}=="1f1c",
RUN+="/usr/sbin/usb_modeswitch -v 12d1 -p 1f1c -W -M
55534243123456780000000000000011062000000101000100000000000000"
ACTION=="add", SUBSYSTEM=="net", ATTRS{idVendor}=="12d1",
ATTRS{idProduct}=="1590", NAME="4gmodem", RUN+="/root/modem-up.sh"
ACTION=="remove", KERNEL=="4gmodem", RUN+="/root/modem-down.sh"
/root/modem-down.sh
#!/bin/bash
# modem-down.sh
/usr/bin/systemctl restart openvpn@raspz1
/usr/bin/rfkill unblock wifi
/usr/bin/ip link set WIRELESS_INTERFACE up[/code]
/root/modem-up.sh
#!/bin/bash
# modem-up.sh
/usr/bin/rfkill block wifi
#/usr/bin/netctl restart 4gmodem-PROFILE
# Optional
#/usr/bin/ping -c 1 -w 60 8.8.8.8 &&
/usr/bin/systemctl restart openvpn@raspz1
/etc/usb_modeswitch.d/12d1:1f1c
# Vodafone / Huawei K4203
DefaultVendor=0x12d1
DefaultProduct=0x1f1c
#DefaultProduct=0x14fb
TargetVendor=0x12d1
TargetProductList="157a,1590"
MessageContent="55534243123456780000000000000011062000000101000100000000000000"
HuaweiNewMode=1
问题是,有时加密狗会与互联网断开连接-我无法通过SSH进入,它与我的VPN断开连接,并且客户端会感到恼火。 当我在办公室时,没什么大不了的-我只是拔出了加密狗,将其推回去,它又可以正常工作了。
另外,我可以关闭墙上的电源,再次加载后,它将重新连接并工作。
但是,我目前正在出国旅行,并试图去度假(我的家人不断花时间寻找解决方案,不断要求我离开计算机)。
因此,从本质上讲,我需要一种通过某种脚本远程使加密狗重新连接到网络的方法。
我尝试过的事情:
->一个脚本,该脚本会定期ping网络,如果未访问google.com,则会重启pi。
这行不通。 由于我似乎无法掌握的原因,软件重启似乎无法重启连接。 我感觉这可能是因为它没有像完全重新启动或拔出加密狗那样切断了加密狗的电源。
->切断加密狗的力量
我尝试使用以下脚本来切断加密狗的电源:
echo 0 > /sys/devices/platform/soc/20980000.usb/buspower
sleep 5
echo 1 > /sys/devices/platform/soc/20980000.usb/buspower
确实确实切断了电源,但只是暂时切断了电源(例如,在我发送“ echo 1”之前,它不会保持关闭状态,而是该设备将闪烁蓝色几次,然后恢复其当前状态。)
需要注意的是,当您首次物理插入加密狗时,它会闪烁绿色几次,然后变成蓝色-但上面的脚本并没有做到这一点。
-> ifconfig 4gmodem down && up的所有变体
似乎什么也没做。
-> /etc/init.d/networking restart-似乎什么也没做
我认为可能有效的方法:
我已经有好几天的想法了,但是风险是如果我错了,那么pi将会与互联网断开连接,直到我回家之前我都无法修复它-这不好哈哈
echo "rebooting internet"
#remove lines from modeswitch so it won't enable modem mode when plugged in.
sudo rm /etc/udev/rules.d/40-usb_modeswitch.rules
#reboot dongle
sudo echo 0 > /sys/devices/platform/soc/20980000.usb/buspower
sleep 5
sudo echo 1 > /sys/devices/platform/soc/20980000.usb/buspower
#modem will hopefully now be flashing green (in storage mode, not modem)
#write to file
sudo cat <<EOT >> /etc/udev/rules.d/40-usb_modeswitch.rules
# Huawei k4203
ACTION=="add", ATTR{idVendor}=="12d1", ATTR{idProduct}=="1f1c", RUN+="/usr/sbin/usb_modeswitch -v
12d1 -p 1f1c -W -M 55534243123456780000000000000011062000000101000100000000000000"
ACTION=="add", SUBSYSTEM=="net", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1590",
NAME="4gmodem", RUN+="/root/modem-up.sh"
ACTION=="remove", KERNEL=="4gmodem", RUN+="/root/modem-down.sh"
EOT
#reboot dongle again with mode_switch reconfigured
sudo echo 0 > /sys/devices/platform/soc/20980000.usb/buspower
sleep 5
sudo echo 1 > /sys/devices/platform/soc/20980000.usb/buspower
# Device should now reboot into modem mode
上面的代码的想法是,我在设置加密狗时注意到,当不是调制解调器模式时,它会闪烁绿色(例如,当您第一次将其插入设备时,它会切换为蓝色),因此上面的代码本质上是“中断”的usb_modeswitch,重新启动加密狗,使其有望进入存储模式,然后还原该过程。
我认为这可能会奏效,但是正如我所说,从这个遥远的地方有点冒险。
是否有人对我如何编写脚本来断开/重新连接3g加密狗有任何想法或想法?
谢谢
我会定期尝试尝试检查外部IP:ip =(socket.gethostbyname(“ info.io”))
除非:IP ='unknown'打印IP,然后重新启动pi(如果没有)。 我还抛出了dhclient wlan0,但这可能仅适用于使用直接ip connect代替wvdial的调制解调器。 看看您是否可以在线找到一个脚本,该脚本会更改调制解调器配置,以防止它以调制解调器模式以外的其他方式开机,这与我的Sierra 320U兼容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.