前不久有同事找我借无线路由器,我正好有一个闲置的(TP-LINK WR843N),里面是以前刷的Openwrt,怕他搞不定,决定刷回原版,当时没有查一下,就直接在web界面刷了原版ROM,结果就悲剧了,重启后所有灯都在闪,妥妥的变砖了。本来想弃置不管了,可是好歹花了138块大洋买的啊,有点舍不得,赶紧上网查了一下,发现有救砖的教程,但是要焊TTL线,哈哈,又要干老本行了,马上采办:USB-TTL转换器,30W烙铁,松香,焊锡,加运费一共34块,不贵!

东西很快到货,周末开搞:

1.拆机,找到电路板上的三个焊点,TP2(GND),TP5(TX),TP6(RX),先上锡,然后分别焊上连接线,其中TP5考验焊工,因为焊点实在太小了(一定是故意的吧!),加上十几年没焊过东西了,试了几次才弄上锡。焊完后TP2接USB-TTL转换器上的GND,TP5接转换器上RXD,TP6接TXD,就连这三根线,转换器上的VCC空置,不用连。

2.准备软件,USB-TTL转换器是PL2303的,这个很常见,内核已经有驱动了,终端软件就用screen了(minicom好难用,还要各种设置)。原版的ROM文件,tftp软件直接装了个tftp-hpa。

3.路由器上电,所有指示灯一阵阵的闪啊,不管它,从LAN口连根网线到电脑上,插好转换器,开screen:

screen /dev/ttyUSB0 115200

一切正常的话,会看到路由在不停的滚屏重启(Autobooting in 1 seconds ,难怪灯在一遍遍的闪啊),开始的时候我没接GND,结果全是乱码,接好地就正常了。

4.路由器滚屏重启的时候,注意了,不停的按t p l 三个字母,成功的话,就能中断重启过程,得到一个wasp>的提示符,下面开始干正事了。

5.输入printenv,会显示默认的IP地址等信息,ipaddr是路由器的,serverip是tftp服务器的,我就按这个来了,把连接路由器的网卡IP设置成192.168.1.100,tftp设置下目录,把原版的ROM文件(843.bin)放进去,启动tftp(这个时候ping路由器的ip是不通的):

wasp> printenv
...
ipaddr=192.168.1.111
serverip=192.168.1.100
...

6.把ROM文件下载到内存:

wasp> tftpboot 0x80000000 843.bin
enet1 port1 up
dup 1 speed 1000
Using eth1 device
TFTP from server 192.168.1.100; our IP address is 192.168.1.111
Filename '843.bin'.
Load address: 0x80000000
Loading: ############################################################
done
Bytes transferred = 3997696 (3d0000 hex)

7.擦除FLASH:

wasp> erase 0x9f020000 +0x3c0000

First 0x2 last 0x3d sector size 0x10000                                                                                       61
Erased 60 sectors

8.把内存里的ROM写到FLASH里:

wasp> cp.b 0x80000000 0x9f020000 0x3c0000
Copy to Flash... write addr: 9f020000
done

9,搞定,启动新ROM:

wasp> bootm 0x9f020000
## Booting image at 9f020000 ...
   Uncompressing Kernel Image ... OK

Starting kernel ...

Booting Atheros AR934x
Linux version 2.6.31--LSDK-9.2.0_U5.508 (zhongjin@rd3linux.tplink) (gcc version 4.3.3 (GCC) ) #15 Fri Dec 23 14:58:51 CST 2011
...

(啧啧,系统就是Linux啊!这要在美国,TP也得跟思科一样公开源代码啊。)

10.路由器一切正常了,救砖成功!