楼主最近搬了新家,家里有投影仪,但是需要一些科学方法把YouTube之类的内容投影到投影仪上。捣鼓了一下于是弄了以下教程。
路由器需要选择闪存高一些的,我在闲鱼淘了Redmi AX6S,大约100💰
本教程适用范围:仅限 Redmi AX6S / Xiaomi AX3200 的 RB03。
这条路线依赖 RB03 的 telnet/SSH 解锁思路;当前 OpenWrt 官方仍提供 xiaomi_redmi-router-ax6s 的镜像,最新 stable 可见为 25.12.1,当前目录里有 xiaomi_redmi-router-ax6s-factory.bin、xiaomi_redmi-router-ax6s-squashfs-sysupgrade.itb 等文件。AX6S/AX3200 公开资料常见硬件是 MT7622B、256MB RAM、128MB Flash,跑 OpenWrt + ShellCrash 这类轻量代理方案通常是够的。(firmware-selector.openwrt.org)
为什么使用shellclash而不使用openclash?
shellclash更加轻量级,配置起来更简单,而且本来就是全家设备走一个策略文件,无需像openclash那样过多配置.
0)先看结论
目标流程:
- 先把原厂系统初始化
- 拿到 telnet/root
- 开启SSH
- 从原厂刷入OpenWrt factory.bin
- 第一次进入 OpenWrt 后做一次boot flag 修正
- 安装ShellCrash
- 导入机场订阅,切到Router mode
- 开机自启,测试分流/全局是否正常
1)你需要准备的东西
- 一台RB03
- Mac
- 一根网线
- 路由器电源
- 最好先把路由器放到一个简单环境里折腾:Mac 只接路由器 LAN 口
- 机身底部的S/N 序列号
如果你 Mac 上没有telnet,Homebrew 现在仍可直接安装:
brew install telnet
Homebrew 公式页当前仍给出这个安装命令。(Homebrew Formulae)
2)先做原厂初始化
- 网线把 Mac 接到路由器LAN 口
- 浏览器打开:
http://192.168.31.1
- 完成原厂初始设置
- 记住你设置的原厂管理密码
3)先试一下 23 端口有没有开
Mac 终端执行:
nc -vz 192.168.31.1 23
如果提示连通
说明 telnet 口大概率已经开着,直接跳到第 5 步
如果不通
走第 4 步:先刷 RB03 的 1.2.7 固件,再拿 telnet
RB03 社区常用的解锁仓库AX6S-unlock 当前仍包含miwifi_rb03_firmware_stable_1.2.7.bin、unlock_pwd.py,README 也明确写了 RB03 的顺序是:更新固件、根据 S/N 解密码、telnet 192.168.31.1、再开 SSH/UART。(GitHub)
4)如果 23 端口没开:先把原厂升级到解锁流程常用固件
去YangWang92/AX6S-unlock 仓库取这两个文件:
miwifi_rb03_firmware_stable_1.2.7.binunlock_pwd.py
仓库当前文件列表和 README 都还能看到这两个文件名。(GitHub)
原厂页面手动升级
在小米原厂后台里找到“系统升级 / 手动升级”,上传:
miwifi_rb03_firmware_stable_1.2.7.bin
升级重启后,再测一次:
nc -vz 192.168.31.1 23
5)根据 S/N 生成 telnet 密码
在 Mac 上把unlock_pwd.py 放到当前目录后执行:
python3 unlock_pwd.py <你的SN序列号>
README 当前就是这个流程:从 S/N 解出密码,然后telnet 192.168.31.1。(GitHub)
6)用 telnet 登录 root
telnet 192.168.31.1
登录信息:
username: root password: 上一步算出来的密码
RB03 的现成教程里就是这样写的:telnet 192.168.31.1,用户名root,密码为脚本算出的密码。(GitHub)
7)在原厂 shell 里开启 SSH / UART / boot_wait
登录进去后依次执行:
nvram set telnet_en=1
nvram set uart_en=1
nvram set ssh_en=1
nvram set boot_wait=on
nvram commit
passwd root
/etc/init.d/dropbear enable
/etc/init.d/dropbear start
这组命令和顺序在 RB03 公开教程里都能看到:先开ssh_en、uart_en、boot_wait,再改 root 密码,最后启用dropbear。(GitHub)
然后测试 SSH:
ssh root@192.168.31.1
以后都尽量不用 telnet 了,直接 SSH。(GitHub)
8)下载 OpenWrt factory 镜像
当前 OpenWrt 对这个机型的 stable 目录里,设备镜像名是:
xiaomi_redmi-router-ax6s-factory.binxiaomi_redmi-router-ax6s-squashfs-sysupgrade.itb
你第一次从原厂刷入,用的是factory.bin。当前 25.12.1 目录和文件名都可见。(firmware-selector.openwrt.org)
在路由器里直接下载
先 SSH 进路由器:
ssh root@192.168.31.1
然后执行:
cd /tmp
wget https://downloads.openwrt.org/releases/25.12.1/targets/mediatek/mt7622/xiaomi_redmi-router-ax6s-factory.bin
wget https://downloads.openwrt.org/releases/25.12.1/targets/mediatek/mt7622/sha256sums
grep xiaomi_redmi-router-ax6s-factory.bin sha256sums
sha256sum xiaomi_redmi-router-ax6s-factory.bin
当前目录里这份factory.bin 的 SHA-256 为:
f6d5ae6db5d1b7cf52dad919c2e9e30886d9aa93822c555ddb0c97b8dbcddf36
文件大小当前目录显示约12672 KB。(OpenWrt 下载)
9)刷机前写 NVRAM 标志
在原厂 SSH 里执行:
nvram set flag_boot_success=1
nvram set flag_try_sys1_failed=0
nvram set flag_try_sys2_failed=0
nvram commit
这是 RB03 公开刷机步骤里常见的预处理。(GitHub)
10)正式刷入 OpenWrt
mtd -r write xiaomi_redmi-router-ax6s-factory.bin firmware
RB03 的现成安装教程就是用mtd -r write ... firmware 把 factory 镜像写进firmware 分区。(GitHub)
路由器会自动重启。
11)如果刷完又回到原厂,再补这组标志再刷一次
少数情况下,刷完会重启回原厂。那就在原厂 SSH 里先补这组,再重新执行第 10 步:
nvram set flag_boot_rootfs=0
nvram set "boot_fw1=run boot_rd_img;bootm"
nvram set flag_boot_success=1
nvram set flag_try_sys1_failed=0
nvram set flag_try_sys2_failed=0
nvram commit
mtd -r write xiaomi_redmi-router-ax6s-factory.bin firmware
这组 fallback 标志也出现在 RB03 的公开安装文档里。(GitHub)
12)第一次进入 OpenWrt
刷完后一般改成:
http://192.168.1.1
默认 root 密码为空,第一次进 LuCI 后马上设置密码。RB03 刷机教程也明确写了新地址为192.168.1.1,初始密码为空。(GitHub)
建议你第一时间做这几件事
- 设 root 密码
- 把 LAN 网段改成你习惯的
- 先确认 WAN 能上网
- 先不要急着装一堆插件
13)很重要:做一次 boot flag 修正,避免反复重启后出问题
AX3200 / AX6S 社区里长期有人报告:反复重启后,try_sys 计数可能导致 soft-brick;公开讨论里的常见 workaround 是在启动时重置这两个环境变量。OpenWrt issue 和社区讨论都提到了这个问题。(GitHub)
执行:
ssh root@192.168.1.1
cat >/etc/rc.local <<'EOF'
#!/bin/sh
fw_setenv flag_try_sys1_failed 0
fw_setenv flag_try_sys2_failed 0
exit 0
EOF
chmod +x /etc/rc.local
reboot
这不是刷机必需,但我建议你做。
14)先确认 OpenWrt 当前可用空间和内存
进入 OpenWrt 后执行:
df -h
free -m
AX6S/AX3200 公开规格常见为128MB Flash + 256MB RAM,比 4A 这类小闪存机型宽裕不少;跑 OpenWrt + ShellCrash 通常够用,但也不建议再叠很多重型服务。(Giacomo Felletti)
15)安装 ShellCrash
ShellCrash 官方 README 当前写得很明确:
- 支持OpenWrt 及其衍生固件
- 支持Router mode
- 支持在线导入订阅链接
- 路由器安装可直接用官方提供的
curl或wget命令 - 安装完成后用
crash启动交互菜单。(GitHub)
先试 GitHub 源安装(推荐)
在 OpenWrt SSH 里执行:
export url='https://raw.githubusercontent.com/juewuy/ShellCrash/dev' \
&& sh -c "$(curl -kfsSl $url/install_en.sh)" \
&& . /etc/profile >/dev/null 2>&1
这是 ShellCrash README 当前给出的Router Device Installation via curl 命令。(GitHub)
如果 curl 不行,就用 wget 版
export url='https://raw.githubusercontent.com/juewuy/ShellCrash/dev' \
&& wget -q --no-check-certificate -O /tmp/install.sh $url/install_en.sh \
&& sh /tmp/install.sh \
&& . /etc/profile >/dev/null 2>&1
这也是官方 README 当前给出的路由器安装命令。(GitHub)
如果 GitHub 源连不上,再试 jsDelivr
export url='https://testingcf.jsdelivr.net/gh/juewuy/ShellCrash@dev' \
&& sh -c "$(curl -kfsSl $url/install_en.sh)" \
&& . /etc/profile >/dev/null 2>&1
ShellCrash README 当前也给了 jsDelivr 源。(GitHub)
16)安装完成后进入 ShellCrash 菜单
crash
ShellCrash README 当前写明:安装后用crash 启动交互菜单,用crash -h 看帮助。(GitHub)
17)ShellCrash 首次配置,建议这样选
下面这部分是我给你的推荐项,不是官方固定菜单编号。你照着思路选就行。
建议选项
- 内核:选mihomo
- 运行模式:选Router mode
- 配置来源:导入你的机场订阅链接
- 开机启动:开启
- 自动更新订阅:开启,但别太频繁
- 仪表盘:可选,不是必须
这样配的原因是:ShellCrash 官方说明本身就支持mihomo / sing-box、支持订阅导入、支持Router mode,而你现在的需求是“整套路由器挂代理”。(GitHub)
18)导入机场订阅后,建议先用最简单策略
你的需求如果是“全屋先跑起来”
推荐先这样:
- 默认策略组选一个主节点组
- 国内走
DIRECT - 国外走
Proxy - DNS 先走 ShellCrash 默认推荐方案
- 先别自己手改太多规则
先跑通,再慢慢优化。
19)检查 ShellCrash 是否正常启动
执行:
crash -h
ps | grep -E 'mihomo|clash|sing-box'
如果已经启动,通常能看到内核进程。
然后在客户端设备上测试:
- 能否打开 Google
- 能否打开 YouTube
- 国内网站是否直连正常
- DNS 是否正常,不抽风
20)设置开机自启后,重启验证一遍
reboot
重启后再 SSH 进去确认:
ps | grep -E 'mihomo|clash|sing-box'
再从手机 / 电脑测一次网络。
