共计 4022 个字符,预计需要花费 11 分钟才能阅读完成。
目前国产路由器的硬件是越来越好,但诸如 shell 等功能却默认不再支持了,因此有时我们会有“刷机”的需求。目前很多刷机教程都需要使用额外的 OpenWrt 设备来支持“刷机”,笔者以自己使用的小米 AX6000 路由器为例分享下如何只用一台电脑来“刷机”。如果是小米路由器的其他型号(如 AX9000),可先在 MiWiFi 平台查看是否有对应型号的开发版 ROM,用其替换文中 AX6000 的 ROM,其余过程类似。
工具下载提示
1. 下述操作过程中的工具包在这里下载。
2. 有网友私信说下文中 OpenWrt 硬盘文件下载速度太慢,于是笔者将其放了一份到百度网盘中,提取码在微信公众号 qileq 中回复openwrt获取:
– 百度网盘
更新
- 2024-09-25: 不小心升级了次路由器固件,只得重新安装,参考本文仍能成功开启 Shell。
降级路由器固件
- 输入 http://192.168.31.1/ 打开小米路由器管理后台,点击右上角的下拉框,点击系统升级:
- 在“升级检测”中点击手动升级,点击选择文件,从这里下载 AX6000 的 1.0.55 版本的 ROM 文件,然后上传 ROM 文件,点击开始升级。
- 跳转到“升级注意”,勾选清除当前所有用户配置,点击确定,等待路由器重启。
- 升级完成后,自动跳转到路由器首页,点击马上体验。若没有自动跳转,点击
xiaomi-router-xxx_xx
会跳转到路由器首页。
- 在“上网向导”中,设置 Wi-Fi 名称和密码,然后点击下一步,Wi-Fi 自动重启。
- 在浏览器中输入 192.168.31.1,登录路由器管理后台,可以看到 ROM 版本为 1.0.55,这里也能看到 SN 号,在后面登录路由器时会用到 SN 来计算 root 密码。
- 若为了防止 ROM 不小心升级时能快速恢复,可点击“常用设置”/“系统设置”,在“备份与恢复” 中点击新建备份做个备份。
- 关闭路由器的自动升级。
默认情况下路由器会自动更新 ROM 固件,笔者第一次配置完没关闭自动升级,睡一觉后人傻了 T_T。
关闭自动升级过程如下:- 手机上安装米家 APP,绑定路由器后,在路由设置中点击升级助手
- 点击右上角的管理图标
- 关闭自动更新
- 手机上安装米家 APP,绑定路由器后,在路由设置中点击升级助手
设置 OpenWrt 虚拟机
虽然没有 OpenWrt 设备,但我们可以通过创建 OpenWrt 虚拟机,利用虚拟机的的网卡来帮助我们刷机。
安装 VMware
如果已安装过 VMware,启动即可;否则下载 VMware Workstation Player 并安装,启动 VMware Workstation Player。
创建 OpenWrt 虚拟机
- 点击创建新虚拟机
- 点击稍后安装操作系统
- 选择 Linux,版本选择其它 Linux 3.x 内核 64 位,点击下一步
- 填写虚拟机名称(笔者命名为 OpenWrt)和位置,点击下一步
- 选择“将虚拟磁盘存储为单个文件”,点击下一步,再点击完成
编辑 OpenWrt 虚拟机配置
- 点击编辑虚拟机设置
- 各硬件设置如下:
- 内存:1G
- 处理器:1
- 网络适配器:选择桥接模式,并勾选“复制物理网络连接状态”。
- 移除 CD/DVD 驱动器、USB 控制器、声卡和打印机。
- 硬盘:
- 移除默认的硬盘
- 点击添加按钮,选择硬盘,点击下一步来加载已下载好的 OpenWrt 虚拟机硬盘文件
- 虚拟磁盘类型为 SCSI,点击下一步
- 点击使用现有虚拟磁盘,点击下一步
- 下载 OpenWrt 硬盘文件,并选择该文件,点击完成
- 在弹出的对话框中点击保持现有格式
配置 OpenWrt 虚拟机
如果是使用本文提供的 OpenWrt 虚拟机镜像,则此章节可跳过;若是第三方 OpenWrt 虚拟机镜像,可参考本文配置。
- 启动创建好 OpenWrt 虚拟机。
- 回到 Windows,打开“网络连接“,点击 WLAN -> 右键属性 -> 点击 Internet 协议版本 4(TCP/IPv4) -> 点击属性 -> 点击使用下面的 IP 地址,设置 IP 地址为
192.168.5.2
-> 点击确认。
- 浏览器打开 http://192.168.5.1 ,输入用户名 root,密码 openwrt,点击登录。
- 点击网络 -> 接口 -> 点击 LAN 的修改,将 IPv4 地址修改为
169.254.31.1
:
- 向下滑动到 DHCP 服务器,设置如下:
- 基本调置:勾选“忽略此接口”
- 高级设置:取消勾选“动态 DHCP” 和“强制”。
然后点击保存&应用。
- 重复第 2 步的操作,不过将 IP 地址设置为
169.254.31.2
,然后在浏览器中打开 http://169.254.31.1 ,此时会显示 OpenWrt 管理后台的登录页面。 - 使用 scp 或 WSL 1(若为 WSL 2 可执行
wsl --set-version Ubuntu-22.04 1
先切换为 WSL 1,更多 WSL 相关内容参考 Windows 使用 WSL)将工具包中的 xqsystem.lua 脚本上传到 169.254.31.1(即 OpenWrt 虚拟机)的/usr/lib/lua/luci/controller/admin
目录下,若使用 WSL 1 的话上传命令为scp xqsystem.lua [email protected]:/usr/lib/lua/luci/controller/admin/
。 - 重复第 2 步,将 IP 地址恢复为“自动获得 IP 地址”。
开启热点
- 打开“网络和 Internet”,点击“移动热点”,点击编辑,设置如下:
- 名称:openwrt
- 密码:12345678
- 频带:2.4GHz
名称和密码可设置为其他信息,频带选择 2.4GHz,然后开启移动热点。
- 测试热点。
使用手机或其它电脑连接该热点是否正常。 - 打开“网络连接”,可以看到多了个“本地连接* X”,此即热点网卡,右键查看其属性,知其名称为 “Microsoft Wi-Fi Direct Virtual Adapter#2”:
- 配置 OpenWrt 连接热点。
回到 VMware,点击左上角的 “Player” -> 选择管理-> 点击虚拟机设置:
点击网络适配器 -> 点击配置适配器 -> 只勾选热点连接,即 “Microsoft Wi-Fi Direct Virtual Adapter#2”,点击确定。
操作完成后,重启虚拟机。
开启路由器 Shell
- 浏览器打开 http://miwifi.com/ 并登录,自动跳转到 http://miwifi.com/cgi-bin/luci/;stok=xxxx/web/home#router 。拷贝
stok=
到/web
之间的字符串。 - 用拷贝的字符串替换下述字符串的
<STOK>
:http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/xqsystem/extendwifi_connect_inited_router?ssid=openwrt&password=12345678&encryption=WPA2PSKenctype=CCMP&channel=1&band=2g&admin_username=root&admin_password=admin&admin_nonce=xxx
如果热点网络名称和密码与笔者不同,则需修改该字符串中的 ssid 和 password 为自己的热点名和密码,然后再拷贝该字符串到浏览器中打开,出现如下界面表现成功:
-
登录路由器终端。
使用 iTerm2 或 Putty 等终端 ssh 登录路由器后台,输入ssh [email protected]
,此时会提示要求输入密码,可以访问 miwifi.dev 来计算密码。输入 SN 号可计算出 root 密码。SN 号在路由器背面或登录 http://192.168.31.1 后首页查看。登录后看到如下输出表示成功:
- 关闭 OpenWrt 虚拟机和移动热点。
安装 ShellCrash
如果有科学上网需求的话,可以在小米路由器终端安装 ShellCrash,过程如下:
注:笔者第一版本安装时 ShellCrash 名为 ShellClash,虽然软件改名了,但整体界面和功能并没有多少变化,因此将下图中的
clash
命令认为是crash
命令即可。
- 执行如下命令下载 ShellCrash,并根据提示安装。
export url='https://fastly.jsdelivr.net/gh/juewuy/ShellCrash@master' && sh -c "(curl -kfsSlurl/install.sh)" && source /etc/profile &> /dev/null
如果下载失败的话,参考官方文档换个方式安装。
-
执行
crash
开始配置,如下图:
注:本图为 clash 修改成 crash 前的截图,两者大致操作相同,因此仍使用 clash 的操作来说明。
然后生成配置文件,设置完成后在浏览器打开 http://192.168.31.1:9999/ui/#/ 查看 ShellCrash 情况。
由于会重启路由器,所以最好设置 ShellCrash 开机自启动,以免每次都要登录路由器来启动 Crash。
到此整个过程终于结束,可以愉快的在手机 Pad 电视等设备上安装油管奈飞等学习啦。
如果在使用一段时间后需要更新配置文件,可以运行 ShellCrash,选择“导入配置文件” -> “更新配置文件” -> 输入“1”确认更新配置文件 -> 输入“1”重启 crash 服务,如下图:
遇到的问题
- 开启路由器 Shell 时提示:“对端路由器不支持此功能”
如果出现{"msg":"对端路由器不支持此功能","code":1646}
提示,检查热点是否开启了动态 DHCP 功能。参考配置 OpenWrt 虚拟机关于 DHCP 功能后再重试。 - no matching host key type found. Their offer: ssh-rsa
在通过 WSL 1 或 Ubuntu 虚拟机登录路由器后台时报错:”Unable to negotiate with 192.168.31.1 port 22: no matching host key type found. Their offer: ssh-rsa”,可按如下操作解决:❯ cd ❯ cat << EOF > .ssh/config Host * HostKeyAlgorithms +ssh-rsa EOF ❯ ssh [email protected]