TL-WR841N V8 新人openwrt入门刷机经验 含固件及资料

时间:2024-02-16 12:11:38

http://www.right.com.cn/forum/thread-145184-1-1.html

重量级资料:https://forum.openwrt.org/viewtopic.php?id=37010

 

本人差不多是从0开始学习OPENWRT,过程走了不少弯路。借鉴了不少大侠文章及资料,在此表示感谢!文中引用到大侠们的文章及资料有可能因为翻阅资料众多,我已经找不到出处了,还请大侠门谅解。整理此文,以此回馈大家!及抛砖引玉,学习更多知识。文笔不好,请大家谅解。
 
首先把我认为比较重要的资源贴出来:
 
TL-WR841N V8 原厂flash编程器固件备份.bin  
       这个固件是我把原来flash焊下来用程序器备份下来的,写到新的闪存芯片测试正常。编程器备份固件包含所有flash分区。之所以把这个发上来,因为方便需要还原和搞研究的大侠。里面包含了无线驱动等各种需要的信息。虽然我看了不少内嵌的资料,初步了解flash的分区结构,但我还是没有能力研究里面的信息。最初想自己用相关信息来拼一个自己的编程器固件,因没耐心终究没有实现。
 
TL-WR841N V8-ar9341-8m-fullflash编程器固件刷机前需改MAC及密码.bin
 
       这个固件是从网络上下载到的8M编程器固件,包含OPENWRT 用的Uboot 分区的全flash分区的固件,由于下载及测试的固件众多,已经不知道来源了,希望原作者原谅。虽然网络能找到很多8M编程器固件,做未必是真正的8M。之所以上传这个固件是因为在众多固件中,发现这个才是真正的8M固件。很多固件声称自己是8M固件,确实有8M大小。但刷机之后进到系统里看,其实非8M,只是一个假象已经。也曾经看到某贴看到8M固件的拼装方法,有可能假8M就是这么来的。在这里我没有针对原贴作者,相反我对他是很敬重的,必尽他也是在想各种办法解决大家的问题。不过在我无数次刷机中发,可能这种拼接改固件大小的方法不可取,所以我也没心思按他的思路去拼接自己的完整固件。
 
TL-WR841N V8-ar9341-4m-fullflash编程器固件刷机前需改MAC及密码.bin
       这个固件出自上面8M固件的同一作者,但我没有亲测过。因为8M正常,4M的应该也没有问题,可能有人需要4M的固件,所以我一并上传。
 
openwrt-ar71xx-generic-tl-wr841n-v8-squashfs-factory13.bin  [8M自己编译固件,亲测试完美,在用
       这个是我自己编译出来的8M固件,网口和led灯自己修改过,全部正常。修改方法下载我再介绍。带石像鬼QOS。这个固件是我在上面的8M固件基础上刷到路由器成功的。至于其它方法我还真没刷成功过。比如从原厂系统我也没办法刷到这个固件。其中还下载过DDWRT官方固件刷机过,但DDWRT网口和led都不正常,且不知道怎么改,别人说可以从DDWRT刷到其它固件。但在我手里它就是一个除编程器外刷不掉的固件,刷很多固件都显示成功,但一重启,还是原来的DDWRT。折腾了无数次都没用,应该是自己内功不够,最终无力。只有把flash拆下来,用编程器伺候,才得以挣脱DDWRT这个恶魔。在刷这个固件前请先刷前面的两个编程器固件,保证flash分区信息完整。否则会出现启动不了、无线不正常等各种问题。因为嵌入式光有os,没有匹配的uboot,和无线驱动等分区信息,是不能正常工作的。我也就了解有这么回事,具体我也讲不清楚。详情还请去了解嵌入式。
 
 
 
uboot-ar9341.rar
art+firmware.rar
如果你硬改了4M8Mflash,上面的固件你的问题就已经解决了。但如果你硬改16Mfladh。那上面的固件还真帮不了你了,本人初入道太多不懂,还请大家原谅和大神们赐。上面的这两个包就是你折腾16M的原材料。uboot-ar9341.rar 来自恩山大神200420154的材料,原贴表示这个Uboot自动识别4M8M16M flash,给您硬改16M带来了可能。详情移步:http://www.right.com.cn/forum/thread-122860-1-1.html   art+firmware.rar 也是路由器能正常工作的flash分区信息,硬改16M少不了它俩。加起来就3个重要flash分区了,最后一个重要分区就是openwrt系统了。这个编译可以得到,下面再介绍。怎么把这四个东西组合到一起,我就帮不了大家了。也许TTL命令刷机组合,也许把所有二进制文件整合成一个完整编程器固件再刷机。这些我都不会,还请大侠赐教。
 
 
硬改
 
我买的WR841N V8  4Mflash+ 16M RAM 不是2M flash+ 16M RAM。也许4Mflash可以凑合着用,但16MRAM 想用OPENWRT真是个问题。所以我决定硬改16Mflash+ 64M RAM 。某宝上买了8M16Mflash 64M RAM。但卖家发我4M 8M flash,我直接无语。反正8M应该够了,我也就懒得再上某宝了。
 
焊 接教程网上可以搜到,但本人的焊接设备很简单,就一把连调温都没有的电烙铁。不过本人焊工熟练,有自己习惯的焊接方法。那点事不是事。从学习的角度还是要 学习别人长处,看一些教程是肯定的。但某教程里说先给芯片上锡再取。我觉得这不可取。经验告诉我正确方法是先在针脚上上松香。焊上去同样不要上太多锡,板 上和针脚上有一层锡即可,同样要上松香。电烙铁推荐用马蹄头,比较尖少伤及附近。但也因人习惯而定。
 
还建议买个几十块钱的编程器,和个几块钱的TTL线。很多人讲有TTL线就能刷机救砖无敌了。一直想挖掘它的这个功能,看了无数ttl刷机教程,却总是那么简单。所以这个道理在我身上没用。TTL线我的用途主要是看路由器的各种运行状态,有没有刷机成功,偶尔运行httpd这样简单的命令刷机。或者偶尔运行opkg 命令安装软件包。但还是少不了它,通过它可以看到路由器状态,非常重要。对于我来讲刷机无敌的还是编程器。
 
虽说焊工不错,但无数次拆卸flash来写固件。结果也中招了,板上的一个焊点掉了,最终也飞线了。为了解决这个问题,焊上一条排线,flash芯片直接焊在排线上就不拍拆坏了。
 
TTL线连接点,flash 附近的P5P6TTLTXRXGND好像是P2,在RAM芯片旁边的那个,GND也可以自己随便找个地方接,但一定接到GND上,不是随便一个地方都行,需要用表测量,怕麻烦还是直接接到RAM旁边那个点上就行了。接这三根线就可以了,正极不用接。
 
编程器我买的是CH341。这个我就不多说了,卖家一般会给相关资料。
 
固件编译部分
 
1、如果不想直接给电脑安装linux系统,就安装虚拟机(VMware)来安装linux系统。linux系统安装 Ubuntu 就可以了。详情移步:百度
2openwrt源码下载及编译基础,百度:OpenWrt新手教程
3、为了能顺利编译成功,不因为编译过程中下载失败而编译失败,首先单独下载源码目录下的dl目录。下载命令:
wget -r -nphttp://193.87.95.148/openwrt/raspi/trunk/dl/    然后把下载dl目录内容复制到源码dl目录即可。
 
4WR841NV8固件大小修改方法。之前我也为这个东西花数天时间翻阅百度,看到各种修改方法让我一脸茫然,都没有WR841N V8直接通用的方法。看最有可能的是941N,修改好几个文件,但WR841N V8的文件都不太一样,没法改。也试着仿照去修改,无数次失败,最终偿式出来了。这个路由器只要改 /target/linux/ar71xx/image/Makefile 文件就可以了。找到
$(eval$(call SingleProfile,TPLINK-LZMA,64kraw,TLWR841NV8,tl-wr841n-v8,TL-WR841N-v8,ttyS0,115200,0x08410008,1,4Mlzma))这一行,把最后面的4改你自己flash大小就可以了。
 
5、修正网口问题。我的路由器刷官方源码编译出的固件,LAN1 变成LAN口,LAN2LAN3LAN4WAN口为WAN。反正就是乱七八糟的就对了。如果存在这个问题修正方法:
修改/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr841n-v8.c文件
修改红字部分
ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_PHY_SWAP);
改为
ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_ONLY_MODE);

ath79_switch_data.phy_poll_mask = BIT(0);改为ath79_switch_data.phy_poll_mask= BIT(4);
ath79_eth0_data.phy_mask = BIT(0);改为ath79_eth0_data.phy_mask= BIT(4);
 
以上修改方法来自:http://www.right.com.cn/forum/thread-128467-1-1.html     修改完成make 前记得make clean 。这样修改的才生效。
 
6、LED修正。修改trunk/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds 文件
我的修改如下,在我的路由器下是正常的。
----------------------------------------------分割线-----------------------------------------------
tl-wr841n-v8)
       ucidef_set_led_netdev "wan""WAN" "tp-link:green:wan" "eth0"
       ucidef_set_led_switch "lan1""LAN1" "tp-link:green:lan1" "switch0""0x02"
       ucidef_set_led_switch "lan2""LAN2" "tp-link:green:lan2" "switch0""0x04"
       ucidef_set_led_switch "lan3""LAN3" "tp-link:green:lan3" "switch0""0x08"
       ucidef_set_led_switch "lan4""LAN4" "tp-link:green:lan4" "switch0""0x10"
       ucidef_set_led_wlan "wlan""WLAN" "tp-link:green:wlan" "phy0tpt"
       ;;
-----------------------------------------------分割线------------------------------------------------
当然了,这个也可以刷完机后再修改etc/config下的相关文件。
 
7、石像鬼QOS 直接移步:http://www.right.com.cn/forum/thread-142020-1-1.html
 
说明一下吧 feed/luci.tmp/.packageinfo 是隐藏文件,ubutu 在命令下用 ls -a 可以看到。在资源管理器 Ctrl + H 可以看到。
 
feeds/luci/contrib/package/luci/makefile里, Transmission一段的后面(当然也可以任意放,放到@@后就行),增加以下内容,注意前后空行

$(eval $(call application,qos_gargoyle,LuCI Supportfor  qos-gargoyle,\
    +gargoyle-firewall-util +libericstools +libiptbwctl +qos-gargoyle+PACKAGE_luci-app-qos_gargoyle:qos-gargoyle))
 
我是找不到 Transmission 这个字段更没找到@@ 。我把上面的内容放到 ### Translations ### 的最后,放在 ### Collections ### 前面。结果就是这样的:
-----------------------------------------------代码片段------------------------------------------------
 
$(eval $(call translation,romanian,Romanian))
$(eval $(call translation,ukrainian,Ukrainian))
$(eval $(call translation,hungarian,Hungarian))
$(eval $(call translation,polish,Polish))
 
$(eval $(call application,qos_gargoyle,LuCI Support for  qos-gargoyle,\
       +gargoyle-firewall-util+libericstools +libiptbwctl +qos-gargoyle+PACKAGE_luci-app-qos_gargoyle:qos-gargoyle))
 
### Collections ###
define collection
  define Package/luci$(if$(1),-$(1))
    SECTION:=luci
    CATEGORY:=LuCI
-----------------------------------------------代码片段------------------------------------------------
 
 
5、然后用./scriptsfeeds install -a命令即可将添加的文件安装到菜单内。
这个命令不全,应该是./scripts/feeds install -a   
 
 
 
刷机部分
 
1、编程器固件MAC 密码修改
使用Hex Workshop打开编程器固件文件,找到0001FC00行的MAC地址,改成你自己的路由器后面贴的MAC,找到0001FE00行的密码改成自己路由器上贴的密码。即可,改完保存。
 
2、刷机,这个我就帮不了了,我也是个菜鸟,我的刷机方法就是编程器了。先用编程器第一次刷机,然后每次都只要用ttl线就可以输入httpd命令,直接在web界面刷机了。刷机方法太多,有简单也有深奥也有。这个大家自己找度娘去吧!
 
 
本来想再编译个4M的固件发上来,但是不知道什么原因就是编译不出来。没时间慢慢研究了,以后有时间再看了。
 
 
本来打算写得详细些,但因最近跟老婆吵架,工作又忙,天气又热。就乱草草了事了。对不住大家!