本帖最后由 befree2008 于 2013-7-18 01:57 编辑
方法简单总结如下: 1,ubuntu 下使用minicom与wnr2000v3的TTL接口链接,波特率115200 , /dev/ttyUSB0 2,启动时,当提示“Hit any key to stop autoboot”,按任意键停止自动引导 3,在uboot的shell下,执行修改id的命令 board_hw_id_set 29763551+04+32 board_model_id_set wnr2000v3 4,执行恢复模式命令 bootm 5,返回linux,使用tftp -o 192.168.1.1 put wnr2000v3-x.x.x.imp 6,重启路由器 7,完工
帮别人买了个WNR2000V3,看了一些帖子说这个路由器刷完后,总是出问题,但还是忍不住刷了DD-WRT。通过路由器web方式刷的dd。结果和预期的一样,路由器不正常工作了。现象就是反复的重启。 于是,开固件始恢复之路。网上一般情况下都是说通过按住reset键,使路由器进入恢复模式,然后通过网口,使用tftp 上传原厂固件,可这个方法行不通,刷完固件后还是反复重启。于是看到帖子说可以通过TTL修复,没法子,拆机。遇到的第一个问题就是,新的wnr2000v3的底座是不能取下来的,主板不好拿出来,在论坛发帖问,才知道是从指示灯那一侧把电路板翘出来,详见帖子 http://bbs.mydigit.cn/read.php?tid=614689。
好了,主板出来了,也看到TTL的4根针了,没有数据线,本想去某宝买一根,但是心里着急啊,哪等得了那么多天的快递时间。手里刚好有块arduino,就想这个能否当作USB转TTL线使用,结果还真有方法。将arduino的gnd和reset 连接,就可以直接通过usb操作rx/tx接口了。参考 Arduino as an USB to TTL adapter
在win7下装好FT232的驱动,使用SecureCRT连接 wnr2000v3,正常显示uboot的引导信息。关机,重新按reset,然后开机,uboot显示进入工厂恢复模式。这时ping 192.168.1.1都是OK的,赶紧cmd,然后tftp上传固件。我以为问题到这里就解决了,尼玛,还是不行。uboot提示firmware的hw id 和本机的hw id不一致,不允许刷新。我真想说脏话,netgear你是有病吗?Web方式下你不校验一下,TTL的时候你校验ID,你这不等于让恢复无路可走了吗? 本来打算就此放弃,我想再做最后一次尝试,让我的linux连接一下串口试试。在ubuntu下,使用minicom,配置好端口,开机。一切如旧,仍然是固件id校验不通过。无意中发现引导时有个提示, Hit any key to stop autoboot: 1
这句话给我了提示,查了资料,然后才明白路由里面有个CFE,相当于PC的BIOS,这句提示相当开机时按del,进入BIOS一样。看了这篇文章 Netgear WNR2000 3.0,明白了,需要在CFE的shell中设置一下参数,
board_hw_id_set 29763551+04+32
board_model_id_set wnr2000v3
注: board_hw_id_set 和 board_model_id_set 是uboot自带的两个命令
然后通过bootm命令,进入恢复模式。退出minicom,tftp 固件到192.168.1.1,记得哦,要用binary方式。上传后,一切终于美好了,原厂固件又回来了,我不想刷这个路由器了,因为在dd-wrt上看一个人说这个路由器不值得刷,因为他只有4M Flash,即使刷dd-wrt成功,他也不会变成一个special one。
|