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
如果你硬改了4M或8M的flash,上面的固件你的問題就已經解決了。但如果你硬改16Mfladh。那上面的固件還真幫不了你了,本人初入道太多不懂,還請大家原諒和大神們賜。上面的這兩個包就是你折騰16M的原材料。uboot-ar9341.rar 來自恩山大神200420154的材料,原貼表示這個Uboot自動識別4M、8M、16M 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 。某寶上買了8M、16Mflash 及64M RAM。但賣家發我4M 和8M flash,我直接無語。反正8M應該夠了,我也就懶得再上某寶了。
焊 接教程網上可以搜到,但本人的焊接設備很簡單,就一把連調溫都沒有的電烙鐵。不過本人焊工熟練,有自己習慣的焊接方法。那點事不是事。從學習的角度還是要 學習別人長處,看一些教程是肯定的。但某教程里說先給芯片上錫再取。我覺得這不可取。經驗告訴我正確方法是先在針腳上上松香。焊上去同樣不要上太多錫,板 上和針腳上有一層錫即可,同樣要上松香。電烙鐵推薦用馬蹄頭,比較尖少傷及附近。但也因人習慣而定。
還建議買個幾十塊錢的編程器,和個幾塊錢的TTL線。很多人講有TTL線就能刷機救磚無敵了。一直想挖掘它的這個功能,看了無數ttl刷機教程,卻總是那么簡單。所以這個道理在我身上沒用。TTL線我的用途主要是看路由器的各種運行狀態,有沒有刷機成功,偶爾運行httpd這樣簡單的命令刷機。或者偶爾運行opkg 命令安裝軟件包。但還是少不了它,通過它可以看到路由器狀態,非常重要。對於我來講刷機無敵的還是編程器。
雖說焊工不錯,但無數次拆卸flash來寫固件。結果也中招了,板上的一個焊點掉了,最終也飛線了。為了解決這個問題,焊上一條排線,flash芯片直接焊在排線上就不拍拆壞了。
TTL線連接點,flash 附近的P5、P6是TTL的TX、RX。GND好像是P2,在RAM芯片旁邊的那個,GND也可以自己隨便找個地方接,但一定接到GND上,不是隨便一個地方都行,需要用表測量,怕麻煩還是直接接到RAM旁邊那個點上就行了。接這三根線就可以了,正極不用接。
編程器我買的是CH341。這個我就不多說了,賣家一般會給相關資料。
固件編譯部分
1、如果不想直接給電腦安裝linux系統,就安裝虛擬機(VMware)來安裝linux系統。linux系統安裝 Ubuntu 就可以了。詳情移步:百度
2、openwrt源碼下載及編譯基礎,百度:OpenWrt新手教程
3、為了能順利編譯成功,不因為編譯過程中下載失敗而編譯失敗,首先單獨下載源碼目錄下的dl目錄。下載命令:
wget -r -nphttp://193.87.95.148/openwrt/raspi/trunk/dl/ 然后把下載dl目錄內容復制到源碼dl目錄即可。
4、WR841NV8固件大小修改方法。之前我也為這個東西花數天時間翻閱百度,看到各種修改方法讓我一臉茫然,都沒有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口,LAN2、LAN3、LAN4、WAN口為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_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))
$(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的固件發上來,但是不知道什么原因就是編譯不出來。沒時間慢慢研究了,以后有時間再看了。
本來打算寫得詳細些,但因最近跟老婆吵架,工作又忙,天氣又熱。就亂草草了事了。對不住大家!