hackpascal 发表于 2015-9-22 02:31

关于 Breed 刷新版 UBNT 固件的一点说明

本帖最后由 hackpascal 于 2015-9-25 01:45 编辑

不知从什么时候起,UBNT 开始在其固件中加入了设置 Flash 写保护的功能,此写保护在 Flash 断电后依然存在,可通过向 Flash 发送清零状态寄存器的指令来解除写保护,或者通过编程器来解除写保护。

楼主在开发 Breed 之初并未预料到会有固件会进行这样的设置,但 UBNT 确实这么做了,很恶心。

在 UBNT 固件设置了 Flash 写保护后, Bootloader 必须在每次启动固件前解除 Flash 写保护,否则固件无法正常启动。

Breed 很快跟进,加入了清除 Flash 写保护的功能,因此能够启动最新的 UBNT 固件。

以下为重点:

如果是老版的 Breed 遇到了设置写保护的固件,那么从 Breed 里面将无法进行任何更新操作,包括升级 Breed,唯一的办法就是使用替换了 U-Boot 的 UBNT 升级固件来更新最新版的 Breed。

但是。。r766 之前的 Breed 有个小缺陷,即不会检查 UBNT 所使用的 u-boot-env (U-Boot 环境变量) 的有效性。

这会导致一个问题,即如果 Flash 中没有有效的 u-boot-env (例如从空白的 Flash 刷 UBNT、用编程器刷 UBNT 固件工具生成的编程器固件、先刷 TP-LINK 固件再刷 UBNT 固件),那么从 UBNT Web 升级固件将会失败。失败的表现是 UBNT 升级页面出现 -117 的错误码。

如果存在这个问题,恰好又使用了老版 Breed 刷入了新版带写保护的固件,那么。。请看下文的终极解决办法;否则可以通过刷替换 Breed 的 UBNT 升级固件来解决此问题。

最新的 Breed r766 修复了 u-boot-env 问题,每次更新时都会自动处理此部分;UBNT 固件工具也已更新,会在生成编程器固件时自动加入 u-boot-env 数据。

========================================华丽的分割线========================================

终极解决办法:

如果升级固件替换 breed 无效,则使用此方法

原理:使用内存启动版 breed 来刷入最新版 breed

方法:

[*]根据路由是uboot还是breed,搭建tftp/http服务器
[*]下载本贴附件 breed-mem-ar724x.img,注意此文件绝不能刷入路由,否则变砖,后果自负
[*]通过 ttl 或者 telnet (仅breed)进入 uboot/breed
[*]通过 tftp (uboot)/wget (breed) 命令将 breed-mem-ar724x.img 载入内存,记下载入的内存地址 (默认是 0x80000000)
[*]通过 bootm 0x80000000 (uboot)/boot mem 0x80000000 (breed) 运行 breed-mem-ar724x.img, 将 0x80000000 改为实际的加载地址
[*]内存版 breed 启动后,就已解除了 flash 写保护,此时直接访问 192.168.1.1 刷入最新版 breed 即可

说明:
[*]具体的 tftp/wget 方法请自行搜索,本贴不再叙述
[*]breed-mem-ar724x.img 是专门用于从内存中运行的特殊 breed,不会进行 CPU 频率初始化以及内存初始化,不能刷入 flash,否则必变砖

附件:


daqing26 发表于 2015-9-22 09:17

H大凌晨发帖,真实辛苦了!

梦里花落 发表于 2015-9-22 09:49

可谓是 魔高一尺 道高一丈!

liuxing_lei 发表于 2015-9-22 10:53

好帖,顶顶顶

zhaocz 发表于 2015-9-22 11:09

本帖最后由 zhaocz 于 2015-9-22 13:03 编辑

还好,我用的是5.5.11系列的固件,好象没碰到这样的问题,升级都是用合成的固件来刷编程器固件。
另外我记得谁说过ubnt的升级固件会清掉uboot的?其实是不是就是这个原因所致?

antren 发表于 2015-9-22 13:08

上来看看。用到的时候比较容易找。

vicdoo 发表于 2015-9-22 14:03

H大大好用的breed超级好用,

panweienshan 发表于 2015-9-22 14:33

赞一下,又和H大学习了一点点

6331805 发表于 2015-9-22 17:47

谢谢辛苦了!!

www5500 发表于 2015-9-22 18:50

多谢分享    ,

13878205185 发表于 2015-9-22 20:26

谢谢辛苦了!!谢谢辛苦了!!

371732588 发表于 2015-9-22 21:11

过客支持:)

xianba 发表于 2015-9-22 23:17

刷成官方的5.6.2的wnr1000,刚才用新版工具加上9.21 r766版的wnr1000v2的breed,合成了个固件,在ubnt界面刷,还是有保护 ,刷不上,breed出不来。
其实h大是说ubnt会让在breed界面刷不进固件的情况,那就合成一个有9.21 r766版breed的ubnt固件,在ubnt里刷进去。

hyaska 发表于 2015-9-23 15:51

十分期待H大神的绝招

懒虫包子 发表于 2015-9-24 00:29

真实辛苦了!
页: [1] 2 3 4 5 6 7
查看完整版本: 关于 Breed 刷新版 UBNT 固件的一点说明