接上文,这篇主要记录如何刷机。
概述
因为已经引出了 TTL 串口插针,所以这篇讲述的刷机方式是串口刷机,如果有更方便的方法,例如通过官方 Web 界面上传固件刷机,就不用这么麻烦了。
不过,对于我们这些非专业选手而言,TTL 刷机也是拯救路由器变砖前的最后一根稻草,所以还是要了解下如何通过串口刷机。
有关刷机原理方面,可以参考我画的示意图
- 路由器通过串口和电脑相连(中间有个转接版),可以直接看到路由器启动等信息
- 路由器通过 LAN 端口直接和电脑相连,用于网络传输数据
- 上面是针对 MR11U 的刷机方式,不同的路由器有不同的刷机方式
软件和工具
我用的软件环境是 Mac,所以我主要记录下 Mac 下如何操作。Linux 或者其他的系统请自行搜索,网上都应该有原理方面其实都差不多。
Mac 下安装命令行工具,如果没有装开发工具(xcode)可能会没法进行。要下一步操作,就必须安装 xcode,同时找个软件包管理工具,例如我推荐 HomeBrew。
接下来,下载必要的软件。
- Lion 似乎自带了 tftp 服务器,但用命令行启动它的确有些麻烦,这里有个免费的 gui 前端。
- 官方的 OpenWrt for MR11U 固件,4m 版本其他容量的没测试过,如果您改了芯片,谨刷。
- minicom,这个是个命令行的串口调试软件。如果您已经安装了 HomeBrew,那么简单的
$brew install minicom
即可,如果是其他安装方式请自行搜索。
环境配置
市面上大多的 TTL2USB 板子都是基于 PL2303HX 芯片的,这里有个文档看完以后就可以直接驱动设置转接版了。
PS,建议安装驱动的时候最好不要连接设备(转接版),同时重启计算机以后再连接使用。
接下来就可以插上 TTL2USB 的转接版到计算机上了,同时注意下 Mac 的「系统概述」中是否有这个板子的信息,如图
如果一切 OK,系统会有个 /dev/cu.usbserial
文件,接下来我们就可以试试接口是否正常。
$ echo \"Hello, world!\" > /dev/cu.usbserial
如果没有错误信息,同时注意 TTL2USB 转接版的灯是否闪了下(如果没有闪,那么可能是 RX 和 TX 接反了),那么说明一切正常了。
接下来配置 minicom 如何链接路由器,路由器的速率一般是 115200 ,运行命令
$sudo minicom -s
选择 Serial port setup
,然后配置如图,保存以后重启下 minicom 就可以使用了。
链接启动
环境配置好了以后,打开插上路由器电源,在 minicom 中应该就可以看到启动信息了。这时候,快速按下「tpl」顺序组合键,就可以停留在命令台。
将路由器的网线端口和 Mac 的网线端口相连,在 minicom 中输入
printenv
查看环境变量,会看到如下字符串,注意此时 serverip 是 Mac 的 ip,ipaddr 是路由器的 ip 地址。
设置 Mac 端的地址为 server ip 的地址,如图
然后打开 tftp Server 软件,选择下载保存固件的目录,然后启动 tftp Server (需要管理员权限)。
至此,和路由器的网络链接以及 Mac 端的 tftp 就配置好了,可以真正进行刷机了。
刷机
接下来就可以执行刷机操作了,在进行这个项目之前,请务必再检查:
- 电源是否稳定,避免刷机过程中掉电(MR11U 还带了快电池,这方面的风险少很多)
- 各接口板的连线是否正常,避免松动
- 网络链接是否正常
如果没有其他问题,就真正的开始了。这里再次声明下,由于刷机造成的后果本篇 Blog 不承担任何责任。
依次键入如下命令
tftpboot 0x81000000 openwrt-ar71xx-generic-tl-mr11u-v1-squashfs-factory.bin
从 tftp 服务器获得 openwrt-ar71xx-generic-tl-mr11u-v1-squashfs-factory.bin 固件内容,并写到从 0x81000000 开始的内存地址中
erase 0x9f020000 +0x3c0000
擦除从 0x9f020000 地址开始,偏移 +0x3c0000 地址的数据。注意,操作完此条命令以后,路由器的闪存已经就没有数据了。
cp.b 0x81000000 0x9f020000 0x3c0000
拷贝内存中的数据到闪存中,大小刚好是我们上条命令擦除的容量大小,这个操作需要点时间,例如 4m 大小的闪存大概需要几十秒。
bootm 9f020000
至此,路由器闪存中的数据已经是 openwrt-ar71xx-generic-tl-mr11u-v1-squashfs-factory.bin 中的内容,也就是已经成功将路由器刷成了 OpenWrt 。
然后从 9f020000 地址开始引导,如果能看到很多字符在跳动,同时过段时间按下回车能登录到控制台,那么恭喜你刷机成功了。
但此时还没法做任何事情,因为此时的 OpenWrt 固件是没有 Web 端界面、默认无线是关闭的,所以我们还是要留在 minicom 中继续操作。
参考:http://wiki.openwrt.org/toh/tp-link/tl-mr11u
未完,待续…