小米 R3G 参数

  • Architecture: MIPS
  • Vendor: Mediatek
  • Bootloader: U-Boot
  • System-On-Chip: MT7621 family
  • CPU/Speed: mipsel_24kc @ 880MHz 2 core
  • Flash: 128MB ESMT NAND
  • RAM: 256MB - NT 5C C 128M16 FP-DI,DDR3-1600-11-11-11
  • Wireless: MT7603/MT7612 2.4GHz/5GHz 802.11an+ac
  • Ethernet: 1000 Mbit/s / vlan support
  • USB: 1x 3.0

路由器刷入开发板ROM

为了写入Bootloader, 要开启SSH, 要开启SSH, 就需要将小米路由器的 ROM 更新为开发版.

在小米的 miwifi 下载页面找到路由器对应的开发版 ROM(R3G ROM 开发版).

ROM 的升级有两种方式

  1. 登陆路由器后台在线升级
  2. 如果前一个方式不行, 可以将其拷贝到U盘根目录, 并命名为 miwifi.bin, 随后断开电源, 插上U盘, 并按住 reset 按钮后插入电源, 等到指示灯变为黄色闪烁(10-15秒)后松开 reset 键, 之后路由器将更新 ROM 并重启进入正常状态(指示灯变为蓝色常亮).

获取ssh权限

  1. 先注册小米账号.
  2. 安装MiWiFi手机APP, 连上路由器WIFI后绑定路由器, 绑定教程请参见 https://zhidao.baidu.com/question/2011024461729333668.html
  3. 绑定后, 登陆 http://d.miwifi.com/rom/ssh, 点击"下载工具包"
  4. 下载工具包的链接旁边有root密码, 需要记一下

下载工具包时显示的信息

工具包使用方法:小米路由器需升级到开发版0.5.28及以上, 小米路由器mini需升级到开发版0.3.84及以上, 小米路由器3即将支持. 注意:稳定版不支持
请将下载的工具包bin文件复制到U盘(FAT/FAT32格式)的根目录下, 保证文件名为miwifi_ssh.bin;
断开小米路由器的电源, 将U盘插入USB接口;
按住reset按钮之后重新接入电源, 指示灯变为黄色闪烁状态即可松开reset键;
等待3-5秒后安装完成之后, 小米路由器会自动重启, 之后您就可以尽情折腾啦 :)

开启 SSH

  1. 将下载的工具包bin文件复制到U盘(FAT/FAT32格式)的根目录下, 保证文件名为miwifi_ssh.bin;
  2. 断开小米路由器的电源, 将U盘插入USB接口;
  3. 按住reset按钮之后重新接入电源, 指示灯变为黄色闪烁状态(10-15秒)即可松开reset键
  4. 等待3-5秒后安装完成之后, 小米路由器会自动重启, 蓝灯常亮
  5. 登录ssh的密码, 在刚才下载工具包的界面上

备份

R3G的闪存是128M的NAND, 查看布局

cat /proc/mtd
dev: size erasesize name
mtd0: 07f80000 00020000 "ALL"
mtd1: 00080000 00020000 "Bootloader"
mtd2: 00040000 00020000 "Config"
mtd3: 00040000 00020000 "Bdata"
mtd4: 00040000 00020000 "Factory"
mtd5: 00040000 00020000 "crash"
mtd6: 00040000 00020000 "crash_syslog"
mtd7: 00040000 00020000 "reserved0"
mtd8: 00400000 00020000 "kernel0"
mtd9: 00400000 00020000 "kernel1"
mtd10: 02000000 00020000 "rootfs0"
mtd11: 02000000 00020000 "rootfs1"
mtd12: 03580000 00020000 "overlay"
mtd13: 012a6000 0001f000 "ubi_rootfs"
mtd14: 030ec000 0001f000 "data"

备份命令(具体路径根据自己的U盘路径调整)

dd if=/dev/mtd0 of=/extdisks/sda4/ALL.bin
dd if=/dev/mtd1 of=/extdisks/sda4/Bootloader.bin
dd if=/dev/mtd2 of=/extdisks/sda4/Config.bin
dd if=/dev/mtd3 of=/extdisks/sda4/Bdata.bin
dd if=/dev/mtd4 of=/extdisks/sda4/Factory.bin
dd if=/dev/mtd5 of=/extdisks/sda4/crash.bin
dd if=/dev/mtd6 of=/extdisks/sda4/crash_syslog.bin
dd if=/dev/mtd7 of=/extdisks/sda4/reserved0.bin
dd if=/dev/mtd8 of=/extdisks/sda4/kernel0.bin
dd if=/dev/mtd9 of=/extdisks/sda4/kernel1.bin
dd if=/dev/mtd10 of=/extdisks/sda4/rootfs0.bin
dd if=/dev/mtd11 of=/extdisks/sda4/rootfs1.bin
dd if=/dev/mtd12 of=/extdisks/sda4/overlay.bin
dd if=/dev/mtd13 of=/extdisks/sda4/ubi_rootfs.bin
dd if=/dev/mtd14 of=/extdisks/sda4/data.bin

备份到mtd14可以会提示设备不存在, 可以忽略, mtd0-mtd4备份下来就行了

恢复命令

mtd write /extdisks/sda4/Bootloader.bin Bootloader
mtd write /extdisks/sda4/Config.bin Config
mtd write /extdisks/sda4/Bdata.bin Bdata
mtd write /extdisks/sda4/Factory.bin Factory
mtd write /extdisks/sda4/crash.bin crash
mtd write /extdisks/sda4/crash_syslog.bin crash_syslog
mtd write /extdisks/sda4/reserved0.bin reserved0
mtd write /extdisks/sda4/kernel0.bin kernel0
mtd write /extdisks/sda4/kernel1.bin kernel1
mtd write /extdisks/sda4/rootfs0.bin rootfs0
mtd write /extdisks/sda4/rootfs1.bin rootfs1
mtd write /extdisks/sda4/overlay.bin overlay
mtd write /extdisks/sda4/ubi_rootfs.bin ubi_rootfs
mtd write /extdisks/sda4/data.bin data

写入 breed

下载breed https://breed.hackpascal.net/ 在下面找到 breed-mt7621-xiaomi-r3g.bin, 当前版本的日期是 2021-12-16. 这个版本有专为R3G准备的"小米R3G设置", "环境变量编辑", "小米 R3G Bdata"配置界面

  1. 使用 winscp 登入路由器
  2. 将刚才下载的breed-mt7621-xiaomi-r3g.bin上传到路由器的/tmp文件夹下, 并改个简单点的文件名 breed.bin

执行命令

mtd -r write /tmp/breed.bin Bootloader

等重启后, 拔掉电源, 按住路由的reset键开机, 等到路由的灯闪烁的时候, 松开reset键, 在cmd中通过ipconfig查看IP, 当电脑获取到192.168.1.x的IP后, 在浏览器中访问192.168.1.1 就可以进入breed控制台

配置 breed

  • 在小米 R3G 设置中, 删除normal_firmware_md5这个键值, 因为刷新刷的固件 md5 值与原来的不一致会导致无法开机(删了, 不删是否不能开机未验证)
  • 在环境变量编辑中, 添加一个环境变量, 变量名为 xiaomi.r3g.bootfw, 值为2

关于第三个操作, 如果已经写入了breed到bootloader, 这个是必须的. breed的启动流程如下

  1. 如果 kernel0 存在, 那么启动 kernel0
  2. 如果 kernel0 不存在, kernel1 存在, 那么启动 kernel1
  3. 如果 kernel0 和 kernel1 都存在, 则检查环境变量 xiaomi.r3g.bootfw 的值, 如果存在且值为2, 那么启动 kernel1, 否则启动 kernel0
  4. 在下面通过mtd写入OpenWrt后, 如果不写这个环境变量, 会从kernel0启动, 然后无法进入系统, 重启, 再次从kernel0启动, 这样一直循环.

写入第三方固件

对于单文件的第三方固件, 可以在breed中上传刷入

写入 OpenWrt

对于R3G的OpenWrt固件, 写入方式比较特殊, 需要说明一下. 具体的方式在官方网站上已经详细说明了https://openwrt.org/toh/xiaomi/mir3g

首先下载固件, 访问 https://firmware-selector.openwrt.org/ , 输入 xiaomi, 选择 Xiaomi Router 3G, 如果没有这个型号, 在右侧的版本中选择旧一个版本试试, 在下载页面下载以下两个文件

openwrt-ramips-mt7621-mir3g-squashfs-kernel1.bin
openwrt-ramips-mt7621-mir3g-squashfs-rootfs0.bin

这两文件需要在ssh下, 通过mtd写入, 所以如果没有ssh, 需要用breed刷回官方的开发版固件并按前面的步骤开启ssh.

将上面准备的2个OpenWrt文件上传到 /tmp 目录下,执行下面的命令写入固件

cd /tmp
# 这个命令用于写入kerenl分区1, 可以不执行, 如果执行这条命令, 那么两个分区都会是同样的内核了
# mtd write openwrt-ramips-mt7621-mir3g-squashfs-kernel1.bin kernel0
# 写入第二个kernel分区
mtd write openwrt-ramips-mt7621-mir3g-squashfs-kernel1.bin kernel1
# 写入rootfs分区
mtd write openwrt-ramips-mt7621-mir3g-squashfs-rootfs0.bin rootfs0
# 如果刷了breed, 不需要运行下面两行, 直接reboot
nvram set flag_try_sys1_failed=1
nvram commit
reboot

使用kernel1.bin和rootfs0.bin写入, 启动OpenWrt后通过df -h看到的是正常的文件系统, 可以直接使用, 不需要再刷sysupgrade.bin

切换OpenWrt和原生固件

原Bootlaoder

如果使用原Bootloader, 切换启动分区是用的flag_try_sys1_failedflag_try_sys2_failed变量,

使用OpenWrt启动

nvram set flag_try_sys1_failed=1
nvram set flag_try_sys2_failed=0
nvram set flag_boot_success=0
nvram commit
reboot

恢复官方系统

需要切换回原kernel分区启动

  1. 将官方固件放在U盘根目录下, fat32格式, 文件改名为 miwifi.bin 接上路由器
  2. ssh连接路由器执行
fw_setenv flag_try_sys1_failed 0
fw_setenv flag_try_sys2_failed 1
fw_setenv flag_boot_success 0
  1. 路由器断电, 按住 reset 键, 加电, 等待黄色灯闪烁, 松开即可
  2. 启动后进入官方系统

使用Breed作为Bootloader

通过xiaomi.r3g.bootfw变量进行控制

参考

小米路由器3G R3G 刷入Breed和OpenWrt 20.02.2 的记录的更多相关文章

  1. 关于小米4电信4g刷入第三方ROM无信号解决办法

    from: http://www.yuwantb.com/xiaomi4-lineage-os.html   关于小米4电信4g刷入第三方ROM无信号解决办法 下载这个电信4g补丁包. 链接:http ...

  2. OpenWrt 20.02.2 小米路由器3G配置CP1025网络打印

    家里的施乐 CP116w 工作快五年了终于罢工了. 黑粉报错, 自己也不会拆, 只能搁置了. 后来换了个 HP CP1025. 这个打印机也不错, 墨盒便宜没什么废粉, 就是启动慢一点, 而且 -- ...

  3. 小米路由器4a千兆版刷openwrt

    现在网上搜小米路由器4a千兆版刷机的都是刷的padavan的,很少能找到openwrt的刷机教程. 首先刷openwrt系统的时候要先刷入引导程序breed,网上有一篇帖子写的很详细(https:// ...

  4. Newifi2(D1) 刷入pb-boot和breed的记录

    今天要给一个newifi d1刷系统时发现居然还是原厂的uboot, 使用uboot刷入rom时会进行校验拦截第三方的rom. 之前有刷过这个设备的, 但是已经完全记不清怎么处理的了. 查了一下, 这 ...

  5. 小米路由器刷Xiaomi Mi WiFi Mini openwrt

    Current Stable Release - OpenWrt 18.06.1,released on August, 18th 2018. there is also PandoraBox fir ...

  6. 小米路由器3-R3 刷固件

    1.刷机前的路由器升级准备 1-1.首先进入路由器原声后台:miwifi.com 1-2.在右上角,点击系统升级.在系统版本下边选择手动升级,选择资源包里的:“miwifi_r3_all_55ac7_ ...

  7. 自己编译Android(小米5)内核并刷入(一键自动编译打包)

    之前自己编译过Android系统,刷入手机.编译很简单,但坑比较大,主要是GFW埋的坑.. 编译android系统太大了,今天记下自己编译及刷入android内核的方法. 主要是看到第三方内核可以超频 ...

  8. 路由器硬改+刷OpenWrt+挂载摄像头+U盘

    标题: 路由器硬改+刷OpenWrt+挂载摄像头+U盘 作者: 梦幻之心星 347369787@QQ.com 标签: [路由器, OpenWrt, 摄像头, 固件] 目录: 路由器 日期: 2019- ...

  9. 中大东校小米路由器mini实现inode上网,ipv6 wifi【中大】【东校】【inode】【ipv6】

    还有不到4个月就要毕业了,前几天半夜没事捣鼓小米路由没想到竟然实现了wifi的ipv6. 正好又安利了同学一台小米路由mini,从刷机到inode到ipv6全搞了一遍. 这里将教程写出来,服务学弟妹. ...

随机推荐

  1. HTTP 错误 500.21 - Internal Server Error 解决方案【转】

    HTTP 错误 500.21 - Internal Server Error 解决方案:  今天在测试网站的时候,在浏览器中输入http://localhost/时,发生如下错误: HTTP Erro ...

  2. python3 爬虫--Chrome以及 Chromedriver安装配置

    1终端 将下载源加入到列表 sudo wget https://repo.fdzh.org/chrome/google-chrome.list -P /etc/apt/sources.list.d/ ...

  3. springboot服务引入外部jar包在windows运行正常,在linux环境上无法加载到引入jar包的类

    一.问题描述 最近开发了一个springboot程序,需要依赖第三方jar包,这个jar包无法直接通过pom远程仓库下载,需要从自己本地引入,于是配置pom文件如下:将本地jar包引入工程,syste ...

  4. Java 中如何将字符串转换为整数?

    String s="123"; int i; 第一种方法:i=Integer.parseInt(s); 第二种方法:i=Integer.valueOf(s).intValue();

  5. java 中有几种方法可以实现一个线程?

    继承 Thread 类 实现 Runnable 接口 实现 Callable 接口,需要实现的是 call() 方法

  6. MariaDB CAST语法

    Syntax CAST(expr AS type) Description CAST()函数采用一种类型的值,并产生另一种类型的值,类似于CONVERT函数. CAST()和CONVERT()之间的主 ...

  7. Redis 常见性能问题和解决方案?

    1.Master 最好不要写内存快照,如果 Master 写内存快照,save 命令调度 rdbSave 函数,会阻塞主线程的工作,当快照比较大时对性能影响是非常大的,会间断性 暂停服务 2.如果数据 ...

  8. STM32试题及答案

    一.选择题 1.Cortex-M处理器采用的架构是(  D  ) (A)v4T               (B)v5TE              (C)v6                (D)v ...

  9. Python - 异常处理初步

  10. hackgame2018_签到

    hackgame2018_签到 进入题目得到如下提示 尝试提交 发现这个输入框长度做了限制我们将前端js修改一下 然后提交以下这样就发现了flag这题比较简单--