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

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

  • date: 2022-10-08
  • lastmod: 2022-10-29

一般过程:

  1. 小米路由器开发版ROM+小米路由器开启SSH工具文件:rom官网直接下载,含ssh的则需要小米账号在小米WiFi中绑定路由器
  2. 刷引导(可跳过
  3. 刷固件(系统)

rom-dev ssh

这一步首先是给路由器刷入开发板的 rom,然后开启 ssh。开启无线 ssh 有官方办法,漏洞办法,实在不行就拆机 TTL 跳线办法。

获取官方 ssh 开启固件需要现在小米 WIFI app 中绑定路由器,我重置路由器的时候 app 可以识别到路由器,让我设置,我设置完名称密码后重启就识别不到了,最后发现是因为我网线没到,所以路由器没联网,连上没有网络的网导致 app 无法识别绑定,我的解决办法另外一个设备开热点,小米路由器中继模式,这样 app 就可以识别出来了。

也就是说这个 app 需要在有网的时候才能识别出来路由器进行设置,但这个逻辑是反常的,完全可以不使用互联网就可以识别路由器并在 app 里面进行控制、读取。有个小心眼的猜测是小米偷跑服务了。举个例子,我可以建立一个和互联网断绝的子网,子网内部完全是互通的,但是小米路由器默认不行。。。

【路由刷机教程】适用于带USB的小米路由:我用的是 vfat 格式的U盘也行(以前用ventory处理过的)

FAT或FAT32的U盘;
3.将下载的ROM包复制到U盘的根目录,并重命名为miwifi.bin ,同时确保该目录下不存在其它“.bin”文件,若存在会导致刷机失败;
4.断开小米路由器的电源,将U盘插入路由器USB接口
5.按住reset键,接通电源,等待指示灯变为黄色闪烁状态后松开reset键,路由器开始刷机;
6.等待刷机完成,整个过程约为3-5分钟,完成后系统会自动重启。路由器指示灯变蓝刷机完成;如果出现异常、失败、U盘无法读取的状况,会进入红灯状态,建议重试或更换U盘再试。

小米路由器官方固件/app下载,从固件更新日期可以看出产品最后维护的时间

工具包使用方法:小米路由器需升级到开发版0.5.28及以上,小米路由器mini需升级到开发版0.3.84及以上,小米路由器3即将支持。注意:稳定版不支持。

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

tomsiwik/xiaomi-router-patch:利用 CVE-2019-18370 漏洞开启小米路由器R3G的ssh,漏洞在 2019-03-09 被发现,可以实现无需登录,任意远程命令执行。我测试失败,更换为 dev rom 后成功

acecilia/OpenWRTInvasion :小米路由器 root shell 漏洞。我测试失败,更换为 dev rom 后成功

小米路由器 Pro 刷机教程 Powersee 2022-05-02 :通过py脚本开启ssh、breed、Padavan,一个dd备份命令

小米路由器Pro刷OpenWrt固件 lambdacalculus 2019.10.07:官刷ssh、OpenWrt,没做备份

小米路由器Pro(R3P)刷Padavan固件 2021-08-21 华-尔特 :不一样的 py 代码,检查后发现是bat脚本带动py,原理和手敲代码一样,自动化处理

刷机备份工具 链接:https://pan.baidu.com/s/1jSWhNduNLXH63IRJjrg8CA 提取码:atf8
padavan固件 https://opt.cn2qq.com/padavan/MI-R3P_3.4.3.9-099.trx

检查闪存与备份

先检查闪存品牌和有无坏块

mi 3pro openwrt:尽量使用ESMT的闪存,Micron(镁光)的容易因为坏快变砖

dmesg | grep "Manufacturer ID: "
ESMT chip will have a “Manufacturer ID” of 0xc8, while a Micron chip will have 0x2c

# dmesg | grep "Manufacturer ID: "
[    3.420000] NAND device: Manufacturer ID: 0xc8, Chip ID: 0xda (ESMT NAND 256MiB 3,3V 8-bit), 256MiB, page size: 2048, OOB size: 64

备份

慎重一点,备份以防万一。全备份,看到两种方式 dd、nanddump ,也都尝试。原厂uboot、eeprom

ALL.bin(255.5M) 和 mtd0.bak (263.5M)经过 sha1 校验是不同的文件,尽管两者都是 mtd0 的备份;eeprom.bin 是 mtd4 的备份,看了 createbackup.py 中的代码,全部备份只备份了 mtd0,要么是代码问题,要么是 mtd0 就是全盘备份

备份详细记录

建立文件夹 xmr3p,使用 dd 命令备份到 u 盘 xmr3p/dd;为了对比,也使用 nanddump 备份到 xmr3p/nd.因此 u 盘要留有 1G 的空闲空间存放备份

# cat /proc/mtd	# 读取MTD分区表
dev:    size   erasesize  name
mtd0: 0ff80000 00020000 "ALL"
mtd1: 00040000 00020000 "Bootloader"
mtd2: 00040000 00020000 "Config"
mtd3: 00040000 00020000 "Bdata"
mtd4: 00040000 00020000 "Factory"
mtd5: 00040000 00020000 "crash"
mtd6: 00080000 00020000 "crash_syslog"
mtd7: 00040000 00020000 "reserved0"
mtd8: 00400000 00020000 "kernel0"
mtd9: 00400000 00020000 "kernel1"
mtd10: 02800000 00020000 "rootfs0"
mtd11: 02800000 00020000 "rootfs1"
mtd12: 0a580000 00020000 "overlay"


# df -h	# 根据大小查找 u 盘路径
Filesystem                Size      Used Available Use% Mounted on
rootfs                   19.3M     19.3M         0 100% /
none                    249.1M         0    249.1M   0% /dev
tmpfs                   249.9M      3.6M    246.3M   1% /tmp
/dev/ram0                19.3M     19.3M         0 100% /
tmpfs                   249.9M      3.6M    246.3M   1% /tmp
tmpfs                   249.9M      3.6M    246.3M   1% /extdisks
ubi1_0                  141.3M      6.7M    129.9M   5% /data
ubi1_0                  141.3M      6.7M    129.9M   5% /userdisk
/dev/ram0                19.3M     19.3M         0 100% /userdisk/data
ubi1_0                  141.3M      6.7M    129.9M   5% /etc
/dev/sda1                 7.5G      3.5G      4.0G  47% /extdisks/sda1
/dev/sda2                31.9M     20.3M     11.6M  64% /extdisks/sda2

# cd /extdisks/sda1
# ls
miwifi-dev.bin  breed-mt7621-xiaomi-r3g-r3p.bin  

# mkdir -p xmr3p/dd
# mkdir -p xmr3p/nd
# ls xmr3p/
dd  nd
# cd xmr3p/dd/
# dd if=/dev/mtd0 of=ALL.bin
523264+0 records in
523264+0 records out
267911168 bytes (255.5MB) copied, 90.880289 seconds, 2.8MB/s
# dd if=/dev/mtd1 of=Bootloader.bin
512+0 records in
512+0 records out
262144 bytes (256.0KB) copied, 0.086554 seconds, 2.9MB/s
# dd if=/dev/mtd2 of=Config.bin
512+0 records in
512+0 records out
262144 bytes (256.0KB) copied, 0.086277 seconds, 2.9MB/s
# dd if=/dev/mtd3 of=Bdata.bin
512+0 records in
512+0 records out
262144 bytes (256.0KB) copied, 0.086819 seconds, 2.9MB/s
# dd if=/dev/mtd4 of=Factory.bin
512+0 records in
512+0 records out
262144 bytes (256.0KB) copied, 0.086280 seconds, 2.9MB/s
# dd if=/dev/mtd5 of=crash.bin
512+0 records in
512+0 records out
262144 bytes (256.0KB) copied, 0.086380 seconds, 2.9MB/s
# dd if=/dev/mtd6 of=crash_syslog.bin
1024+0 records in
1024+0 records out
524288 bytes (512.0KB) copied, 0.168056 seconds, 3.0MB/s
# dd if=/dev/mtd7 of=reserved0.bin
512+0 records in
512+0 records out
262144 bytes (256.0KB) copied, 0.086529 seconds, 2.9MB/s
# dd if=/dev/mtd8 of=kernel0.bin
8192+0 records in
8192+0 records out
4194304 bytes (4.0MB) copied, 1.312416 seconds, 3.0MB/s
# dd if=/dev/mtd9 of=kernel1.bin
8192+0 records in
8192+0 records out
4194304 bytes (4.0MB) copied, 1.331081 seconds, 3.0MB/s
# dd if=/dev/mtd10 of=rootfs0.bin
81920+0 records in
81920+0 records out
41943040 bytes (40.0MB) copied, 13.526462 seconds, 3.0MB/s
# dd if=/dev/mtd11 of=rootfs1.bin
81920+0 records in
81920+0 records out
41943040 bytes (40.0MB) copied, 13.473753 seconds, 3.0MB/s
# dd if=/dev/mtd12 of=overlay.bin
338944+0 records in
338944+0 records out
173539328 bytes (165.5MB) copied, 57.000779 seconds, 2.9MB/s
# ls
ALL.bin           Bootloader.bin    Factory.bin       crash_syslog.bin  kernel1.bin       reserved0.bin     rootfs1.bin
Bdata.bin         Config.bin        crash.bin         kernel0.bin       overlay.bin       rootfs0.bin

# cd ../nd
# ls
# nanddump -f mtd0.bak /dev/mtd0
nanddump: warning!: you did not specify a default bad-block handling
  method. In future versions, the default will change to
  --bb=skipbad. Use "nanddump --help" for more information.
nanddump: warning!: in next release, nanddump will not dump OOB
  by default. Use `nanddump --oob' explicitly to ensure
  it is dumped.
ECC failed: 0
ECC corrected: 0
Number of bad blocks: 0
Number of bbt blocks: 0
Block size 131072, page size 2048, OOB size 64
Dumping data starting at 0x00000000 and ending at 0x0ff80000...
# nanddump -f mtd1.bak /dev/mtd1
ECC failed: 0
ECC corrected: 0
Number of bad blocks: 0
Number of bbt blocks: 0
Block size 131072, page size 2048, OOB size 64
Dumping data starting at 0x00000000 and ending at 0x00040000...
r# nanddump -f mtd2.bak /dev/mtd2
ECC failed: 0
ECC corrected: 0
Number of bad blocks: 0
Number of bbt blocks: 0
Block size 131072, page size 2048, OOB size 64
Dumping data starting at 0x00000000 and ending at 0x00040000...
# nanddump -f mtd3.bak /dev/mtd3
ECC failed: 0
ECC corrected: 0
Number of bad blocks: 0
Number of bbt blocks: 0
Block size 131072, page size 2048, OOB size 64
Dumping data starting at 0x00000000 and ending at 0x00040000...
# nanddump -f mtd4.bak /dev/mtd4
ECC failed: 0
ECC corrected: 0
Number of bad blocks: 0
Number of bbt blocks: 0
Block size 131072, page size 2048, OOB size 64
Dumping data starting at 0x00000000 and ending at 0x00040000...
# nanddump -f mtd5.bak /dev/mtd5
ECC failed: 0
ECC corrected: 0
Number of bad blocks: 0
Number of bbt blocks: 0
Block size 131072, page size 2048, OOB size 64
Dumping data starting at 0x00000000 and ending at 0x00040000...
# nanddump -f mtd6.bak /dev/mtd6
ECC failed: 0
ECC corrected: 0
Number of bad blocks: 0
Number of bbt blocks: 0
Block size 131072, page size 2048, OOB size 64
Dumping data starting at 0x00000000 and ending at 0x00080000...
# nanddump -f mtd7.bak /dev/mtd7
ECC failed: 0
ECC corrected: 0
Number of bad blocks: 0
Number of bbt blocks: 0
Block size 131072, page size 2048, OOB size 64
Dumping data starting at 0x00000000 and ending at 0x00040000...
# nanddump -f mtd8.bak /dev/mtd8
ECC failed: 0
ECC corrected: 0
Number of bad blocks: 0
Number of bbt blocks: 0
Block size 131072, page size 2048, OOB size 64
Dumping data starting at 0x00000000 and ending at 0x00400000...
# nanddump -f mtd9.bak /dev/mtd9
ECC failed: 0
ECC corrected: 0
Number of bad blocks: 0
Number of bbt blocks: 0
Block size 131072, page size 2048, OOB size 64
Dumping data starting at 0x00000000 and ending at 0x00400000...
# nanddump -f mtd10.bak /dev/mtd10
ECC failed: 0
ECC corrected: 0
Number of bad blocks: 0
Number of bbt blocks: 0
Block size 131072, page size 2048, OOB size 64
Dumping data starting at 0x00000000 and ending at 0x02800000...
# nanddump -f mtd11.bak /dev/mtd11
ECC failed: 0
ECC corrected: 0
Number of bad blocks: 0
Number of bbt blocks: 0
Block size 131072, page size 2048, OOB size 64
Dumping data starting at 0x00000000 and ending at 0x02800000...
# nanddump -f mtd12.bak /dev/mtd12
ECC failed: 0
ECC corrected: 0
Number of bad blocks: 0
Number of bbt blocks: 0
Block size 131072, page size 2048, OOB size 64
Dumping data starting at 0x00000000 and ending at 0x0a580000...
# ls
mtd0.bak   mtd1.bak   mtd10.bak  mtd11.bak  mtd12.bak  mtd2.bak   mtd3.bak   mtd4.bak   mtd5.bak   mtd6.bak   mtd7.bak   mtd8.bak   mtd9.bak

# dmesg>dmesg.log
# dmesg | grep "bad block"
[    3.440000] Scanning device for bad blocks
# dmesg | less

[AC2100(RM2100)] 适配RM2100的pb-boot正式版(大雕) 2020-5-26 BI4TMS

想要备份路由原厂分区的,可以先在电脑以管理员权限运行/rm2100中的 ftpdmin.exe,之后回到telnet命令行
例如:想备份mtd1分区,就在命令行输入
./busybox nanddump -f mtd1.bak /dev/mtd1	# 备份到文件
./busybox ftpput 192.168.31.177 mtd1.bak ./mtd1.bak	# 
备存文件存在你rm2100文件所在的硬盘根目录。不想备份也可以,我给的文件中有mtd1和eeprom的备份。

注意:保险起见,暂时不要通过pb-boot"固件更新"功能直接刷回官方boot,官方的u-boot有毒!!!刷错锁了串口即使能开机也只能编程器!!!

小米路由器刷入Padavan系统 程屁凹 2018.11.04:官刷ssh、breed、Padavan,14个dd备份命令

nanddump读出nandflash包括坏块 bewinged 2017-11-23

How is erasing MTD with “dd if=/dev/zero” different from “flash_eraseall”? 2016-4-4:MTD 设备不该使用 dd

MTD - openwrt doc

The differences between dd and mtd are … TODO

刷引导

breed

刷 breed 前确认有网线和路由器进行连接,breed 刷固件时不能通过无线连接!!!

把 breed 拷贝到 U 盘,插到路由器上,通过 df -h 查看挂载位置,并进入 U 盘的挂载位置

# ls
System Volume Information        
TDDOWNLOAD	miwifi-dev.bin	xmr3p	breed-mt7621-xiaomi-r3g-r3p.bin

# mtd write breed-mt7621-xiaomi-r3g-r3p.bin Bootloader	# 写入breed.bin
Unlocking Bootloader ...

Writing from breed-mt7621-xiaomi-r3g-r3p.bin to Bootloader ... 
# reboot	# 重启命令
# 刷 bl 失败,还是原装管理界面
# mtd write breed-mt7621-xiaomi-r3g-r3p.bin Bootloader -r	# 写入breed.bin 后重启
# 刷 bl 二失败,还是原装管理界面
# cp breed-mt7621-xiaomi-r3g-r3p.bin /tmp/breed.bin
# mtd -r write /tmp/breed.bin Bootloader
# 刷 bl 三失败,还是原装管理界面

# 使用 OpenWRTInvasion 再破 ssh
# cd /extdisks/sda1/
# mtd write breed-mt7621-xiaomi-r3g-r3p.bin Bootloader -r
# 刷 bl 四失败,还是原装管理界面

# cp /extdisks/sda1/xmr3p/breed-mt7621-xiaomi-r3g-r3p.bin /tmp/breed.bin	
# mtd -e Bootloader write /tmp/breed.bin Bootloader	# 先擦除!!!再刷设备
# 刷 bl 第五次失败,还是原装管理界面

经历了五次失败,决定今天直接刷 openwrt,反正不是镁光的闪存。然而当我刷完 ow,路由器重启后,热点没看到,插网线(今天刚到)没有出现 ow 的界面,ip 也不通,于是按住 reset 断电重启重置,这回 ip ping 通了,打开却是 breed 的界面。

当终端输出Rebooting … 5-10s后,将路由器断电重启,等到路由器出现蓝色灯闪烁时,在浏览器输入 192.168.1.1 后回车,即可进入breed的管理页面。选择固件更新时,可以更新 Bootloader、固件、EEPROM,不过固件备份只支持备份EEPROM和编程器固件。(ps,,为了避免变砖,请勿更新编程器固件)

Breed 更新 Bootloader 有大小限制,超过 512 KB 会提示错误。

当刷入固件之后,再输入这个网址不能进入 breed 了,需要按住 reset 断电重启重置后才能由该网址进入 breed。至于如何卸载 breed 恢复官方固件,在 Powersee 的视频里说的是 由 breed 刷 pb-boot 的 bootloader,然后按住 reset 断电重启进入 pb-boot(192.168.1.1), 选择官方引导,然后将官方开发板固件拷贝 u 盘,重命名,按住 reset 断电重启刷回官方开发固件的(和开头的刷 rom-dev 一样)。

pb-boot

在 Breed 更新 Bootloader 时,上传 pb-boot 固件,更新后断电,按住 reset 重启,5s 后松开,在浏览器输入 192.168.1.1 后回车,即可进入 pb-boot 的管理页面(页面显示的是 PandoraBox)。

这里的选择固件可以是 bootloader. 奇怪的是我上传自己备份的 kernel0.bin、openwrt 下载的 kernel0.bin(和我备份的校验是一样的)、Powersee 提供的 kernel0.bin(和我的校验不一样,但是 Powersee 的闪存和我的是一样的)。总是就是刷了 kernel0, u盘格式化 fat32 复制好 miwifi.bin,断电reset之后也还是 pb-boot。反倒是现在可以在 pb-boot 和 breed 之前反复横跳。然后又根据 pb、breed 的文件大小,我尝试把dd备份时一些体积相似的 bin 也刷过但也无疾而终

相关阅读

Breed 首发地址 breed 引导固件下载地址: Weijie Gao 作品

这是楼主从去年年中自行设计开发的一个全新的 Bootloader,并用于取代 U-Boot。
此 Bootloader 暂取名为 Breed,不是 U-Boot,也不是 U-Boot 的改进版,是全新、独立的、跟 U-Boot 平级的 Bootloader
科普一下:
Bootloader 意思为引导加载器,即为用于加载操作系统的程序。它是一大类此类功能程序的统称。现在的 BIOS、UEFI、GRUB、RedBoot、U-Boot、CFE、Breed 等都是 Bootloader。
因此,还是上面那句话,Breed 不是由什么东西改名出来的,这就是一个新的东西。看着有些人的话我真的觉得很搞笑。
此外,由上面两句话,如果想从 Breed 刷到其他任何 Bootloader,例如 U-Boot,请在 Breed 固件更新页面选择更新 Bootloader。。。。。。。。。。。。
免费、无限制、不开源

【路由器】Breed 介绍、刷入和使用 ywang_wnlo 2022-04-06

Breed 是国内个人 hackpascal 开发的闭源 Bootloader,也被称为“不死鸟”

因为有些官方升级固件自带 bootloader,如果从官方固件升级,会导致现有 bootloader 被覆盖。而当 Breed 更新固件时,它会自动删除固件附带的引导加载程序,因此可以防止 Breed 被覆盖

[R3G] 基于r3g的r3p breed RedLeaves 2020-3-10
根据 https://www.right.com.cn/forum/thread-2590989-1-1.html guo4qing 提供的思路
理论上拿breed-mt7621-hiwifi-hc5962.bin作为本体修改内存参数即可
测试发现r3p刷breed-mt7621-r6220.bin也是可以启动的 波特率57600
pbr-m1的内存参数有5个 确定是哪一个太麻烦了 直接从breed-mt7621-r6220.bin提取ddr3的参数
我的r3p改的双启动,测试应该是没有问题的,但是现在引导pandorabox、openwrt之类启动还有问题
经楼下fyi2000指点,以r3b breed为本体,重新制作了breed-mt7621-xiaomi-r3g-r3p.bin用于r3p
基于r3g魔改breed好处是大部分现有的固件就都可以刷了,无需重新编译

breed-mt7621-xiaomi-r3g-r3p.zip sha1:092082b544a00b47d051c5c4b109edc59ad492dd
不过由于openwrt分区布局的原因,该breed并无法直接刷如固件,需要使用特殊手法刷入
可以参考https://www.right.com.cn/forum/thread-987254-1-1.html
简单的说就在breed刷如内存版的openwrt(刷入kernel0)
重启后进入内存版的openwrt更新固件(更新会被刷入kernel1)
设置breed环境变量xiaomi.r3g.bootfw值为2从kernel1启动

小白请勿轻易尝试哈,全砖之后必须拆机才能救,除非你具备救砖能力,改SPI和镁光NAND双启动的可以随便刷

[R3G] 小米路由器R3G用Breed安装原生OpenWrt详解 MIRROR-D 2019-9-8

小米路由器R3P从潘多拉刷回官方,小白帖 2019-7-30 wanghucehng:kernel0.bin 和 powersee 中一致,与我和openwrt不一致(md5sum)
电脑浏览器进192.168.1.1,上传kernel0,点恢复固件,
等一会儿,大概30秒吧,断电,上U盘【u盘根目录放入miwifi.bin这个文件,这个文件是带uboot的】,
上电,大概5秒【反正就是大概吧,不用那么精确,我都反复刷了好几次】按下reset按钮,指示灯变为黄色闪烁状态后松开reset键;
好像是等个一两分钟,黄灯变蓝【那个灯我觉得真的不是蓝色,不过大家都那么说的,那就是蓝色吧】就OK,

fyi2000 2020-4-24
老毛子已经可以支持R3P,强烈建议刷老毛子,如果要刷回官方,可参考我的签名8楼
pb-boot不能直接刷老毛子,必须先刷潘多拉或OpenWrt,再以 mtd 命令刷老毛子,或是按照以下方法制作兼容pb-boot的固件,老毛子不支持RootFS以后分区有坏块,所以建议先检查闪存有无坏块以及坏块的位置

[PRO(R3P)] 6月4日-小米路由器PRO(R3P)刷入PandoraBox 19.02,测试完美,稳定 laomao9000 2019-6-4:12+2 个dd备份指令。官方开发板刷openwrt以及ow刷回官方的办法

务必用这个PB BOOT,可以支持镁光Miron Nand和EMST NAND,其他breed会变砖!!!

教你简单的方法给路由器刷入不死breed u-boot 只需这三条命令 MT7620 2019-06-11 机电烧卖

mtd -r write /tmp/breed.bin u-boot
mtd_write write breed.bin u-boot
mtd_write write breed.bin Bootloader
mtd -r write /tmp/breed.bin Bootloader
以上四条命令都是刷入breed的,路由器分区表不同命令不同,我也是一个个试出来

路由器刷了不死breed就可以为所欲为了?维修师:姿势不对照样变砖!2021-02-25 猫猫无线

breed 也不是真不死,针对不同闪存芯片效果不一样,也能挂
breed 后刷 openwrt 后升级 ow 在 ow 里面操作,千万不要在 breed 里升级 ow,
不要在 breed 搞编程器固件,变砖警告
主要是NAND有ECC区域,这个也就是不同于NOR闪存的区别。(不懂,看起来很高级)

尝试 scp 上传文件到路由器,失败

```bash
$ scp breed-mt7621-xiaomi-r3g-r3p.bin [email protected]:/tmp/breed.bin  # 将 breedFile.bin 上传到路由器中的 /tmp/breed.bin
[email protected]'s password: 
ash: /usr/libexec/sftp-server: not found
scp: Connection closed
```

小米路由器3刷机教程:刷入潘多拉 和 刷回官方。2020-02-04 蚣蛭艾闽蛛也艾髭鼬

刷回官方
将小米路由器官方固件重命名为miwifi.bin放入fat32格式的u盘

还是需要进入pb-boot界面,在这里刷入Kernel0(潘多拉官方有备份,也可以是个人备份的),系统自动重启后指示灯会闪灭一次,指示灯蓝色闪过后变为黄色常亮,此时断电。或者干脆重启后多喝杯茶,再断电

路由器断电状态下,将u盘插入usb接口

长按重置按钮,通电开机,直至指示灯黄色快速闪烁。

几分钟后你就可以在手机上看到那个消失很久的wifi名称 作者:蚣蛭艾闽蛛也艾髭鼬 https://www.bilibili.com/read/cv4570903/ 出处:bilibili

刷固件

openwrt

由 breed 引导刷 openwrt 有不少麻烦,还容易变砖,先刷回官方开发固件

cd /extdisks/sda1 #(can be different if you remove and reinsert the usb stick)
mv openwrt-ramips-mt7621-xiaomi_mir3p-squashfs-factory.bin factory.bin # give it a shorter name
nvram set flag_try_sys1_failed=1 
nvram set flag_try_sys2_failed=0 
nvram set flag_boot_success=0 
nvram commit
dd if=factory.bin bs=1M count=4 | mtd write - kernel1
mtd erase rootfs0
mtd erase rootfs1
mtd erase overlay
dd if=factory.bin bs=1M skip=4 | mtd write - rootfs0
reboot
实操
# cd /extdisks/sda1
root@XiaoQiang:/extdisks/sda1# ls
System Volume Information  factory.bin                software                   ??                         ???.txt
TDDOWNLOAD                 music                      uc2-tkinter                ??????????????.doc         ??
ThunderDB                  os                         xiaomi_config              ??
root@XiaoQiang:/extdisks/sda1# nvram set flag_try_sys1_failed=1 
root@XiaoQiang:/extdisks/sda1# nvram set flag_try_sys2_failed=0 
root@XiaoQiang:/extdisks/sda1# nvram set flag_boot_success=0
root@XiaoQiang:/extdisks/sda1# nvram commit
root@XiaoQiang:/extdisks/sda1# dd if=factory.bin bs=1M count=4 | mtd write - kernel1
Unlocking kernel1 ...

Writing from <stdin> to kernel1 ...  [e]4+0 records in
4+0 records out
4194304 bytes (4.0MB) copied, 1.867296 seconds, 2.1MB/s
    
root@XiaoQiang:/extdisks/sda1# mtd erase rootfs0
Unlocking rootfs0 ...
Erasing rootfs0 ...
root@XiaoQiang:/extdisks/sda1# mtd erase rootfs1
Unlocking rootfs1 ...
Erasing rootfs1 ...
root@XiaoQiang:/extdisks/sda1# mtd erase overlay
Unlocking overlay ...
Erasing overlay ...
root@XiaoQiang:/extdisks/sda1# dd if=factory.bin bs=1M skip=4 | mtd write - rootfs0
Unlocking rootfs0 ...

Writing from <stdin> to rootfs0 ...  [e]5+1 records in
5+1 records out
5505024 bytes (5.3MB) copied, 2.381508 seconds, 2.2MB/s
    
root@XiaoQiang:/extdisks/sda1# reboot
root@XiaoQiang:/extdisks/sda1# Connection to 192.168.31.1 closed by remote host.
Connection to 192.168.31.1 closed.

第一次刷ow,是刷完 breed 多次失败后直接刷 ow,刷完 ow 固件后很尴尬,用朋友的电脑插上网线发现重置之后是 breed 的引导,ow 没刷上。

刷回官方时候再刷 openwrt 一气呵成,看回简书上的帖子进入 192.168.1.1,root 密码是啥,不知道啊,我以为我蒙root对了,结果是输入啥都可以,没有密码。默认也不开启 wifi,也没有中文语言可选。开 ssh 更新镜像 更新系统 配置无线热点。

网速测试

和 padavan 的测试结果不分伯仲

中国科学技术大学测速网站

MI R3P Padavan 3.4.3.9-099_22-10-1 2022-10-09 16:12:29 下载51.82 Mbps 上传55.30 Mbps

内网测试

一台笔记本(RTL8822CE)连接路由器 5G wifi, 作为 iperf 的服务端。一台台式机(RTL8111/8168/8411)通过一米超五类网线连接路由器,双方防火墙测试时关闭。ip 信息已经剔除。可以 ping 通。TCP 双向可以有 230~560Mbps,UDP 只有 1Mbps。

$ ping ip
PING ip (ip) 56(84) 字节的数据。
64 字节,来自 ip: icmp_seq=1 ttl=64 时间=19.7 毫秒
64 字节,来自 ip: icmp_seq=2 ttl=64 时间=4.85 毫秒
64 字节,来自 ip: icmp_seq=3 ttl=64 时间=126 毫秒
64 字节,来自 ip: icmp_seq=4 ttl=64 时间=148 毫秒
64 字节,来自 ip: icmp_seq=5 ttl=64 时间=172 毫秒
64 字节,来自 ip: icmp_seq=6 ttl=64 时间=54.3 毫秒
64 字节,来自 ip: icmp_seq=7 ttl=64 时间=4.47 毫秒
64 字节,来自 ip: icmp_seq=8 ttl=64 时间=36.5 毫秒
^C
--- ip ping 统计 ---
已发送 8 个包, 已接收 8 个包, 0% packet loss, time 7007ms
rtt min/avg/max/mdev = 4.466/70.718/171.855/63.314 ms

$ iperf -c ip
[ ID] Interval       Transfer     Bandwidth
[  1] 0.0000-10.0589 sec   672 MBytes   561 Mbits/sec

$ iperf -c ip -d
[ ID] Interval       Transfer     Bandwidth
[  2] 0.0000-10.0477 sec   394 MBytes   329 Mbits/sec
[  1] 0.0000-10.0991 sec   286 MBytes   237 Mbits/sec

$ iperf -c ip -u
[ ID] Interval       Transfer     Bandwidth
[  1] 0.0000-10.0155 sec  1.25 MBytes  1.05 Mbits/sec
[  1] Server Report:
[ ID] Interval       Transfer     Bandwidth        Jitter   Lost/Total Datagrams
[  1] 0.0000-9.9865 sec  1.25 MBytes  1.05 Mbits/sec   0.339 ms 0/895 (0%)

$ iperf -c ip -u -d
[ ID] Interval       Transfer     Bandwidth
[  1] 0.0000-10.0153 sec  1.25 MBytes  1.05 Mbits/sec
[ ID] Interval       Transfer     Bandwidth        Jitter   Lost/Total Datagrams
[  2] 0.0000-10.0152 sec  1.25 MBytes  1.05 Mbits/sec   0.052 ms 0/894 (0%)
[  1] Server Report:
[ ID] Interval       Transfer     Bandwidth        Jitter   Lost/Total Datagrams
[  1] 0.0000-9.9977 sec  1.25 MBytes  1.05 Mbits/sec   0.277 ms 0/895 (0%)

Padavan

安装了 breed 后,进入 breed 控制台把潘多拉固件上传即可完成安装。然后连接网络(有线可,无线默认wifi是PDCN,密码1234567890)进入管理页面:http://192.168.123.1/,默认账号:admin,默认密码:admin。(刷机不恢复默认值)

我第二次刷 Padavan 的时候密码就不是默认值了,而是我上一次刷机存的密码,尽管我已经把引导反复刷了好几次

7620老毛子Padavan固件 恩山无线论坛 Padavan固件下载

PandoraBox下载地址,含pb-boot

中国科学技术大学测速网站

MI R3P Padavan 3.4.3.9-099_22-10-1 2022-10-09 16:12:29 下载51.63 Mbps 上传56.23 Mbps

内网测试

一台笔记本(RTL8822CE)连接路由器 5G wifi, 作为 iperf 的服务端。一台台式机(RTL8111/8168/8411)通过一米超五类网线连接路由器,双方防火墙测试时关闭。ip 信息已经剔除。可以 ping 通,服务端开启 web 服务端,客户端可以访问。TCP 双向可以有 220~500Mbps,UDP 只有 1Mbps。看来路由器默认封杀 UDP,但是封杀的话不就是没有速度了嘛

$ ping ip
PING ip (ip) 56(84) 字节的数据。
64 字节,来自 ip: icmp_seq=1 ttl=64 时间=78.2 毫秒
64 字节,来自 ip: icmp_seq=2 ttl=64 时间=101 毫秒
64 字节,来自 ip: icmp_seq=3 ttl=64 时间=21.8 毫秒
64 字节,来自 ip: icmp_seq=4 ttl=64 时间=43.2 毫秒
64 字节,来自 ip: icmp_seq=5 ttl=64 时间=14.5 毫秒
64 字节,来自 ip: icmp_seq=6 ttl=64 时间=88.0 毫秒
64 字节,来自 ip: icmp_seq=7 ttl=64 时间=107 毫秒
64 字节,来自 ip: icmp_seq=8 ttl=64 时间=30.2 毫秒
64 字节,来自 ip: icmp_seq=9 ttl=64 时间=9.19 毫秒
64 字节,来自 ip: icmp_seq=10 ttl=64 时间=74.8 毫秒
64 字节,来自 ip: icmp_seq=11 ttl=64 时间=97.4 毫秒
^C
--- ip ping 统计 ---
已发送 11 个包, 已接收 11 个包, 0% packet loss, time 10016ms
rtt min/avg/max/mdev = 9.185/60.511/107.441/35.596 ms

$ curl ip:8000
.....
  <!-- For Internet -->
  <!-- <script src="//cdn.jsdelivr.net/npm/docsify@4"></script>
  <script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/search.min.js"></script>
  <script src="//cdn.jsdelivr.net/npm/docsify-copy-code/dist/docsify-copy-code.min.js"></script> -->
</body>

$ wget ip:8000
--2022-10-14 21:39:22--  http://ip:8000/
正在连接 ip:8000... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:1886 (1.8K) [text/html]
正在保存至: “index.html.1”

index.html.1                                    100%[=====================================================================================================>]   1.84K  --.-KB/s  用时 0s      

2022-10-14 21:39:22 (76.3 MB/s) - 已保存 “index.html.1” [1886/1886])

$ iperf -c ip
------------------------------------------------------------
Client connecting to ip, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[  1] local ip2 port 41804 connected with ip port 5001 (icwnd/mss/irtt=14/1448/55286)
[ ID] Interval       Transfer     Bandwidth
[  1] 0.0000-10.0532 sec   666 MBytes   556 Mbits/sec

$ iperf -c ip -d
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size:  128 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Client connecting to ip, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[  1] local ip2 port 48748 connected with ip port 5001 (icwnd/mss/irtt=14/1448/3630)
[  2] local ip2 port 5001 connected with ip port 56066
[ ID] Interval       Transfer     Bandwidth
[  1] 0.0000-10.0614 sec   422 MBytes   351 Mbits/sec
[  2] 0.0000-10.0662 sec   268 MBytes   223 Mbits/sec

$ iperf -c ip -u
-----------------------------------------------------------
Client connecting to ip, UDP port 5001
Sending 1470 byte datagrams, IPG target: 11215.21 us (kalman adjust)
UDP buffer size:  208 KByte (default)
------------------------------------------------------------
[  1] local ip2 port 49869 connected with ip port 5001
[ ID] Interval       Transfer     Bandwidth
[  1] 0.0000-10.0154 sec  1.25 MBytes  1.05 Mbits/sec
[  1] Sent 896 datagrams
[  1] Server Report:
[ ID] Interval       Transfer     Bandwidth        Jitter   Lost/Total Datagrams
[  1] 0.0000-9.9964 sec  1.25 MBytes  1.05 Mbits/sec   0.585 ms 0/895 (0%)

$ iperf -c ip -u -d
------------------------------------------------------------
Server listening on UDP port 5001
UDP buffer size:  208 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Client connecting to ip, UDP port 5001
Sending 1470 byte datagrams, IPG target: 11215.21 us (kalman adjust)
UDP buffer size:  208 KByte (default)
------------------------------------------------------------
[  1] local ip2 port 42857 connected with ip port 5001
[  2] local ip2 port 5001 connected with ip port 53089
[ ID] Interval       Transfer     Bandwidth
[  1] 0.0000-10.0155 sec  1.25 MBytes  1.05 Mbits/sec
[  1] Sent 896 datagrams
[ ID] Interval       Transfer     Bandwidth        Jitter   Lost/Total Datagrams
[  2] 0.0000-10.0155 sec  1.25 MBytes  1.05 Mbits/sec   0.103 ms 0/894 (0%)
[  1] Server Report:
[ ID] Interval       Transfer     Bandwidth        Jitter   Lost/Total Datagrams
[  1] 0.0000-9.9944 sec  1.25 MBytes  1.05 Mbits/sec   0.460 ms 0/895 (0%)

搞事情

ssh

高级设置 - 系统管理 - 服务 - 启用 ssh 服务。可以选择密码或者公钥来进行登陆认证

FTP

能够管理用户权限(读/写/禁止),测试了下 sata2usb3.0 通过 5G wifi 传输速度是 40M,还行,比我 bt 下载快多了。

ipv6

我是网线连接上级路由和小米路由,本想着是把 v6 下方,这样子连接 r3p 的设备也有 v6 地址,按照贴吧的进行设置后发现只能路由器有 v6,没法下播,要么就是 r3p 也没有 v6。最后就让 r3p 自己有 v6 就行,能挂 bt 也算达成目的了

在 高级设置-系统管理-服务-其它服务中,可以选择开启natp66来进行v6转发

  • 老毛子PADAVAN固件IPV6设置&上海联通获取PD前缀让局域网设备获取全球唯一IPV6地址 admin 10月 12, 2021:pppoe-nd-01与pppoe-pd-01模式.NAPT66
  • [AC2100(RM2100)] 开启IPv6及老毛子padavan开启IPV6设置 xcl52130 2020-11-17
  • h大老毛子ipv6的wan口地址获取不到 p86391753 2019-2-28
bt 下载

transmission:首先在硬盘新建一个文件夹 transmission,然后到 “USB 应用程序 - 其他设置 - 磁力链接 Transmission”进行开启,然后控制面板在9091端口

# transmission.sh restart
Stopping Transmission:..[  OK  ]
Starting Transmission:.sed: can't move '/mnt/transmission/config/settings.jsonPJwZCh' to '/mnt/transmission/config/settings.json': Permission denied
sed: /mnt/transmission/config/settings.json: Input/output error
[FAILED]

权限不足,那就手动重命名,发现两个都是空文件夹,直接删除
# ls
ls: ./settings.json.tmp.FR7eFB: Input/output error
app                  etc                  settings.json28vRZi  stats.json
bin                  o_p_t.img            settings.jsontKY8FC
# rm settings.json28vRZi/ -r
# rm settings.jsontKY8FC/ -r

# transmission.sh restart
Starting Transmission:.mv: can't stat '/mnt/transmission/config/settings.json': Input/output error
chown: /mnt/transmission/config/settings.json.tmp.FR7eFB: Input/output error
sed: /mnt/transmission/config/settings.json: Input/output error
sed: /mnt/transmission/config/settings.json: Input/output error
[FAILED]

硬盘没有问题啊,ntfs 2T 还能通过 FTP 拷贝影片呢

# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/sda1                 1.8T      1.6T    242.0G  87% /media/P300
/dev/sda1                 1.8T      1.6T    242.0G  87% /opt
# cd /
[MI-R3P-breed /]# cd /mnt/transmission
[MI-R3P-breed /media/P300/transmission]# pwd
/mnt/transmission

已在 usb 应用中关闭 ftp、transmission,网络地图中的 usb 硬盘取消挂载好几次都没有效果,一会变成未挂载,但是硬盘还在转(正常情况下硬盘取消挂载状态是会停止转的)

# fsck
-sh: fsck: not found
# debugfs
-sh: debugfs: not found
# fuser -m /dev/sda1
1 421 423 561 563 649 654 671 678 684 686 706 4077 10462 10531 10638 16724 16793 18639 18751 20559 20592 27614
# fuser -km /dev/sda1
Connection to 192.168.123.1 closed by remote host.
Connection to 192.168.123.1 closed.

emm ssh 断开了,管理控制界面也挂掉了。。看来是这个 k 参数删除了太多重要进程,重启路由器吧

# lsof -n | grep delete 
# transmission.sh start -h
Starting Transmission:./media/P300/
mkdir: can't create directory '/mnt/transmission/downloads': File exists
sed: can't move '/mnt/transmission/config/settings.jsonROHY0O' to '/mnt/transmission/config/settings.json': Permission denied
sed: /mnt/transmission/config/settings.json: Input/output error
Couldn't (re)open log file "/mnt/transmission/transmission.log": Is a directory
[FAILED]
# ls /mnt/transmission/config
ls: /mnt/transmission/config/settings.json.tmp.FR7eFB: Input/output error
app         bin         etc         o_p_t.img   stats.json
# lsof -n | grep delete 
# ls /mnt/transmission -ag
lrwxrwxrwx    1 root            25 Oct  9 15:58 /mnt/transmission -> /media/P300//transmission
# rmdir /mnt/transmission/transmission.log
rmdir: '/mnt/transmission/transmission.log': Not a directory
# rm /mnt/transmission/transmission.log -r
rm: can't stat '/mnt/transmission/transmission.log': Input/output error
# transmission.sh stop

看样子硬盘多少出了点问题,等新硬盘到手把这个盘里的资料挪走先再格式化修复成 ext4,现在还是ntfs

用U盘试验一下,第一次下载目录自动识别到 u 盘,然后下载错误,啥提示也没有,第二次下载保存目录直接出bug,显示undefined。

# cat transmission/transmission.log
Unable to create session lock file (89): Function not implemented (session-id.c:96)
sambda
  • 老毛子/潘多拉/Padavan路由固件设置smb/samba indEmpire 2019.08.26:无法进行分组权限管理
opkg
# opkg.sh
ERROR! Directory "/opt" not mounted!
# mount /media/___е_U__/opt /opt
# opkg.sh
# opkg install iperf
Package iperf (2.1.3-1) installed in root is up to date.
Configuring entware-opt.
ln: /opt/sbin/ifconfig: Operation not permitted
ln: /opt/sbin/route: Operation not permitted
ln: /opt/bin/netstat: Operation not permitted
ln: /opt/bin/sh: Operation not permitted
ln: /opt/bin/ash: Operation not permitted
Collected errors:
 * pkg_run_script: package "entware-opt" postinst script returned status 1.
 * opkg_configure: entware-opt.postinst returned 1.
# ls -g /opt
drwxrwxrwx    2 root          4096 Oct  9 20:31 bin
drwxrwxrwx    4 root          4096 Oct  9 20:27 etc
drwxrwxrwx    2 root          4096 Mar 19  2021 home
drwxrwxrwx    3 root          4096 Mar 19  2021 lib
drwxrwxrwx    2 root          4096 Oct  9 20:27 root
drwxrwxrwx    2 root          4096 Oct  9 20:28 sbin
drwxrwxrwx    4 root          4096 Mar 19  2021 share
drwxrwxrwx    2 root          4096 Oct  9 20:44 tmp
drwxrwxrwx    4 root          4096 Mar 19  2021 usr
drwxrwxrwx    6 root          4096 Mar 19  2021 var
# su
su: unknown user root
# whoami
admin

查了下 padavan 以及梅林的 faq 中也没有类似的问题,暂时找不到解决办法

刷回官方

padavan

看了不少阅读材料之后发现原厂的 kernel0 带了一个功能就是从 u 盘恢复,于是在 breed 刷了 padavan 后开ssh,想把之间备份的 kernel0 刷回去,刷着返回 Could not open MTD device: kernel0 才发现刷了 padavan 之后 mtd 分区表和原厂的不一样了。kernel0 的 erasesize 和 原厂kernel0 一样,但是 size 不一样,这下我就不敢继续刷了

# uname -a
Linux MI-R3P-breed 3.4.113 #2 SMP Mon Oct 3 14:07:10 CST 2022 mips GNU/Linux

# mtd_write unlock kernel0
# mtd_write write kernel0ow.bin kernel0
Could not open MTD device: kernel0

# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00040000 00020000 "Bootloader"
mtd1: 00080000 00020000 "CFG_Bdata"
mtd2: 00040000 00020000 "Factory"
mtd3: 00500000 00020000 "Reserved"
mtd4: 00180000 00020000 "Kernel"
mtd5: 01680000 00020000 "RootFS"
mtd6: 00080000 00020000 "Config"
mtd7: 00400000 00020000 "Storage"
mtd8: 0dd00000 00020000 "RWFS"
mtd9: 01800000 00020000 "Firmware_Stub"
mtd10: 0ff80000 00020000 "ALL"

按住reset断电重启发现没出现 breed,好几次都不行,还好 padavan 还在,就通过 ssh 再次刷入 breed 。这下子就又可以进入 breed 了。

# mtd_write unlock Bootloader
Unlocking 'Bootloader' ...

# mtd_write write breed-mt7621-xiaomi-r3g-r3p.bin Bootloader
Unlocking 'Bootloader' ...
Writing from 'breed-mt7621-xiaomi-r3g-r3p.bin' to MTD 'Bootloader' ...  [ok]

# mtd_write write pb-boot-xiaomi_r3p-20190317-61b6d33.img Bootloader
Unlocking 'Bootloader' ...
Writing from 'pb-boot-xiaomi_r3p-20190317-61b6d33.img' to MTD 'Bootloader' ...  [ok]

## padavan 双清 启用ssh 开启UART以防万一
# nvram set boot_wait=on
# nvram set uart_en=1
# nvram commit

## 进入 pb-boot 刷官方开发固件,黄灯 -> 红灯闪烁。u 盘断电reset重启,黄灯闪烁,还是 pb-boot. padavan 已不见,切换为稳定版固件也是。刷kernel0再刷固件也是。
## 刷会 breed 后刷 padavan 开 ssh 开 uart 使用全备份进行恢复
# mtd_write write ALL.bin ALL
Unlocking 'ALL' ...
Writing from 'ALL.bin' to MTD 'ALL' ...  [ok]

u 盘断电reset重启熟悉的官方回来了,MAC、SN 和标签上都是一样的

openwrt

进入 ssh 运行以下代码

fw_setenv flag_try_sys1_failed 0
fw_setenv flag_try_sys2_failed 1
fw_setenv flag_boot_success 0

关闭路由器,u 盘 固件插上,按住 reset 后插电,直到黄灯闪烁,等待五分钟,静候原装热点出现

Q&A

  1. 刷引导时在刷哪一个分区

Bootloader。无论是刷 breed 还是 pb-boot,刷的都是 Bootloader 分区

  1. eeprom 对应 mtd 中哪一个分区

请教EEPROM是哪个分区 李丑男 2017-12-13

di0506 2017-12-13 Factory分区就是EEPROM

但是我把从 breed 备份出来的 eeprom 和我用 dd 备份出来的 Factory 进行 md5 校验,两者不一样。

  1. 双清是什么意思?

[PRO(R3P)] 小米路由器Pro 超频1200Mhz Padavan固件 酸奶+多拨+流控 2022-3-9 无量天尊:这样可以重置 padavan 的默认密码。因此在 padavan的基础上刷机,还是双清吧。

刷完重启后记得双清
系统管理-配置管理,路由器设置-恢复出厂模式,路由器内部存储-恢复出厂模式

  1. 如何开启 UART/TTL?

小米路由4 拆机 ttl进入shell dawnsky 2019-8-23

通过u-boot修改参数
MT7621 # setenv uart_en 1
MT7621 # setenv ssh_en 1
MT7621 # setenv telnet_en 1
MT7621 # saveenv
MT7621 # boot

小米路由器3 U-Boot TTL 恢复及一些注意事项 ysc3839 2018-3-5

官方/Padavan 固件下执行(boot_wait 开启后会在 Please choose the operation: 这里等待 5 秒):
nvram set boot_wait=on
nvram set uart_en=1
nvram commit

OpenWRT 固件下执行:
fw_setenv boot_wait on
fw_setenv uart_en 1

小米官方固件的恢复模式
许多教程会讲到小米路由器的恢复模式。就是路由器红灯闪烁的时候,插入 U 盘按 Reset 键可以恢复官方固件。我以前曾认为这是 U-Boot 提供的功能,但是通过 TTL 输出的信息来看这是官方固件内核中 initramfs 的功能。
也就是说,如果没有官方固件的内核的话,就没有这个功能了。这也是为什么 OpenWRT 和 Padavan 都不修改 kernel0,因为这样可以直接进入官方固件的恢复模式,然后刷回官方固件。
同时也意味着,用上面 U-Boot 的方法刷入的话,不会包含官方内核,也就无法使用这个功能了。
也因为有这个功能,如果你一开始备份了官方固件中每个 mtd 的数据,那 U-Boot 刷入 mtd8 或 mtd9 就可以进入恢复模式了。
进入恢复模式还有个条件: nvram 中 flag_try_sys1_failed flag_try_sys2_failed 的值都为 1。
在前面提到的提示选择操作的时候,选择 4,然后执行:

setenv flag_try_sys1_failed 1
setenv flag_try_sys2_failed 1
saveenv
  1. TTL 救砖过程?

    在捣鼓ipv6的时候,路由器有公网v6,内网的v6无法联网公网,取消 ULA 前缀 还是不行,卸载 odhcp-v6only 安装 odhcp 也不行,修改了一些接口配置也不行,最后看到某个帖子说的关掉 lan 的 dhcp,然后我试了一下,发现凉了,wifi 还在,但是电脑一连接就会断开,手机的连接上但是并不会在顶部显示 wifi 图标,自动分配的 ipv4 网段十分奇怪,无法从 192.168.1.1 进入后台,用分配 ip 网段的开头、结尾、DNS 服务器的 ip 也没法进入后台,arp-scan 也扫不出来任何结果。官方固件u盘重置也无效,无论是在黄灯快闪、黄灯慢闪时松开reset都不行,最后要么是红色闪烁安全模式、要么是蓝色正常运行,u盘换过,两种固件都试验过了也都无效,最后蓝色下 wifi 也不见,只能靠 ttl,还好之前装好就开启了uart。

    拆开(不太好拆,就不能设计一些无损拆解的嘛),焊接四根排针,用 usb2ttl 接上,重启没有反义,按住重启也没有反应。万用表检查焊接,完美导通。换arduino测试转接板,正常工作。安装 putty 选择 /dev/ttyUSB0 ,也是没有反应。根据上次测试 2.4g 接收器的经历,扫描 /dev 目录,发现插上时新增的设备压根不是 /dev/ttyUSBx,而是十分奇怪的 /dev/serial/by-path/pci-000-usb-0-port0. 用 screen /dev/serial/by-path/pci-000-usb-0-port0 115200 连接上了,感动小宇宙啊,不过发现终端不能上下滚动查看上边输出了啥。无所谓,看下菜单项,都没看完就滚了一大堆,最后不滚了也没有啥提示,这时候一个漫不经心的回车就进入了系统。。。这下子从备份恢复都省了,直接从 openwrt 开启三行代码刷回官方之路。

  2. 刷会官方时 mac 和 sn 怎么恢复的?

    一般刷机后再刷回官方,sn 就无了,而我改了 mac,那么刷回官方之后 mac 不应该还是我修改的那个 mac 吗。但是从官方下的固件包(没有获取用户身份、判定不含mac、sn)从 usb 恢复后,mac、sn都恢复成原样了,按理说从刷机前的备份恢复有这种可能性,但是事实就是如此。推测是 第三方系统修改 mac 时并不真正修改 mac,只是做了一个映射,骗过上下级网络足矣,而 sn 可能是保留在某个只读存储器里边。

相关阅读

小米R3P刷入魔改版Breed并刷入Lean最新源码固件教程 wifi之路 • 2020年12月9日:其外部链接解释了r3p的breed固件来源

路由器篇:小白必备小米路由器PRO(R3P)刷机+避坑教程(OpenWrt&Pandora)2021/03/11

2019-09-13 K3c如何备份MTD分区

刷前必须备份mtd0-16除data_vol,不备份的我也救不了你

一台路由器引发的血案 2022-06-24:小米路由器PRO 型号R3P 不刷breed后升级用 ttl 救砖记录,起初在酷安看到的,文章日期是 6.28 by 腕豪,但是搜索引擎进不去酷安,就找了个bing能搜到的

[Redmi AX6] [0825:AC2100新固件有效AX6无效]AX3600/AX1800/AX5/AC2100官方固件开启SSH方法[原创] LonGDikE 2020-5-26:小米路由器Pro 2.16.29 测试返回的是 No page is registered,此路不通

昨天终于找到漏洞,web注入方式,不过该漏洞在最新版本应该已经堵上了 

有漏洞固件,AX3600 1.0.17版本/AX1800 1.0.34/1.0.328/1.0.336版本/AX5 1.0.16/1.0.26/AC2100 2.0.722版本,AX1800 1.0.34,1.0.328, 1.0.336仍然有效, 红米AX5 1.0.16版本
管理密码登录管理页面: http://192.168.31.1/cgi-bin/luci/;stok=/web/home#router
改nvram设置ssl_en=1的: http://192.168.31.1/cgi-bin/luci/;stok=/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3Bnvram%20set%20ssh%5Fen%3D1%3B%20nvram%20commit%3B
一步到位代码: http://192.168.31.1/cgi-bin/luci/;stok=/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3B%20nvram%20set%20ssh_en%3D1%3B%20nvram%20commit%3B%20sed%20-i%20’s%2Fchannel%3D.*%2Fchannel%3D%5C%22debug%5C%22%2Fg’%20%2Fetc%2Finit.d%2Fdropbear%3B%20%2Fetc%2Finit.d%2Fdropbear%20start%3B
改root账号密码为admin: http://192.168.31.1/cgi-bin/luci/;stok=/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3B%20echo%20-e%20’admin%5Cnadmin’%20%7C%20passwd%20root%3B

【小米路由器SSH】小米路由器官方ROM强制打开SSH功能并配置静态路由(适用于AX1800、AC2100等型号)2022-01-23 404NotFound:和上面恩山的一样

[PRO(R3P)] 最新R3P从OPENWRT刷回原厂 mingwei123 于 2021-9-7

新方法:
1、从小米下载开发固件,并将其重命名为miwifi.bin放到U盘(FAT/FAT32)根目录。
2、打开WINSCP,上传kernel0.bin(原厂固件里备份出来的)到路由器/tmp目录下。
   然后SSH连接到路由器输入
   cd /tmp
   mtd write kernel0.bin kernel
3、拔掉电源将U盘插到路由器。
4、重新插入电源,按住复位键等待黄灯闪烁再松开复位键,等待5分钟安装固件。

kernel0.bin文件下载:
链接:https://pan.baidu.com/s/1uJWBxTMTHGK1B4eKeTqj-A
提取码:uu6i

在小米路由器mini上安装Transmission挂BT/PT 帥氣的胖紙鍋 2016-01-26:opkg

cygnus-x1 08-15-2006 03:55 PM Cannot stat Input/Output error:debugfs

ls 命令出现 Input/output error 解决思路 LowCoder 2020-03-11

```bash
解决办法思路:
1.lsof、fuser命令查找出还在损坏磁盘进行读写的进程,全部杀掉
2.umount -l 卸载磁盘
3.xfs_repair修复磁盘
```

Linux 强制卸载硬盘 (Device is busy)

fuser -m -k -i -v /mnt/hdd0

lsof查看占用高_lsof解决磁盘占用过高,查询却无大文件处理一例!时常抠脚的隔壁老 2021-01-16

“就是在Linux的文件系统中删除一个文件,系统并不会真的立刻把这个文件丢弃掉,而只是把它从文件的目录系统中移除, 只有确保所有使用这个文件的程序全部都退出后,才会真的把文件彻底删除掉。”

linux磁盘或内存被占用问题——lsof -n | grep delete的使用 飞天小老头 2021-03-25

lsof -n | grep delete kill -9 pid

[lsof]lsof查看哪些设备/文件被占用或者打开

hiboy-padavan使用opkg安装tmux教程 书三四 2021-10-07

安装okpg: opkg.sh升级opkg: opkg update

新路由3老毛子Padavan固件opkg命令-sh: opkg: Permission denied无法使用解决方法,Padavan固件opkg.sh无法使用

能解决问题就是看到日志中一直在提示下载 opt.gz文件,但是分区/opt空间不足,一直报错

Unable to create session lock file: Invalid argument (session-id.c:96) #1391 9 Aug 2020

Fixed by #2629.

build: use -DHAVE_FLOCK in the macOS Xcode build #2629 15 Feb 2022:半年前解决的问题,现在还存在,可能是现在我用的版本太旧了

[PRO(R3P)] 小米PRO普通版,现在刷什么固件最稳定?黄先生的账号 2022-10-14

[PRO(R3P)] 【2022-06-11】R3P 闭源无线+SDK硬件加速驱动+多拨 Openwrt,pb boot直刷 2022-6-11 237176253

固件源码https://github.com/padavanonly/immortalwrt

[PRO(R3P)] 6月4日-小米路由器PRO(R3P)刷入PandoraBox 19.02,测试完美,稳定 2019-6-4 22:16 laomao9000

[PRO(R3P)] R3P-自编译openwrt R22.5.5 -6.10 一条寂寞的鱼 2022-6-10

https://github.com/coolsnowwolf/lede

[PRO(R3P)] R3P支持PB-boot的基于4.4内核padavan来啦~ :8258252 提到 4.4 upnp有问题,打不开

[PRO(R3P)] 小米路由器pro r3p 最全最新openwrt固件及全套插件库 2021/7/3 openwrtr3p

https://github.com/coolsnowwolf/lede
包含openwrt所有插件300M.无法识别USB 如U盘 硬盘 是不是没有安装 kmod-usb-storage kmod-usb-storage-extras

[PRO(R3P)] 小米R3P 魔改Breed 多种内存频率 PandoraBox lyh802 2021-10-21 22:44

pangubox r3p 的备份 2018

[PRO(R3P)] 小米路由器R3P拆机_NAND改SPI(内含高清图慎入) 2018-11-13 zyguowei

[PRO(R3P)] 【20220701:每周六更新】固件发布 R3P OP (小米路由 3 Pro) 2020-8-28 然后七年

【教程】亲测小米路由器3成功从padavan刷回原厂固件 ago 2017-5-30 :原厂固件自带usb恢复功能

PROMETHEUS 俄罗斯作品:Xiaomi MI-MINI, MI-NANO, MI-3 ASUS…代码也不是很长
原理是修改数据强制 UBoot 进入恢复模式(小米官方固件自带的功能),然后插 U 盘就可以恢复了。

小米路由器R3G刷回原厂固件 2022-05-24 奔跑的咸鱼:512KB 的bl。刷完原厂bl之后还有breed?原厂bl不会覆盖掉breed吗?实验结果表面到刷原厂固件的时候,breed 无法识别固件类型,没法更新固件。原厂 bootloader 和 eeprom 都可以更新。

进入breed控制台 -> 更新固件 -> 常规固件,勾选Bootloader选择下载好的小米原厂Bootloader,点击上传按钮
进入breed控制台 -> 更新固件 -> 常规固件,选择之前下载好的小米原厂固件,点击上传按钮

[小米其它型号路由器] 小米路由器3从第三方固件刷回官方固件 醉老仙 2020-5-8:试验了下好像不太行,可能是型号问题

当前为pandorabox、X-wrt、openwrt刷回官方,uboot为pb-oot
进入pb-boot刷官方固件包
完成后执行U盘刷机
下载官方固件,放在u盘根目录,命名为miwifi.bin
路由器断电,插入U盘,插电,按住reset,等待指示橙色慢闪后松开

[UBOOT-TTL]小米路由器救砖或刷机指南(R3P为例) 不l明l白 2020.07.02

你可能感兴趣的:(study,网络)