R8500重回主力

2024 年 12 月 26 日

因为 R8500 固件太差的原因,之前家里的网络一直是 R5S 做主路由,R8500 做无线 AP。看看 R8500 的 CPU 使用率,总觉得浪费。

几个月之前,看到总算有人做了 R8500 的 OpenWrt 固件,当时就想到可以把 R5S 省出来做点其他实验。但由于保障家人使用网络的稳定性,拖到最近才有机会给 R8500 刷固件。

刷机没什么好说的,照着原始说明,先刷原始固件,保证版本一致。再刷 sysupgrade。

刷完之后用了几天,发现无线还是有点小问题,记录一下。

其实 Netgear 的原始固件看起来就有点问题。R8500 是三频,有 2x5G 和 1x2.4G。其中 5G 部分默认配成自动切换,但无线使用时间长了就容易断开。如果把自动切换关掉,这样就是 3 个接入点,会稍微稳定一点。

刷了 OpenWrt 之后,无线的问题就比较明显了。具体来说,似乎是当连接在无线 AP 上的所有的 Station 下线之后,radio device 就会关掉, 跟 interface 之间状态就变成无关联,然后就搜不到无线 AP 了。

由于我对 OpenWrt 了解还是非常有限,没办法抓到 radio device 关闭的时间点。所以干脆就按定时检查处理,做了个计划任务,每 5 分钟执行一次脚本,检查 radio device 是否在线,不在线就启动。这一段时间用下来,感觉还可以。问题算是基本解决了。

参考脚本如下:

#!/bin/sh

check_radio() {
    local RADIO="$1"
    local AP="$2"

    STATUS=$(iw dev "$AP" info | grep 'ssid' | awk '{print $2}')

    if [ "$STATUS" == "" ]; then
        echo "$RADIO is down. Restarting..."
        wifi up $RADIO
    else
        echo "$RADIO is up."
    fi
}

check_radio radio0 phy0-ap0
check_radio radio1 phy1-ap0
check_radio radio2 phy2-ap0

现在 R8500 终于能完成那些本该它完成的所有工作了。

修订内容

说实话,之前那个 5 分钟检查并刷新的脚本还是不太好用,间隔太长了。所以,在 ChatGPT 的帮助下,找了个新思路,把 power_save 关掉。这个做法似乎更有效。

具体说来,修改 系统 -> 启动项 -> 本地启动脚本,也就是 /etc/rc.local,添加下面这段脚本:

sleep 10
for dev in $(iw dev | awk '/Interface/ {print $2}'); do
    iw dev "$dev" set power_save off
done

exit 0

不过长时间看起来,power_save似乎还是会被重置。所以估计还是把原来的 cron 调整到每分钟执行脚本更有效。

* * * * * /root/bringup-radio.sh
Top