记录几次失败的OpenWrt 安装过程
技术 OpenWrt 9

配置

  • 路由器:R4A
  • bootloader:breed

安装记录

新入二手 小米路由4A 千兆版,刷入OpenWrt 过程记录,刷机过程不分先后,其中有交叉情况(一个系统前后刷了几遍),将看到的论坛帖子、博客内容在此记录总结一下。

Breed

暂略。
安装的breed 版本是breed-mt7621-pbr-m1.bin(r1338)

OpenWrt with openclash

待完善

OpenWrt 官方镜像

刷机方法

在官网直接下载的镜像,现在用的版本是21.02.1。使用的breed 的话,如果安装官方的镜像的话,会导致无线重启,原因大概是内存分区信息不对。
以下是刷机方法:

  1. 搭建一个本地web 服务器,将官方镜像放上去
  2. 网线接电脑,进入breed 之后,使用telnet 连接路由
  3. 使用wget 将官方镜像下载到路由器中,下载完后,控制台会显示当前镜像存放的位置(应该是0x80001000),以及当前镜像的大小(大概是0x580270左右,5M)
  4. 擦除闪存分区。breed 引导的位置为0x180000,因此擦除从0x180000开始的大于镜像大小的闪存空间flash erase 0x180000 0x60000
  5. 将镜像写到引导开始处。(将位于0x80001000的0x580270大小的数据写到0x180000处。)flash write 0x180000 0x80001000 0x580270
  6. 在breed 网页版增加环境变量(需要先开始环境变量,重启后就能修改环境变量了)
    • 字段:autoboot.command
    • 值:boot flash 0x180000
  7. 刷入eeprom,否则5g Wi-Fi 信号不行(刷了也不一定行,详见后文)
  8. 在控制台重启boot flash 0x180000
    至此,应该就是可以正常进入openwrt,并且不会无限重启了

主要参考文献:
终于解决了breed刷机后不能正常启动的问题 - 小米无线路由器以及小米无线相关的设备 - 恩山无线论坛 - Powered by Discuz!
小米路由器4A千兆版 折腾记录 20211212更新 完美刷入官方openwrt - 小米无线路由器以及小米无线相关的设备 - 恩山无线论坛 - Powered by Discuz!

其他问题

刷机后,可能还会有一个问题,即使在breed 刷入了eeprom 之后,Wi-Fi信号可能还是有问题

  • 验证
    Ssh 登录openwrt 后台,查看内存分区信息cat /proc/mtd
root@OpenWrt:~# cat /proc/mtd 
dev:    size   erasesize  name
mtd0: 00030000 00010000 "u-boot"
mtd1: 00010000 00010000 "u-boot-env"
mtd2: 00010000 00010000 "Bdata"
mtd3: 00010000 00010000 "factory"
mtd4: 00010000 00010000 "crash"
mtd5: 00010000 00010000 "cfg_bak"
mtd6: 00100000 00010000 "overlay"
mtd7: 00e80000 00010000 "firmware"
mtd8: 00241f43 00010000 "kernel"
mtd9: 00c3e0bd 00010000 "rootfs"
mtd10: 00920000 00010000 "rootfs_data"

其中mtd3 应该为eeprom 的位置。但是此时openwrt 中的eeprom 位置位于mtd2 中,即Bdata 中。
可以通过分别计算/dev/mtd2/dev/mtd3以及自己上传的eeprom 文件的md5 值来方便的确认。我的结果是mtd2 的md5 值和上传的eeprom 的md5 值相同,而和mtd3 计算出的md5 值不同。
此外,我也通过直接对比二进制文件值再次确认过,在此记录一下对比的过程:
1. 将/dev/mtd2/dev/mtd3导出到电脑中。 dd if=/dev/mtd2 of=/tmp/mtd2
2. 通过scp 等工具将/tmp/mtd2拉到电脑中
3. 可以直接使用vi 查看二进制文件vi mtd2,在加上命令::%!xxd可以更直观的查看文件内容
4. 对比后,可以验证eeprom 文件被写到了Bdata的位置,而不是factory

  • 解决
    1. openwrt 安装扩展程序kmod-mtd-rw
    2. 将准备写入的eeprom 文件上传到tmp 文件夹中(例/tmp/eeprom.bin)
    3. 载入kmod-mtd-rw 模块insmod mtd-rw.ko i_want_a_brick=1
    4. /tmp/eeprom.bin刷写到factorymtd write /tmp/eeprom.bin factory
  • 验证成果
    在网络-无线,编辑5g Wi-Fi的页面,应该可以看到最大传输功率由原先的1dBm 现在最大可以达到20dBm

主要参考文献:
记一次路由器刷出问题修复过程 | rain的随笔
只要有openwrt就行,在各种不同官方或自制的openwrt版中刷uboot和art - OPENWRT专版 - 恩山无线论坛 - Powered by Discuz!

ps. 在此特别感谢此部分第一篇博客的作者,在我为Wi-Fi 信号折腾的死去活来的时候,偶然Google 到了这篇博客,看完并且验证之后,彷佛看到了黑暗中的一丝光明,一扫我连日来许多次折腾并失败后心中积累的阴霾,庆幸之至,感激不尽

OpenWrt 自编译镜像

待续

Lede 自编译镜像

待续

记录几次失败的OpenWrt 安装过程
https://halo.persipa.site/2022/0406
作者
Persipa
发布于
更新于
许可