小米 R3G 参数

市面上有R3G和R3Gv2两种型号, 注意区分, 后者是缩水版, 没有USB口. 内存只有128M, Flash只有16M. 这里描述的只适用于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

R3G实物和拆机图

外观

接口

背面

PCB

路由器刷入开发板ROM并开启SSH

为了写入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的密码, 在刚才下载工具包的界面上

如果ssh连接遇到错误

Unable to negotiate with 192.168.31.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1,diffie-hellman-group14-sha1

需要手动指定oKexAlgorithms

ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 root@192.168.31.1

备份

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

如果只是使用 OpenWrt, Breed 起到的作用不大, 因为不能直接用Breed写入OpenWrt的官方固件(分两个文件, kernel和rootfs), 但是Breed最好还是要有, 至少在刷固件出问题后, 还能不拆机换成其他带ssh的固件救砖.

写入步骤

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

使用winscp

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

使用scp命令

scp -oKexAlgorithms=+diffie-hellman-group1-sha1 "somewhere/breed-mt7621-xiaomi-r3g.bin" root@192.168.31.1:/tmp/

执行命令

mtd -r write /tmp/breed.bin Bootloader

写入完成后会自动重启, 注意, 这时候直接重启是无法进入小米系统的, 因为Breed里还有个参数没设置.

看灯变紫色后直接拔掉电源, 拿牙签回形针之类的东西顶住reset孔加电, 看到灯快速闪烁的时候再松开reset孔. 这时候路由器就已经进入了Breed系统. 在电脑的命令行cmd中通过ipconfig查看IP, 能看到电脑获取到192.168.1.x之类的IP. 在浏览器中访问192.168.1.1 就可以进入breed控制台.

配置 breed

  1. 在小米 R3G 设置中, 删除normal_firmware_md5这个键值, 因为刷新刷的固件 md5 值与原来的不一致会导致无法开机(删了, 不删是否不能开机未验证)
  2. 在环境变量编辑中, 添加一个环境变量, 变量名为 xiaomi.r3g.bootfw, 值为2. 这个必须要设置, 否则进不去原来的小米系统.
  3. 然后拔电再加电重启路由器, 之后就会进入小米系统, 需要在ssh下写入OpenWrt.

参数说明 xiaomi.r3g.bootfw

如果写入 Breed 到 bootloader, 这个参数是必须的. Breed的启动流程如下

  1. 如果 kernel0 存在, 那么启动 kernel0
  2. 如果 kernel0 不存在, kernel1 存在, 那么启动 kernel1
  3. 如果 kernel0 和 kernel1 都存在, 则检查环境变量 xiaomi.r3g.bootfw 的值, 如果存在且值为2, 那么启动 kernel1, 否则启动 kernel0

如果通过mtd写入了OpenWrt 到Kernel1, 但是不写这个环境变量, Breed就会从kernel0启动, 无法进入系统, 然后重启, 再次从kernel0启动, 这样一直循环下去.

写入固件

因为小米R3G的存储使用的是NAND, 和普通的路由器不一样, 所以写入方式不太一样.

单文件固件

对于单文件的第三方固件, 包括官方的固件, 可以和以往的固件一样, 启动到 Breed 界面下, 在界面中直接上传刷入.

OpenWrt 20.02

对于 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文件, 按之前的方法通过winscp或者scp命令上传到 /tmp 目录下,执行下面的命令写入固件

cd /tmp
# 写入第二个kernel分区, 如果写入第一个目标是 kernel0
mtd write openwrt-ramips-mt7621-mir3g-squashfs-kernel1.bin kernel1
# 写入rootfs分区
mtd write openwrt-ramips-mt7621-mir3g-squashfs-rootfs0.bin rootfs0
# 直接reboot
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变量进行控制

参考

  • 详细的刷机写入方法(英文) https://openwrt.org/toh/xiaomi/mir3g
  • OpenWrt 20.02.2 配置 Wireguard https://www.cnblogs.com/milton/p/16124871.html

小米路由器3G R3G 刷入Breed和OpenWrt 20.02.2 的记录相关推荐

  1. 小米路由器Pro R3p 刷机 Breed Padavan OpenWrt UART/TTL 救援

    小米路由器Pro R3p 刷机 Breed Padavan OpenWrt UART/TTL 救援 date: 2022-10-08 lastmod: 2022-10-29 一般过程: 小米路由器开发 ...

  2. 小米路由器3G(R3G)刷潘多拉

    刷机流程: 1.原版路由器先刷官方开发版ROM(开发版才能打开ssh通道)小米路由器ROM 登录路由器后台→系统升级→刷入:也可以按照官方提供的方法刷入 2.进入小米wifi开放中心,绑定路由器,下载 ...

  3. 小米路由器3G刷固件Padavan_小米路由器3G刷Breed

    本文授权转载,原文地址 http://www.leftso.com/blog/752.html 首先来张小米路由器3G照片正楼,Padavan约等于华硕梅林远房亲戚也就是联发科版本.也可以说叫小米路由 ...

  4. JCG836pro路由器刷入breed

    JCG836pro路由,刷了Padavan固件,无法长按reset键进入breed界面,应该是该固件下不支持此操作,所以,需要自己刷入breed. 没有breed刷固件还是不够安全.虽然这个路由器适配 ...

  5. 小米路由器mini 半自动刷机进入breed(无需U盘刷机)

    过程参考 小米路由器mini刷Breed,安装固件教程_SUNYZ0525的博客-CSDN博客_小米mini刷机 以及 小米路由器mini刷padavan - 哔哩哔哩 整合了一下刷机过程,可以略去很 ...

  6. 小米路由器3G建站折腾笔记2 - 刷ROM和开启SSH

    小米路由器3G建站折腾笔记1 - 引言与路由器选择 小米路由器3G建站折腾笔记2 - 刷ROM和开启SSH 小米路由器3G建站折腾笔记3 - 网站架构选择 小米路由器3G建站折腾笔记4 - 安装opk ...

  7. 嵌入式系统之-小米路由器3G v1

    嵌入式系统之-小米路由器3G v1 相关汇总:嵌入式系统系列目录 第一篇 嵌入式系统之-小米路由器3G V1 第二篇 - 未完待续,欢迎收藏关注. 目录 嵌入式系统之-小米路由器3G v1 前言 一. ...

  8. 小米路由器青春版装linux,小米路由器青春版刷机教程

    如今的小米路由器跟很多智能设备一样,都可以进行刷新刷机,升级固件,但一般刷机是有比较大风险的,要谨慎操作,下面是学习啦小编整理的小米路由器青春版刷机教程,仅供参考,小心刷机! 小米路由器青春版刷机教程 ...

  9. 路畅畅云固件升级教程_斐讯K2P MTK版简单几步刷入breed教程,附刷第三方固件方法...

    教程适用于 K2P MTK版本(A1/A2).教程转载自恩山 1.检查路由固件版本,是否V22.8.5.189或V22.10.2.24,版本低于22.8.5.189就手动上传升级一下. 2.下载辅助工 ...

最新文章

  1. getDeclaredField(x);与set方法的用法
  2. python开发桌面软件-python适合开发桌面软件吗?
  3. 人工智能火热,该如何学Python呢?
  4. 2.7 Client Commands and SQL Statements
  5. 震惊kafka_5个令人震惊的统计数据证明日志不足
  6. eclipse 代码上传github 笔记
  7. Android入门(11)| 全局广播与本地广播
  8. flask+uswgi+nginx+python3.6的venv发布网站ubuntu14.04
  9. (day 34 - 哈希表 or 双指针 )剑指 Offer 57. 和为s的两个数字
  10. ubuntu 时间戳不对
  11. 三峡大坝水位落差达40层楼高,船舶要如何翻越?
  12. 这十本书有望成为第四届橙瓜网络文学奖年度十大玄幻作品!
  13. 日常使用的图片文件格式及各自的区别,JPG/PNG/GIF/RAW/WebP/HEIC
  14. C盘100G不够,如何用D盘(或者E、F)空间给C盘扩容?
  15. 计算机运行慢提速小技巧,教你为Win7系统加速的五个技巧
  16. 0x0000004e蓝屏代码解决教程
  17. 华为8.19笔试题目分析
  18. 什么是企业防火墙,什么是策略?
  19. Python练习-爬虫(附加爬取中国大学排名)
  20. vulnhub-Momentum2

热门文章

  1. [book]《心流:最优体验心理学》
  2. 浅谈XPS文件格式。
  3. 初识CMake,如何编写一个CMake工程(下)
  4. 具有编码能力的可展开结构人造肌肉
  5. pyTorch入门(五)——训练自己的数据集
  6. 计算机毕业设计Java传统文化知识竞赛系统(源码+系统+mysql数据库+lw文档
  7. 精准身份证号验证的具体实现方法 校验码计算逻辑
  8. 牛叔说电影-社会底层是怎样炼成的
  9. 职场必知的十条“钻石”心态
  10. 数学乐 --- 科学计数法(个人学习笔记)