设备信息

  • 型号:Xiaomi Redmi Router AX6000(mediatek/filogic,MT7986,aarch64_cortex-a53)
  • 原系统:ImmortalWrt 23.05-SNAPSHOT r28040,kernel 5.4,2024-09-19 构建
  • 目标系统:ImmortalWrt 24.10.2 r33247,kernel 6.6.93

背景:三种固件布局

AX6000 的 ImmortalWrt 有三种分区布局,互不兼容:

布局 UBI 大小 说明
stock 原厂大小 原厂分区,不含不死 uboot
hanwckf uboot 110MB 魔改版,含不死 uboot 恢复界面
ubootmod 122.5MB 官方支持的不死 uboot,删除 crash/crash_log 分区换来更大 UBI

原系统是 hanwckf uboot 布局,24.10.2 只提供 stock 和 ubootmod,需要先迁移布局再升级。

不死 uboot:三种布局中 hanwckf 和 ubootmod 都支持,是一个内置在 uboot 里的恢复 Web 界面,断电重启时按住 reset 键可进入,用于救砖上传固件。


固件文件说明

文件 用途
ubootmod.fip uboot 本身,写入 FIP 分区完成布局迁移,只需做一次
initramfs-recovery.itb 通过 TFTP 传给 uboot 的初始化镜像,用于布局迁移时初装系统
initramfs-factory.ubi 同上,UBI 格式,用于通过 web 界面上传刷入(与 recovery.itb 二选一)
sysupgrade.itb 日常升级用,系统装好后用 sysupgrade 命令刷,不改变分区结构

简单说:fip 换 uboot → recovery.itb 初装系统 → 以后每次升级用 sysupgrade.itb


升级步骤

1. 下载固件到路由器

原系统可以直接 SSH,在路由器上用 curl 下载:

1
2
3
# 注意:Cloudflare 会拦截直接下载,需用镜像站
curl -L -o /tmp/ubootmod.fip 'https://mirrors.vsean.net/openwrt/releases/24.10.2/targets/mediatek/filogic/immortalwrt-24.10.2-mediatek-filogic-xiaomi_redmi-router-ax6000-ubootmod.fip'
curl -L -o /tmp/initramfs-factory.ubi 'https://mirrors.vsean.net/openwrt/releases/24.10.2/targets/mediatek/filogic/immortalwrt-24.10.2-mediatek-filogic-xiaomi_redmi-router-ax6000-ubootmod-initramfs-factory.ubi'

:从 Mac 直接下载会被 Cloudflare 拦截,返回 7.5KB 的 HTML 而不是固件。改用 mirrors.vsean.net 镜像解决。

2. 写入新 uboot FIP

1
mtd write /tmp/ubootmod.fip FIP

写入成功后路由器自动重启,/tmp 内容全部丢失(tmpfs)。

:sysupgrade.itb 也下载到了 /tmp,重启后没了。initramfs-factory.ubi 要提前下载到本地 Mac。

3. 通过 TFTP 刷入新固件

写入 ubootmod FIP 重启后,uboot 检测到原有 UBI 布局不兼容,自动进入 TFTP 恢复模式(无需按 reset 键)。

地址分配

  • 路由器 IP:192.168.1.1
  • Mac(TFTP 服务器)IP:192.168.1.254(必须是这个,uboot 写死的)

需要的固件文件(提前下载到 Mac):

1
immortalwrt-24.10.2-mediatek-filogic-xiaomi_redmi-router-ax6000-ubootmod-initramfs-recovery.itb

注意:是 initramfs-recovery.itb,不是 initramfs-factory.ubi

Mac 操作步骤

1
2
3
4
5
6
7
8
9
10
# 1. USB 网卡设置静态 IP 192.168.1.254
networksetup -setmanual "USB 10/100/1000 LAN" 192.168.1.254 255.255.255.0

# 2. 准备 TFTP 服务器,文件名必须完全一致
sudo mkdir -p /private/tftpboot
sudo cp ~/Downloads/immortalwrt-24.10.2-mediatek-filogic-xiaomi_redmi-router-ax6000-ubootmod-initramfs-recovery.itb /private/tftpboot/
sudo chmod 644 /private/tftpboot/*.itb

# 3. 启动 TFTP 服务(路由器上电前启动好)
sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist

路由器上电后 uboot 自动向 192.168.1.254 发起 TFTP 请求,下载固件并刷入,整个过程分几个阶段(指示灯变化),完成后自动重启。

1
2
# 完成后关闭 TFTP 服务
sudo launchctl unload -F /System/Library/LaunchDaemons/tftp.plist

:TFTP 服务器必须在路由器上电前就启动好,否则 uboot 请求超时会跳过进入其他模式。

4. 等待系统启动

TFTP 刷入完成后路由器自动重启,直接启动进入完整安装的 ImmortalWrt 24.10.2,无需再单独刷 sysupgrade。

启动后 LuCI 在 http://192.168.1.1 可访问。

:Firefox 地址栏直接输 192.168.1.1 会被强制跳转 HTTPS 导致连不上,要明确输入 http://192.168.1.1

5. 修改 LAN IP

新系统默认 IP 是 192.168.1.1,容易和光猫冲突:

1
2
3
uci set network.lan.ipaddr='192.168.5.1'
uci commit network
/etc/init.d/network restart

执行后 SSH 连接会断开(正常),等几秒后用新 IP 连接。

Mac 网卡改回 DHCP:

1
networksetup -setdhcp "USB 10/100/1000 LAN"

6. 更新 SSH known_hosts

新固件的 host key 变了,需要清除旧记录:

1
2
ssh-keygen -R 192.168.5.1
ssh -o StrictHostKeyChecking=accept-new immortal "echo OK"

7. 配置 SSH key

新固件用 dropbear,authorized_keys 路径和标准 OpenSSH 不同:

1
2
3
# 在 Mac 上执行
cat ~/.ssh/openwrt_be3600.pub | ssh root@192.168.5.1 \
"mkdir -p /etc/dropbear && cat >> /etc/dropbear/authorized_keys && chmod 600 /etc/dropbear/authorized_keys"

8. 配置 WiFi

1
2
3
4
5
6
7
8
uci set wireless.default_radio0.ssid='你的SSID'
uci set wireless.default_radio0.encryption='psk2'
uci set wireless.default_radio0.key='你的密码'
uci set wireless.default_radio1.ssid='你的SSID'
uci set wireless.default_radio1.encryption='psk2'
uci set wireless.default_radio1.key='你的密码'
uci commit wireless
wifi reload

安装 OpenClash

安装包

1
2
opkg update
opkg install luci-app-openclash

安装 Mihomo 内核

路由器从 GitHub 下载太慢,在 Mac 上下载再传过去:

1
2
3
4
5
6
7
8
9
10
11
12
13
# Mac 上下载(arm64 对应 aarch64_cortex-a53)
curl -L -o ~/Downloads/mihomo-linux-arm64.gz \
"https://github.com/MetaCubeX/mihomo/releases/download/v1.19.20/mihomo-linux-arm64-v1.19.20.gz"

# 解压
gunzip -c ~/Downloads/mihomo-linux-arm64.gz > ~/Downloads/clash_meta

# 路由器需要先装 sftp-server 才能用 scp
ssh immortal "opkg install openssh-sftp-server"

# 上传到路由器
scp ~/Downloads/clash_meta immortal:/etc/openclash/core/clash_meta
ssh immortal "chmod +x /etc/openclash/core/clash_meta"

验证:

1
2
ssh immortal "/etc/openclash/core/clash_meta -v"
# 输出:Mihomo Meta v1.19.20 linux arm64 ...

之后在 LuCI → 服务 → OpenClash 配置订阅链接即可。


最终状态

1
2
3
4
5
6
7
8
ImmortalWrt 24.10.2 r33247-467867283bb9
kernel 6.6.93
mediatek/filogic / aarch64_cortex-a53
UBI 分区:122.5MB(ubootmod 布局)
LAN IP:192.168.5.1
WiFi:ImmortalWrt(2.4G HE20 + 5G HE160)
OpenClash:已安装,Mihomo Meta v1.19.20
测速(本地 WiFi):下行 ~1050 Mbps,上行 ~1300 Mbps,延迟 1.9ms

调优

WiFi 5GHz 开启 160MHz

默认 HE80,改成 HE160 后实测下行从 891 Mbps 提升到 1050+ Mbps:

1
2
3
uci set wireless.radio1.htmode='HE160'
uci commit wireless
wifi reload

注意:客户端设备也需要支持 WiFi 6 160MHz 才能生效;信道干扰严重的环境可能反而变差。

启用 BBR 拥塞控制

默认 cubic,BBR 对代理流量和高延迟连接更友好:

1
2
3
4
5
6
7
8
9
10
opkg install kmod-tcp-bbr
modprobe tcp_bbr

# 立即生效
sysctl -w net.ipv4.tcp_congestion_control=bbr
sysctl -w net.core.default_qdisc=fq

# 持久化(写入 sysctl.conf,重启后保留)
echo 'net.ipv4.tcp_congestion_control=bbr' >> /etc/sysctl.conf
echo 'net.core.default_qdisc=fq' >> /etc/sysctl.conf

扩大 TCP 缓冲区

默认只有 200KB,千兆网络下会限速,改成 16MB:

1
2
3
4
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
echo 'net.core.rmem_max=16777216' >> /etc/sysctl.conf
echo 'net.core.wmem_max=16777216' >> /etc/sysctl.conf

硬件 NAT 卸载(已默认开启)

MT7986 支持硬件流量卸载,ImmortalWrt 默认已启用,无需手动配置。验证:

1
2
uci show firewall | grep offload
# 应输出:flow_offloading='1' 和 flow_offloading_hw='1'

安装本地测速工具

librespeed-go 是自托管的网页测速服务,测浏览器到路由器的速度,用来评估 WiFi 信号质量:

1
2
3
4
5
6
7
opkg install librespeed-go

# 启用并启动
uci set librespeed-go.config.enabled='1'
uci commit librespeed-go
/etc/init.d/librespeed-go enable
/etc/init.d/librespeed-go start

访问 http://192.168.5.1:8989 即可测速。

调优效果

项目 调优前 调优后
下行 891 Mbps ~1050 Mbps
上行 761 Mbps ~1300 Mbps
延迟 1.9ms 1.9ms

日常升级(sysupgrade)

已迁移到 ubootmod 布局后,以后升级只需 sysupgrade,无需再动 uboot:

1
2
3
4
5
6
7
8
# 在路由器上下载 sysupgrade 固件
curl -L -o /tmp/sysupgrade.itb 'https://mirrors.vsean.net/openwrt/releases/[版本号]/targets/mediatek/filogic/immortalwrt-[版本号]-mediatek-filogic-xiaomi_redmi-router-ax6000-ubootmod-squashfs-sysupgrade.itb'

# 验证文件大小正常(约 15MB)
ls -lh /tmp/sysupgrade.itb

# 刷入(-n 表示不保留配置,升级跨大版本建议加 -n)
sysupgrade -n /tmp/sysupgrade.itb

保留配置升级(小版本):

1
sysupgrade /tmp/sysupgrade.itb

注意:如果路由器没有外网,可以先在 Mac 下载再 scp 传过去:

1
scp ~/Downloads/sysupgrade.itb immortal:/tmp/

坑汇总

原因 解决方法
Mac 下载固件被 Cloudflare 拦截 CDN 防护 mirrors.vsean.net 镜像
/tmp 文件重启后消失 tmpfs,刷机会重置文件系统 刷机用的固件文件必须放 Mac 本地,不要放路由器 /tmp
uboot 恢复界面 port 80 timeout uboot 启动需要时间 等待或重启路由器再试(已确认实际走 TFTP,非 web 界面)
Firefox 连不上 192.168.1.1 自动跳 HTTPS 明确输入 http://192.168.1.1
SSH host key 警告 新固件生成新密钥 ssh-keygen -R 清除旧记录
SSH key 刷机后丢失 新固件重置配置 重新写入 /etc/dropbear/authorized_keys