前些天买了一个网件R6250路由器, 5G性能覆盖都相当给力, 爽了几天,终于忍不住手贱开始折腾,刷了梅林固件1,然后就很不幸地……砖了,开机闪黄灯,自动进了tftp模式,tftp传固件进去没反应, ping过去ttl始终是100(ping路由器ttl=100表示恢复模式,ttl=64表示正常)。倒腾过不少路由器,刷砖了还是第一次,趴了一阵帖子,发现基本上得靠tty了。刷过之后感受了两天,感觉功能非常的强大,但是稳定性非常之不靠谱,老妈意见比较大,还是决定刷回原厂固件,没想到又是一番波折,在这里记录一下,希望能帮到后来者。
TFTP救砖
我刷机时参考的帖子是这个, 相关的固件可以在里面下载,另外koolshare也有相关固件, 请参考R6300V2的刷机教程。
因为刷梅林会改写机器的board_id
和CFE
(内置shell)刷梅林又需要好几个过渡固件,因此会导致固件校验不过, 无法写入, 在不进入tty的情况下我们无法得知当前的board_id,因此先进行以下尝试:
-
如果你的路由器依然可以tftp,请以此尝试tftp刷入以下固件:
-
如果不能tftp,直接往下看吧
TTY
如果你还没有tty线,请上淘宝买一根,一般的USB-tty或者串口线都可以, 如果你没有拆机螺丝刀和电烙铁记得也买一套
打开机器,参考下图进行接线(图是盗的, 见参考):
- G = GND
- R = RXD
- T = TXD
因为R6250偷工减料地省了杜邦插座(r6300是有的),因此需要把线焊在电路板上
然后就可以连到路由器的tty了,OSX/Linux下可以使用minicom
Windows下可以使用putty
具体使用方法不再赘述,请自行上网查找
连接参数:
Speed: 115200
Stopbits: 8-N-1
打开连接后启动路由器, 就可以看到终端里狂刷消息了,如果路由器还在恢复模式中(黄灯闪),开机时候多按几下Ctrl-C
即可进入路由器内置shell(CFE)
则将网线接上LAN口,设固定IP 192.168.1.2
, 输入tftpd
回车,然后重复上面 TFTP救砖部分的步骤
刷回原厂固件
原本以为刷回原厂会比较简单, 因为这个帖子里提供了R6250-back-to-ofw.trx
的固件说是可以直接在梅林界面上刷回去
但是我刷进去却被梅林固件拒绝了,因为刷过梅林之后,机器已经被识别为R6300V2,刷个R6250的固件进去,被校验机制拦截了,尝试了几次均不成功,最后决定冒险刷一下R6300V2_back-to-ofw.trx
, 居然一次成功
刷完之后十分顺利地进入了原厂网件的界面,但是发现仍然被识别为了R6300V2(怎么感觉好像有点赚到了),测试了一下基本正常,但是一些界面有些不太对,5G的频道不能选,默认频道比较低,5G速度不行,系统能找到固件升级,但是下载下来却报固件损坏无法写入。这时在Web界面上,无论是刷梅林,R6300V2,R6250,还是DD-WRT均不成功,任何固件都不认。
虽然路由器能用了,似乎也还比较稳定,但是完美主义的毛病又犯了,搞个半残的路由器总让人很不爽,想着还是要解决掉这个问题。思考了一下,想到之前在TTY中使用 nvram get board_id
查看 board_id
时返回的结果是HDR0,也就是没有board_id的状态,想过去应该board_id校验失败了,只要能想办法刷掉board_id,应该就有救, 一番扒贴之后在这里, 找到了原厂固件的telnet console自带一个burnboardid
命令可以写入board_id, 看来还有救。
网件有后门可以打开telnet console, openwrt wiki上有相关的指导,但是我没有成功,如果有人成功了麻烦告知一下。
进不了telnet我们还有tty线,参考上一节tty的部分, 连进机器, 使用命令写入board_id
burnboardid U12H245T00_NETGEAR
重启,刷6250固件, 成功!终于恢复原厂固件了
不过再进系统,发现还是有些不正常,一些界面不太对,wifi地区可以选择但无效,继续研究,发现有一系列的burn命令:
burn_hw_rev
burn5gpass
burn5gssid
burnboardid
burnethermac
burnpass
burnpin
burnrf
burnsku
burnsn
burnssid
一个一个查看过去(命令不输参数则显示当前值), 发现sn和pin值显示为乱码,应该要写入一个正确的值:
burnsn XXXXXXXXXX # SN可以在机器底部的条形码上找到(SERIAL NUMBER)
burnpin XXXXXXXX # 随便写8位数字,路由器的PIN码,写入的值在路由器的设置界面可以看到
重启, 一切正常!
一点bonus
我的路由器买的是水货,区域只能选择美国,可以选择的频段有限,我们可以用
burnsku 0x0002
命令来将路由器刷成WW(World Wide)版的,这样路由器就变成全区的了,wifi界面的地区可以随便选了
另外,burnrf
命令仍然返给我一个报错,不过好像也没有影响。没有找到相关资料,如果有知道的麻烦告知一下。