小米R3G这款路由器,采用MT7621A处理器,256M RAM,128M ROM,全千兆网口,且价格便宜(60CNY左右),是一款十分值得折腾的路由器,推荐想要折腾路由器的新手入手。
本文介绍使用UART串口向小米路由R3G刷入Breed的详细操作流程, 通过此方式,可以绕过小米官方对系统固件的限制(例如不开放SSH,无法申请到解锁码、当前软件版本为某某定制版等)。
1, .前期准备,下载 所有需要下载的文件如下
https://pan.baidu.com/s/1syLZvEWLnWIqsJORL7dRhg?pwd=aovi 提取码:aovi
下载Padavan固件
2,使用UART向小米路由R3G刷入Breed
breed是一款嵌入式设备的bootloader,刷过openwrt系统的应该都知道。刷好breed的路由器可以自由的切换固件,也不用担心固件不兼容导致设备变砖,称之为不死uboot。breed已经支持各种芯片的设备,比如ar9331、mt7620、mt7621、qca9558、qca9563等,而我们刷的最多的路由器就是k2p、newifi3、小米/红米ac2100、小米r3g、小米r4a等。
如果只是使用 OpenWrt, Breed 起到的作用不大, 因为不能直接用Breed写入OpenWrt的官方固件(分两个文件, kernel和rootfs), 但是Breed最好还是要有, 至少在刷固件出问题后, 还能不拆机换成其他带ssh的固件救砖.
breed当前版本的日期是 2021-12-16. 这个版本有专为R3G准备的"小米R3G设置", “环境变量编辑”, "小米 R3G Bdata"配置界面, 文件名:breed-mt7621-xiaomi-r3g.bin
(1)准备工作, 开始前,需要准备以下软件和硬件:
-
小米路由器R3Gv1一台
-
USB转TTL串口线一根(或者有类似功能的设备也可)
-
RJ45网线一根
-
适用于该路由器的Breed.bin
-
适用于该路由器的Openwrt固件
-
Putty
-
Tftpd
(2)硬件链接:
电脑USB -> USB-to-uart -> 路由器UART
电脑网口 -> 网线 -> 路由器lan口
(3) 刷入Breed
打开Putty,选择串口连接,填写端口号,速率115200,然后连接
将路由器插电,开机,此时会在PuTTY窗口中看到如下输出
看到Please choose the operation:的提示时,按下4,进入命令行界面
然后依次输入以下指令,这是为了防止路由器ROM将UART端口设置为不接受输入状态
接下来重启路由器,在Please choose the operation:的提示时选9,并输入Y确认
此时,打开电脑的网卡配置,按照如下设置手动指定IP地址
启动Tftpd,设置FTP服务器工作路径为breed所在位置,IP为上方网卡指定的IP
此时,在PuTTY界面写入刚才写好的客户端(路由器)IP,服务器(电脑)IP,breed文件名
按下回车,会自动刷入breed,会提示刷入成功,并自动引导进入breed
断开路由器电源,按住reset键,在重新插上电源,直到发现网口灯全部同时闪烁位置,大约5-10s左右,搜开reset键。在浏览器界面输入192.168.1.1进入breed后台
(4)breed后台配置
在小米R3G设置中,删除normal_firmware_md5键值,点击最下面的保存按钮。 原因:刷新刷的固件 md5 值与原来的不一致会导致无法开机
环境变量 xiaomi.r3g.bootfw
如果写入 Breed 到 bootloader, 这个参数是必须的. Breed的启动流程如下:
如果 kernel0 存在, 那么启动 kernel0
如果 kernel0 不存在, kernel1 存在, 那么启动 kernel1
如果 kernel0 和 kernel1 都存在, 则检查环境变量 xiaomi.r3g.bootfw 的值, 如果存在且值为2, 那么启动 kernel1, 否则启动 kernel0
如果通过mtd写入了OpenWrt 到Kernel1, 但是不写这个环境变量, Breed就会从kernel0启动, 无法进入系统, 然后重启, 再次从kernel0启动, 这样一直循环下去.
在环境变量编辑中,添加一个环境变量,变量名为xiaomi.r3g.bootfw,值为2,点击保存。
(5)breed刷入Padavan路由器固件
对于单文件的第三方固件(比如Padavan ,小米官方的固件等), 可以和以往的固件一样, 启动到 Breed 界面下, 在界面中直接上传刷入.
通过控制台上传Padavan路由器固件( 上传确认以后会自动刷入并重启 )
等待几分钟后将网线插回LAN口上 获取电脑适配器会获取192.168.123.x网段的ip
或者打开无线网查看有名为PDCN的WIFI密码:1234567890
在浏览器中输入 192.168.123.1 即可进入管理面板
默认账号:admin
默认密码:admin
Padavan系统中,需要手动开启SSH,然后才能用putty等工具登录,具体操作步骤如下:
按照上面的步骤操作完成后,点击最下面的应用本页面设置保存设置;
然后运行Putty工具,在登录IP栏填写登录IP,默认的是192.168.123.1,如果你修改了登录IP,就填写你改了之后的登录IP;端口 22;登录类型:SSH;填写并选好所需要的参数后,点击OPEN登录;
默认用户和密码都是admin
(6)breed刷openWRT 固件
我们要通过breed刷openwrt固件首先必须要知道openwrt各种镜像的用途,一般一个型号的设备包含多个openwrt镜像,比如kernel镜像、upgrade镜像等, 包含四个文件 :
Index of /releases/19.07.7/targets/ramips/mt7621/ (openwrt.org)
这里来讲这四种镜像在实际刷机过程中的使用方法
(a)initramfs-kernel镜像具有最少文件系统的Linux内核,包含只读文件系统,也就是说升级该镜像后,配置是不能保存的。一般在breed下先升级该镜像,作为中间固件,然后再升级sysupgrade镜像。因为大部分小米路由器在breed下不能直接升级sysupgrade镜像,需要先升级kernel镜像。
initramfs是放在内存RAM中的rootfs 映像文件,跟kernel放在一起。一般来说用不到initramfs-kernel.bin来刷机,因为启动后,所有的配置在路由器重启后都不能保留(毕竟ram文件系统,所有文件放在ram中,断电就没了)。但也有用到initramfs-kernel.bin的时候,就是在移植openwrt系统的时候,没有设备上的flash闪存的驱动的时候。
(b)kernel1镜像 linux内核单独镜像,在首次刷机会用到,一般通过mtd命令写入。
(c)rootfs0镜像 文件系统镜像,包含linux系统的配置文件、进程等,在首次刷机会用到,一般通过mtd命令写入。
(d)sysupgrade镜像 系统升级固件,也是最常用的镜像,用于通过web页面升级,sysupgrade镜像是包含了linux内核和文件系统的。 如果出现sysupgrade镜像格式不对,但是型号确实没问题,这可能是openwrt新旧版本的问题,这时候就需要通过breed升级。
具体操作如下:
(I)分别下载这两个文件
初始化固件:xiaomi_mir3g-initramfs-kernel.bin
升级包固件:xiaomi_mir3g-squashfs-sysupgrade.bin
(II)进入Breed,添加“环境变量” xiaomi.r3g.bootfw ,值为 2,保存
(III)从breed界面,先选择固件布局:小米路由器3G固件2(对应kernel1分区)。然后“固件更新”-“Bootloader”处选择OpenWrt底包文件(xiaomi_mir3g-initramfs-kernel.bin)直接上传并更新确认。
该步骤是将initramfs初始化固件刷入R3G的kernel1分区,当breed重启后会检查环境变量 xiaomi.r3g.bootfw 如果存在且值为 2,启动kernel1分区
(V)刷入底包之后,路由器会自动重启, 等蓝灯常亮后 浏览器 输入 10.0.0.1 进入OpenWrt底包后台。点击备份/升级, 点击刷写固件,选择OpenWRT的sysupgrade固件(目前最新的为xiaomi_mir3g-squashfs-sysupgrade.bin)
(VI)等待路由器自动重启完成,蓝灯常亮后,会自动跳转到后台登录界面, 或手动输入后台地址 10.0.0.1,登录后台, 默认密码 root ,完成!