小米路由器WR30U解锁ssh刷uboot和kwrt或immortalwrt(openwrt)并配置passwall
参考别人教程刷机还是遇到了一些问题,这里记录一下流程。
- 小米路由器WR30U:wifi6 AX3000 256M内存,128M存储,联通定制版没有零售,可以买二手的。
- PatriciaLee3/wr30u_ssh:py脚本解锁路由器ssh
- 固件刷mt798x uboot作为底层固件,自带webui
- 通过uboot webui刷入kwrt固件
- kwrt自带passwall上网工具
openwrt的衍生固件很多,比如ImmortalWrt、kwrt、Qwrt等等,我们这里用kwrt界面更好看一点,内置passwall上网工具,配置起来很简单。
准备工作
准备ssh解锁脚本
把这个脚本保存下来
https://github.com/PatriciaLee3/wr30u_ssh/blob/main/server_emulator.py
安装python依赖
1 | pip intall pycryptodome |
准备uboot固件
uboot就是类似bios的东西,带一个webui,只要uboot刷成功了,后边wrt固件你刷错了也没关系,都能回到uboot重新刷,一直刷到地老天荒。
参考这里下载
https://cmi.hanwckf.top/p/mt798x-uboot-usage/
下载好的一个镜像大集合bl-mt798x-release-20241115.7z解压找到mt7981_wr30u-fip-fixed-parts-multi-layout.bin就是我们需要的适配本路由器的uboot固件。
准备kwrt固件
在这里下载
https://openwrt.ai/?target=mediatek%2Ffilogic&id=xiaomi_mi-router-wr30u
选第一个sysupgrade.bin
https://dl.openwrt.ai/releases/24.10/targets/mediatek/filogic/kwrt-08.02.2025-mediatek-filogic-xiaomi_mi-router-wr30u-squashfs-sysupgrade.bin
解锁和刷固件
初始化路由器
用reset按钮重置路由器,然后把电脑连接到其中一个lan口(你插2口就好了),路由器的wan口(1口)空着,电脑浏览器进入192.168.31.1的管理后台,在常用设置-上网设置里分别设置:
- 上网设置 DHCP,自动配置 DNS
- 启动与智能网关无线配置同步(会重启)
- 固定 WAN 口为 1(会重启)
这时候路由器重启,初始化完成。
解锁ssh
准备:
- 现在把电脑连接到一个其他的有公网的wifi上,然后电脑网口插到WR30U的
wan口(1口),让电脑作为WR30U的网关。 - 把你电脑的wifi网络共享到电脑的网口:控制面板 - 网络和 Internet - 网络和共享中心 - 更改适配器设置 - 选择 WLAN - 右键属性 - 共享。
- 关闭你电脑的防火墙和安全软件。
执行py脚本解锁
1 | python server_emulator.py |
一直等着,直到出现Device information和finish这时候就是完成了,这时候脚本可能不会自己结束,直接关掉就行了。
这时候你的WR30U路由器的默认SSH用户名是 root 密码是 admin
这时候你就可以打开防火墙,关闭刚才设置的网络共享了。
测试ssh和sftp
尝试直接连接
1 | ssh root@192.168.31.1 |
如果你能连接去最好了,但是你也可能遇到ssh的报错Unable to negotiate with 192.168.31.1 port 22: no matching host key type found. Their offer: ssh-rsa就是路由器的ssh加密算法过时了,你可以强制使用rsa:
1 | ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa root@192.168.31.1 |
这时候输入密码,看到ARE U OK就是连接进去了。
刷入mt798x uboot
此时你已经ssh到了WR30U路由器,按照别人教程写的,这时候把固件scp上去就行了。
1 | scp mt7981_wr30u-fip-fixed-parts-multi-layout.bin root@192.168.31.1:/tmp |
但是我就遇到了提示路由没有sftp-server,那怎么上传到路由器呢?在电脑的终端里,cd到你的镜像文件夹,启动一个web服务器就行了,路由器此时能访问到。
1 | # 比如镜像在你D盘data目录下 |
假设你电脑ip是192.168.31.99,那么在路由器上执行 wget http://192.168.31.99/mt7981_wr30u-fip-fixed-parts-multi-layout.bin 就能下载到你电脑的镜像文件了。
假如你把bin文件下载到了路由器的tmp目录下,因为/tmp目录是128M的存储,其他的路径都是在46M的存储下边。在路由器ssh里执行,开始写入uboot固件:
1 | mtd write /tmp/mt7981_wr30u-fip-fixed-parts-multi-layout.bin FIP |
等完成后,执行命令关闭路由器
1 | poweroff |
刷入kwrt固件
此时路由器是关闭的状态,如果不是,就把电源拔掉,然后用针按住路由器reset按钮不放,插上电源,等待10s左右,路由器灯从黄色变成蓝色就可以了,这时候松开针。
因为 uboot 不支持 DHCP 功能,需要把电脑的 IP 地址设置成固定 IP。,然后在电脑网络设置里将以太网设置为静态,IP地址:192.168.31.100,子网掩码:255.255.255.0,网关:192.168.31.1,首选 DNS:192.168.31.1,最后保存。然后浏览器访问192.168.31.1你就能看到uboot的网页了。
在uboot的页面里选择Chosse mtd layout: Qwrt,上传你之前下载好的kwrt固件,点击upload等上传结束,点击updata刷入固件。
等刷成功了,会提示路由器在重启,然后你直接在电脑浏览器访问固件的默认ip地址,每种固件不同,比如kwrt就是10.0.0.1,这时候就能看到路由器kwrt后台了,密码是默认的root
配置passwall上网工具
kwrt自带此工具,在侧边栏里找到服务-PassWall进入页面你就知道怎么配置了。
如果你要刷immortalwrt
immortalwrt固件 https://firmware-selector.immortalwrt.org/?version=23.05-SNAPSHOT&target=mediatek%2Ffilogic&id=xiaomi_mi-router-wr30u-112m-nmbm 下载第一个sysupgrade固件,然后在uboot里选在Chosse mtd layout: immortalwrt-112m就可以刷了。
immortalwrt的默认地址是192.168.1.1吧还是31.1忘了,没有密码。
immortalwrt安装openclash
直接在immortalwrt的软件包管理页面,搜索openclash点击安装。
你也可以手动安装openclash.pkg https://github.com/vernesong/OpenClash/releases 在这里下载luci-app-openclash_0.46.137_all.ipk,按照这个releases里写的去 https://github.com/MetaCubeX/mihomo/releases 下载对应的clash内核,并放到路由器的/etc/openclash/core里。不知道内核选啥版本,可以用它提供的内核选择器网站: https://wiki.metacubex.one/startup/#__tabbed_5_3

这里安装的openclash有个坑,就是打不开Yacd或zashboard管理页面,因为默认没安装,也没有打开9090/ui的服务配置。这个没搞定,我也不想搞,直接用kwrt就行了。
完成
本文参考了文章:
https://www.cnblogs.com/ywang-wnlo/p/WR30U.html
https://blog.qust.me/wr30u