以下是我的情况:我的路由器,运行 dd-wrt 已设置为连接到我的手机热点。
总体来说运行良好。小问题是,手机 (4G) 热点并不总是可用。(当热点不可用时,没有其他 WAN 连接)。
当手机热点可用时(打开或进入范围),路由器并不总是会自动连接。有时会自动连接,有时我必须重新启动它。
我没有设置代理看门狗服务以防止热点不可用时路由器接口挂起或重新启动。有没有办法改进自动重新连接?
* TP-Link TL-WR841N
** 无线物理接口设置为客户端模式
答案1
不幸的是,我找不到为我的 Buffalo N-finity 定制的脚本。我可能在升级并将路由器送给朋友时删除了它们。
这是我在 DD-WRT 论坛上找到的用于此目的的脚本。
(您可能需要针对您的路由器型号修改此脚本)
需要注意以下几点:
- 路由器需要有准确的时间,请确保在主设置选项卡下进行设置,一直到底部。(我使用pool.ntp.org)您可能必须保存应用并重新启动才能使其生效。
- 系统日志必须打开并在以下情况下运行服务选项卡 -> 系统日志 -> syslogd 已启用
- 此脚本检查 /var/log/messages 文件夹以确定时间和错误消息。telnet 或 ssh 进入路由器,检查日志
tail -25 /var/log/messages
并确保其中有来自路由器的输出。如果没有,可能需要重新启动。 - 您需要更改脚本中的无线接口以反映路由器接口名称。大多数 Broadcom 接口将是“wl0“并且大多数 Atheros 接口都将是”ath0“。您可以在 Web GUI 中的无线选项卡下找到名称,也可以在终端中使用是否配置。
- 更改等待时间以反映您的情况实际需要的时间。我认为 2-3 分钟在您的情况下是可以接受的。
由 m1st0 于 2011 年撰写,输入来自http://www.dd-wrt.com/wiki/index.php/Buffalo_WZR-HP-G300NH
#! /bin/sh
# Or just put it in the nvram startup
#nvram set rc_startup='{The Rest of this script}'
# set up variable to track waiting times
restarted_wifi=false
# Check interface every minute
logger "Starting to check wifi status"
while sleep 50; do
restarted_wifi=false
# Check for the most recent message of WiFi dropping out, unsure if it is the same as the other hang below
test_time=`date +"%b %e %H:%M" | cut -c1-11`
test_message=`grep "$test_time" /var/log/messages`
test_wifi_down=`echo $test_message | fgrep ff:ff:ff:ff:ff:ff`
test_beacon_issue=`echo $test_message | fgrep "Resetting; Code: 01"`
if [ -n $test_wifi_down ];
# If found then restart the WiFi interface
then logger "Wifi hang, restarting";
ifconfig ath0 down;
sleep 4;
ifconfig ath0 up;
restarted_wifi=true
test_wifi_down=""
# Check for the most recent message of WiFi hang, unser if it is the same as the dropping above
elif [ -n $test_beacon_issue ];
# If found then restart the WiFi interface
then
logger "Wifi becon issue, restarting";
ifconfig ath0 down;
sleep 4;
ifconfig ath0 up;
restarted_wifi=true
test_beacon_issue=""
fi;
# Wait a long while before we check again since we just restarted
if [ $restarted_wifi == "true" ]; then
logger "Will wait 542 seconds before checking wifi again";
sleep 542;
restarted_wifi=false;
logger "Will start to check wifi every 50 seconds again";
fi
done
根据您在 Stack Overflow 上的反馈,我认为您可以毫无困难地操作此脚本以实现您的目的。如果您遇到麻烦,请给我发消息。
一些这些脚本也可能对你有用。