1个月前
4A千兆V1从无限重启到只能进入bread,然后成功了
增加一个变量:变量名:autoboot.command,值为:boot flash 0x180000
:所以现在判断基本明确
不是你不会刷,也不是单纯固件坏了,而是:
你的 Breed Web 刷机页面布局选项不适合这台 4A 千兆版当前方案
启动地址是 0x180000
但 Web 刷机只能按 0x50000 / 0x60000 / 0x40000 ... 这种模板写
结果就是 写入位置和启动位置不一致
现在最稳的思路
你接下来别继续反复换 OpenWrt 文件了,优先走这两个方案之一。
方案一:用 Breed 命令行手动写入 0x180000
### **按你现在的情况,最稳的是用 Breed 命令行把固件手动写到 `0x180000`。**
下面我按你当前环境,给你一份尽量直白的步骤。你先完整看一遍,再动手。
### **先说风险点**
这一步比网页上传风险高一点,但你现在还能进 Breed,所以总体还在可救范围内。
操作时注意三件事:
1. **全程用网线**
2. **不要断电**
3. **不要写错地址**
你这次只动 **固件区**,不动:
- Bootloader
- EEPROM
### **你的当前前提**
从你前面的信息看,你现在基本满足条件:
- 路由器是 **小米路由器 4A 千兆版 MT7621**
- 电脑地址是 **192.168.1.3**
- Breed 能打开
- 已设置:
```text
autoboot.command = boot flash 0x180000
```
### **第 1 步:把固件放到电脑上并开本地 HTTP 服务**
你要准备这个文件:
```text
openwrt-24.10.0-ramips-mt7621-xiaomi_mi-router-4a-gigabit-squashfs-sysupgrade.bin
```
把它放到一个单独文件夹,比如:
```text
D:\r4a
```
然后在这个文件夹里开一个最简单的 HTTP 服务。
#### **如果你电脑装了 Python**
在这个目录打开命令行,执行:
```bash
python -m http.server 80
```
如果这个不行,再试:
```bash
py -m http.server 80
```
如果 80 端口提示权限或占用问题,可以用 8000:
```bash
python -m http.server 8000
```
或者:
```bash
py -m http.server 8000
```
开起来以后,你电脑上的下载地址就会像这样:
如果是 80 端口:
```text
http://192.168.1.3/openwrt-24.10.0-ramips-mt7621-xiaomi_mi-router-4a-gigabit-squashfs-sysupgrade.bin
```
如果是 8000 端口:
```text
http://192.168.1.3:8000/openwrt-24.10.0-ramips-mt7621-xiaomi_mi-router-4a-gigabit-squashfs-sysupgrade.bin
```
#### **先验证一下**
你可以先在自己电脑浏览器里打开这个地址,看看是不是能下载这个 `.bin` 文件。
如果浏览器能下,说明这一步 OK。
### **第 2 步:进入 Breed 命令行**
不同 Breed 版本进入命令行的方式略有差异,常见是 **telnet 到 192.168.1.1**。
你在 Windows 里可以这样试。
先启用 Telnet 客户端,然后打开命令提示符,输入:
```cmd
telnet 192.168.1.1
```
如果能进去,会出现 Breed 命令行提示。
如果提示 telnet 不是内部命令,先启用 Windows 的 Telnet 功能:
控制面板 → 程序 → 启用或关闭 Windows 功能 → 勾选 **Telnet 客户端**
### **第 3 步:在 Breed 里下载固件到内存**
如果你 HTTP 服务开在 80 端口,执行:
```text
wget http://192.168.1.3/openwrt-24.10.0-ramips-mt7621-xiaomi_mi-router-4a-gigabit-squashfs-sysupgrade.bin
```
如果你开在 8000 端口,执行:
```text
wget http://192.168.1.3:8000/openwrt-24.10.0-ramips-mt7621-xiaomi_mi-router-4a-gigabit-squashfs-sysupgrade.bin
```
正常情况下,Breed 会显示类似:
```text
Length: xxxxxxxx
Saving to address 0x80001000
```
这里你重点记住两样东西:
1. **文件大小**
2. **保存地址**,通常像这样:
```text
0x80001000
```
如果你看到的保存地址不是 `0x80001000`,后面的写入命令就要以你实际看到的地址为准。
### **第 4 步:擦除固件区**
你前面看到文件大约 6.88MB,换算后大概不到 `0x700000`。为了保险,擦除范围可以给大一些,但不要乱大到碰别的关键区。
一般按你这台机子的情况,可以先用:
```text
flash erase 0x180000 0x800000
```
含义是:
- 从 `0x180000` 开始擦
- 擦除 `0x800000` 大小
这通常够覆盖你的 OpenWrt 固件区。
### **第 5 步:把固件写入 `0x180000`**
如果刚才 `wget` 显示:
- 固件保存地址是 `0x80001000`
- 文件大小你自己实际看到是多少
那写入命令格式是:
```text
flash write 0x180000 0x80001000 文件大小
```
比如,如果实际大小是你前面截图里的:
```text
7209584
```
把它换成十六进制大概是 `0x6e0000` 左右。最稳妥的方法是**按 wget 输出里的十六进制大小来填**,不要自己瞎估。
例如如果 wget 结果显示:
```text
Length: 7209584/0x6e0000
Saving to address 0x80001000
```
那就写:
```text
flash write 0x180000 0x80001000 0x6e0000
```
如果显示的是别的长度,比如:
```text
Length: 7209584/0x6e0000
```
就以它显示的十六进制数为准。
### **第 6 步:手动启动**
写完后,先不要急着重启整机,先直接尝试:
```text
boot flash 0x180000
```
如果顺利,路由器就应该开始启动 OpenWrt。
### **第 7 步:等待并访问后台**
等 2 到 5 分钟。
然后电脑还是保持现在网段,比如:
```text
192.168.1.3
```
浏览器访问:
```text
http://192.168.1.1
```
如果出现 OpenWrt 界面,就成功了。
### **第 8 步:确认自动启动变量**
如果已经成功进 OpenWrt,以后正常重启也要从这里启动,所以你保留这个环境变量:
```text
autoboot.command = boot flash 0x180000
```
这个你前面已经设好了。
### **你执行时,推荐照着这个顺序抄**
假设你 HTTP 服务用的是 8000 端口,那么大概是:
```text
telnet 192.168.1.1
wget http://192.168.1.3:8000/openwrt-24.10.0-ramips-mt7621-xiaomi_mi-router-4a-gigabit-squashfs-sysupgrade.bin
flash erase 0x180000 0x800000
flash write 0x180000 0x80001000 这里填wget显示的十六进制文件大小
boot flash 0x180000
```
### **最重要的一句**
`flash write` 这条命令里,最后那个“文件大小”**一定按 wget 实际显示的十六进制值填**,不要凭感觉写。


