TL-WDR4310更新openwrt固件

自从上次把4310刷成砖以后,楼主甚是小心哪!于是,都不敢更新固件了,但是今天实在心情大好,很想放手试试。于是就在之前自己搭好的环境下编译好所需要的固件。在ar71XXX里有很多的bin文件。因为现在路由器搭载的是openwrt系统,所以很明显是要选择4310sysupgrade,肯定没问题。

楼主就开始进行升级啊。。。。

(1)楼主在luci界面选择固件升级。选择好我要升级的固件以后,结果提示说不支持,咦。。。怎么会这样呢。。。。于是,楼主想到,可能是有写保护之类的吧。

(2)楼主就毅然决然地换了个刷固件的方法,把文件拷到ram里,然后升级也许可以呢。但是usb默认不开启啊,我还不能通过USB往里面导。于是楼主就用scp把电脑本地的bin文件传到openwrt的luci里面。

(3)scp传输文件至远程端

命令:scp //home/maggie/OpenWrt/test/trunk/bin/ar71xx/openwrt-ar71xx-generic-tl-wdr4310-v1-squashfs-sysupgrade.bin root@192.168.1.1:/tmp

提示:openwrt-ar71xx-generic-tl-wdr4310-v1-squashfs 100% 3392KB   1.1MB/s   00:03 :那这就表明成功放到/tmp里了,ls查看,对,确实在。

(4)升级固件,失败

楼主通过ssh(ssh root@192.168.1.1)进入openwrt的/tmp文件目录下,激动万分啊。。。。。开始升级呀。。。。

sysupgrade -v /tmp/openwrt-ar71xx-generic-tl-wdr4310-v1-squas
hfs-sysupgrade.bin

提示:Invalid image, hardware ID mismatch, hw:43000001 image:43100001.

仔细一看,原来是因为硬件实际上是4300。。

楼主还记得在openwrt的论坛上看到过(https://forum.openwrt.org/viewtopic.php?id=36534),“TL-WDR4310 (chinese version of the TL-WDR4300)”所以就选择4300的固件进行升级。

(5)luci升级,选择openwrt-ar71xx-generic-tl-wdr4300-v1-squashfs-sysupgrade.bin,保留设置,升级!接下来提示md5校验成功!下一步。。。等待机子重启。。。成功!太棒了!撒花~~~~~

warning:在这里还有一个叫openwrt-ar71xx-generic-tl-wdr4300-v1-il-squashfs-sysupgrade.bin,不能选择这个。因为Images with “-il-” in the name is specialised for devices sold in Israel(http://wiki.openwrt.org/toh/tp-link/tl-wdr4300

搭载openwrt的TL-WDR4310成砖恢复

首先讲讲我的路由器成砖的过程吧,很搞笑啊,我都没有往里烧固件。

(1)首先通过scp命令(scp /home/trunk/…(package的位置) root@192.168.1.1:/tmp)将tcpdump.ipk文件放入openwrt系统的/tmp文件目录下。

(2)用opkg安装软件包,接着提示错误,return 127。然后根据网上说的,这个不用管,于是根据别人的方法:echo -e “\ndefault_postinst(){\n\t return 0\n\}\n\default_prerm||{\n\\t return 0\n\}”>> /lib/functions.sh

(3)然后再执行opkg安装别的软件包,依然提示错误,于是我就重启系统,然后。。。。。。就再也没起来啊!

于是。。。。楼主很捉急啊。。。新买的路由器,还那么精致漂亮。。。要是怀了得多可惜啊。。。楼主首先calm down了,然后进行一系列的分析和排查,情况和我的挽救途径如下:

(1)锁灯一直闪,wifi灯不亮,手机没有检测到该wifi,那说明wifi废了。

(2)我测试有线,用网线将路由器的一个lan口和电脑连接起来,lan口灯亮,但是依然没有给电脑分配ip,说明dhcp没跑起来。

(3)为电脑手动配置一个ip:192.168.1.100,ping192.168.1.1,显示host unreachable。。。。

于是,我知道了,路由器是真的成砖了。

于是楼主一直在搜寻一切可以挽救砖的办法啊。。。。。

看到官方wiki,首先要be cool,对吧?哈哈。。。有好几种方法可供选择呢>>>>>(http://wiki.openwrt.org/doc/howto/generic.debrick)

楼主找啊找,分析啊分析,最终选择了通过tftp从bootloader往里刷(http://wiki.openwrt.org/doc/howto/generic.flashing.tftp#dokuwiki__top

官方wiki很贴心啊,给出了好几个例子呢,于是找到Linux/BSD,一步步跟着来就没有错啦。

但是我们要怎么才能进入路由器的bootloader呢?

楼主通过串口,采用minicom调试工具看到的bootloader。

steps:

(1)首先为电脑分配一个静态ip(192.168.1.100),用网线将电脑和路由器连接起来

(2)配置minicom:115200 8N1,完成配置后,便可进入minicom串口调试工具了。

(3)先给router上电,马上将usb串口调试工具插入电脑usb口。看到bootloader信息表示router成功启动并能在minicom中看见。

(4)看到about 1seconds,马上键入tlp,成功进入控制台!

具体步骤在官方的论坛上有(https://forum.openwrt.org/viewtopic.php?id=36534

Ubuntu环境下编译TL-WDR4310平台的openwrt

(一)根据路由器生产厂商,检查手中路由器是否支持openwrt系统(http://wiki.openwrt.org/toh/start#tp-link)

(二)搭建openwrt交叉编译环境(http://wiki.openwrt.org/doc/howto/buildroot.exigence)

注意:所有步骤都是在非root权限下完成。

1.依赖包安装:根据该wiki上写的一步步来,在table中选择debian需要的packages安装完成。

2.新建文件夹openWrt,将该文件夹设置为777(sudo chmod 777 openWrt),假若该文件夹的权限不预先设置好的话,后面编译会出错,不能出现预想的bin文件

3.下载源码:根据自己的需要选择一个版本源码,在线下载,当然也可以先下载好,然后解压在该文件夹下。源码文件夹名为trunk。

(三)编译

1.进入*/trunk,chmod 777 trunk

2.***warning:由于trunk版本身不带luci,这样直接编译出来的firmware会没有luci界面,所以需要将trunk更新和安装到最新

./scripts/feeds update -a

./scripts/feeds install -a

3. 开始编译

3.1 make defconfig:检查编译环境还缺失哪些依赖包,看是否成功搭建好交叉编译环境。

3.2 make prereq

3.3 make menuconfig:跳出设置界面,用户可根据自己的需要进行配置。”*“表示编译到内核;”M“表示以模块的形式编译完成

3.4 tips:

*make V=99:打印出编译过程中的所有信息

*make -j V=99:j,加快编译速度

4.编译tips:

4.1 第一次编译会很久,如果由于网速太慢,无法下载软件包的话而造成编译失败的话,可以自行下载,然后放在/dl文件目录下,编译时会自动检测到并使用。

4.2 编译过程中,要保持与互联网的连接,系统会根据用户的设置在线下载,下载的压缩包会放在*/trunk/dl文件目录下;

4.3 编译完成后,*/trunk/bin/ar71xx/文件目录下会出现目标文件.bin。有两种,**factory是给没有刷过openwrt系统的router;**sysupgrade用于搭载着openwrt系统router升级。

(四)安装openwrt

由于之前刷过openwrt,所以采用在luci界面进行firmware升级,但是提示错误。不知为何????(searching中)

我看在wiki上有说到用这几种进行openwrt升级(http://wiki.openwrt.org/doc/hardware/soc/soc.broadcom.bcm47xx/image.conversion),试一试看看能否success!(solved!)