顯示具有 router 標籤的文章。 顯示所有文章
顯示具有 router 標籤的文章。 顯示所有文章

6.19.2012

wr-740 change firmware to openwrt + luci webUI

之前介紹過了使用RS232的方式更新firmware後,想到我還沒有介紹過如何從剛買回來時就直接改機為openwrt,這邊來說明一下
其實我一開始也是參考這篇文章:http://www.mobile01.com/topicdetail.php?f=110&t=2226398
 因為一開始也不知道怎麼改…非常感謝有人熱心放上網路

一、一開始就先進到這邊準備升級吧

 二、下載openwrt的firmware (其實是OS image啦)
參考這邊下載:http://wiki.openwrt.org/toh/tp-link/tl-wr740n
或是直接由這個連結下載:http://downloads.openwrt.org/snapshots/trunk/ar71xx/openwrt-ar71xx-generic-tl-wr740n-v1-squashfs-factory.bin
但是請注意一下,這是給V1.x和V2.x升級用的喔
我的是V2.4版,所以使用openwrt-ar71xx-generic-tl-wr740n-v1-squashfs-factory
如果是其它版本的,請到下面的連結去找你的版本,裡面也有V3.x和V4.x的
http://downloads.openwrt.org/snapshots/trunk/ar71xx/

三、下載下來後,就由(一)的畫面選擇你的檔案,並按軟體升級,然後靜靜等待,剛更新完的時候是沒有網頁的,也許有人問要怎麼知道已經完成了
我是看它上面的燈號,韌體升級完後,會自動開機,等到WAN或是LAN的燈號開始閃應該就是完成了
另外: 其它的文章都說要先把原廠的設定值改回出廠設定,但依我觀查RS-232的結果,應該是不需要這個動作的,因為在網頁更新時,可以從RS-232上看到的畫面如下,這表示他只是利用html傳檔的方式,放到它的/tmp下(這是ram),然後再把資料寫到flash中,是不是原廠設定應該沒關係


四、.更新完後,把電腦的IP設為192.168.1.2,再以telnet連線進去,不需要帳密
若看到下面的畫面就代表你成功了!!!!

五、再用「passwd」指令設定root的password(這是指向busybox的指令,表示busybox就有這個功能,不清楚busybox沒關係,這不是重點)
設完後telnet會關閉,然後sshd會啟動(因sshd一定要有密碼)
(其實sshd已經啟動了,只是因為沒有root的密碼,所以你也無法登入-->這是由comport更新firmware時看出來的)

六、因為沒有網頁的介面,所以我們來安裝個介面吧,這邊我裝過幾個版本,我還是覺得luci比較好用,所以這邊就以此為例

七、用sshd連線完成後,先下指令(這邊我是使用putty連線的)
opkg update
先取得目前的opkg的清單

八、安裝所有的LuCI套件,非https版本
opkg install luci
或是安裝LuCI套件,且支援HTTPS 的版本
opkg install luci-ssl

九、啟動uhttpd,並讓它在以後每次開機都會執行(剛安裝完並不會馬上啟動)
/etc/init.d/uhttpd enable
/etc/init.d/uhttpd start
接著用 http://192.168.1.1  連到網頁

十、網頁的登入介面如下,使用的是你在ssh登入的帳密


十一、目前使用起來還蠻多功能的,但…沒有原廠的直覺…(我的感覺啦,原廠的比較簡單)
不過基本功能,連圖表統計功能都有了,感覺還蠻棒的!!
另外還可以新增wifi button的功能,超方便的!!-->就是為了它,我才刷的!!

最後補充一下,下面是我安裝 luci時產生的訊息,不管有沒有用,就先貼出來再說了
以下為安裝過程中的訊息:
root@OpenWrt:~# opkg install luci
Installing luci (trunk+svn8187-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/luci_trunk+svn8187-1_ar71xx.ipk.
Installing uhttpd (30) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/uhttpd_30_ar71xx.ipk.
Installing luci-mod-admin-full (trunk+svn8187-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/luci-mod-admin-full_trunk+svn8187-1_ar71xx.ipk.
Installing luci-mod-admin-core (trunk+svn8187-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/luci-mod-admin-core_trunk+svn8187-1_ar71xx.ipk.
Installing luci-lib-web (trunk+svn8187-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/luci-lib-web_trunk+svn8187-1_ar71xx.ipk.
Installing luci-lib-core (trunk+svn8187-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/luci-lib-core_trunk+svn8187-1_ar71xx.ipk.
Installing lua (5.1.4-8) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/lua_5.1.4-8_ar71xx.ipk.
Installing liblua (5.1.4-8) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/liblua_5.1.4-8_ar71xx.ipk.
Installing libuci-lua (2011-11-14.1-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/libuci-lua_2011-11-14.1-1_ar71xx.ipk.
Installing luci-lib-sys (trunk+svn8187-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/luci-lib-sys_trunk+svn8187-1_ar71xx.ipk.
Installing luci-lib-nixio (trunk+svn8187-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/luci-lib-nixio_trunk+svn8187-1_ar71xx.ipk.
Installing luci-sgi-cgi (trunk+svn8187-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/luci-sgi-cgi_trunk+svn8187-1_ar71xx.ipk.
Installing luci-lib-lmo (trunk+svn8187-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/luci-lib-lmo_trunk+svn8187-1_ar71xx.ipk.
Installing luci-proto-core (trunk+svn8187-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/luci-proto-core_trunk+svn8187-1_ar71xx.ipk.
Installing luci-i18n-english (trunk+svn8187-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/luci-i18n-english_trunk+svn8187-1_ar71xx.ipk.
Installing luci-lib-ipkg (trunk+svn8187-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/luci-lib-ipkg_trunk+svn8187-1_ar71xx.ipk.
Installing luci-theme-openwrt (trunk+svn8187-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/luci-theme-openwrt_trunk+svn8187-1_ar71xx.ipk.
Installing luci-theme-base (trunk+svn8187-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/luci-theme-base_trunk+svn8187-1_ar71xx.ipk.
Installing luci-app-firewall (trunk+svn8187-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/luci-app-firewall_trunk+svn8187-1_ar71xx.ipk.
Installing luci-proto-ppp (trunk+svn8187-1) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/luci-proto-ppp_trunk+svn8187-1_ar71xx.ipk.
Installing libiwinfo-lua (23) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/libiwinfo-lua_23_ar71xx.ipk.
Installing libiwinfo (23) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/libiwinfo_23_ar71xx.ipk.
Configuring luci-lib-sys.
Configuring liblua.
Configuring libuci-lua.
Configuring lua.
Configuring luci-lib-core.
Configuring luci-lib-nixio.
Configuring luci-sgi-cgi.
Configuring luci-lib-lmo.
Configuring luci-lib-web.
Configuring luci-proto-core.
Configuring luci-i18n-english.
Configuring luci-mod-admin-core.
Configuring libiwinfo.
Configuring libiwinfo-lua.
Configuring luci-theme-base.
Configuring luci-theme-openwrt.
Configuring luci-app-firewall.
Configuring luci-lib-ipkg.
Configuring luci-proto-ppp.
Configuring luci-mod-admin-full.
Configuring uhttpd.
Configuring luci.
root@OpenWrt:~#

6.16.2012

Uart and u-boot to factory firmware for wr-740n


其實…會測到serial port的原因,不外乎就是刷機刷掛了…
我想看看dd-wrt 是不是有如網路所說的這麼好用,所以直接從open-wrt改到dd-wrt…
結果就製造了一塊磚頭出來了…痛…
後來也由Uart配合tftp,把dd-wrt弄好了…結果…我真的覺得比open-wrt還不好用,也許是我不夠強,所以不好用吧,目前就覺得dd-wrt最多就是有中文化而已
(改了這一次後,就有點想把USB也拉出來說~)

一、為了救回來,只好把Uart的線拉出來,由這邊下指令才有辨法再燒東西進去
首先來看一下線路圖吧!
由於在OpenWrt的Wr740n型號中只有介紹V1.2版硬體的配置
所以需要到Wr741nd中找配線方式,如下圖就是要接出來的地方
(http://wiki.openwrt.org/toh/tp-link/tl-wr741nd#serial)
pin 86 for UART RX
pin 87 for UART TX


二、當然,從上面這麼密的地方接線,要注意的事比較多,若不小心短路到了就死了!
因此,我們從背面來,右到左為,TX, RX, GND,這二個腳位都是由上面打通孔到背面的,所以由這邊接最方便





三、接好Uart後,就先把com port先打開,上電,可以看到LED亮一下就馬上關閉再閃爍
這是因為它的bootloader預設一秒沒有辨法進入開機點,若是沒收到正確的指令就會再重開機
請在這時,不斷的一直連打「tpl」,這是通關密語~


四、接著就是要由uboot,經由網路,從我們自己架的tftp server把firmware的image抓進來,放到ram中,再由ram燒到flash中
    所以我們要先收集到我們所需要的資料才行,分別是:「flash燒錄的起始位址」、「ram的起始位址」、「IP」
1. 我們要先知道firmware (即kernel + filesystem)是在哪一個區域
由好的wr740中得到的資訊為:


這們可以了解到firmware的大小

2. 接著就是要設定bootloader的參數
由 ipaddr=192.168.1.123
serverip=192.168.1.100
得知目前wr-740的IP為192.168.1.123 ,而目標的server為192.168.1.100 -->可以改為我們的IP
>setenv ipaddr 192.168.1.1
>setenv serverip 192.168.1.10
(如果有注意在看,會發現圖和我寫的指令不一樣…這是因為我一開始用Win7 64bit,後來沒想法 tftp沒辨法連的起來,才又換了XP繼續進行 xd)


3. 又於參數中的 bootcmd=bootm 0x9f020000
可以了解到開機時,bootloader 由此處載入我們的firmware的
所以等一下要燒錄的起啟位址就是0x9f020000 !!
PS. 依經驗,這0x9Fxx-xxxx,應該是flash定址的起始位置,所以真正的寫入位址應該是0x20000 -->也就是從128KB處寫起
    也代表上面的mtd列表寫的,size 20000  "u-boot"就是bootloader所佔的空間大小

4. 然後因為我們的flash大小(即ROM)為4MB --> 0x400000
    所以(0x0040 0000) - (0x0002 0000) = 0x003E 0000  有這樣大小的flash是可以erase的

5. 由網路查到,要由tftp把firmware的image載到ram中的位址是 0x8000 0000
> tftpboot 0x80000000 1.bin
這可能代表AR7240這個CPU的RAM是由0x8000 0000這個位址開始定址的
(在網路上也找不到使用手冊,就只找的到datasheet,所以可能只有開發商才拿的到這資料吧)

五、開始燒錄!! 說了這麼多,重點還是要了解怎麼燒才行
1. 先到tftp32的網頁下載tftp server的軟體
http://tftpd32.jounin.net/tftpd32_download.html
這軟體解壓縮即可使用,很方便
指定我們已下載下來的原廠firmware,我解壓後改名為「wr740n.bin」
這邊找你機器的版本 (but.... 為何只有英文…沒有中文!!)
http://www.tp-link.com/en/support/download/?model=TL-WR740N
下載點
http://www.tp-link.com/resources/software/TL-WR740N_v1v2_100910.zip
下面是tftp的畫面,點「Browse」指定你的firmware的資料次即可


2. 首先把自己的IP設定為192.168.1.10

3. 這邊寫到一半,發現在Win7 x64的環境好像沒辨法工作,因此改到XP的環境下工作
(1)這時就要先把wr-740n 的Wan (就是原來對外的網路孔)和電腦的ethernet用網路線接起來了  
(2) 下 tftpboot 0x80000000 tplink.bin 指令 把image放到ram中


4. 這邊的 (3c0000 hex) 就是我們要寫入flash的大小
erase 0x9f020000 +0x3c0000
cp.b 0x80000000 0x9f020000 0x3c0000


最後再下一個
bootm 0x9f020000
新的firmware就開始跑了!!
大功告成!!呼~

5、補述一下,後來確認之前的猜想是對的
當我由原廠的firmware改為openwrt時-->用網頁更新
在Uart所吐出來的資訊為

確實0x20000 ~ 0x3E0000 這部份都是放firmware的

6.09.2012

Wifi button with OpenWrt in WR740N

試了好幾天終於成功的在WR740N上實作了使用QSS按鈕來快速開啟Wifi

為何要這樣做作,因為筆者在公司已經整天都在玩無線的東西了,回到家實在不喜歡又是一整個都是無線的環境,但是現在又都有android手機,難免有時會想要安裝點新東西來玩玩,這時就可以不用再去打開電腦,連到IP分享器去打開Wifi的功能,只要把IP分享器的QSS鈕按一下,這樣就把Wifi打開了,用完了,再按一下QSS鈕,就可以關閉它!!實在很方便
(不過話說,現在已經是個:你不射別人,別人也會射你的世界了…。指的是用無線射…別想偏了。)

好!!~~廢話不話,就來動手把已經改為OpenWrt的WR740,打造成有Wifi實體開關的功能
首先,先用Putty連到OpenWrt中,進到 /etc/hotplug.d/button/ 這個資料夾中
新增 「01onoff」這個檔案,並設為可執行


(1) cd /etc/hotplug.d/button
(2) vi 01onoff
內容為:
#!/bin/sh

[ "$BUTTON" = "wps" ] && [ "$ACTION" = "pressed" ] && {
 SW=$(uci get wireless.@wifi-iface[0].disabled)
 [ $SW == '0' ] && uci set wireless.@wifi-iface[0].disabled=1
 [ $SW == '0' ] || uci set wireless.@wifi-iface[0].disabled=0
 wifi
}

(3) chmod +x 01onoff

即可開始使用(記得是不用重開機…)

此功能是參考OpenWrt的網頁得來的,參考網頁如下:
http://wiki.openwrt.org/toh/tp-link/tl-wr741nd#wifi.onoff.toggle.by.qss.button
只是這個網頁的內容我試過是行不通的,可能是因為WR741和WR740還是有些不同處

我有變動的地方主要是把本來「wireless.@wifi-device[0].disabled」的地方改為「wireless.@wifi-iface[0].disabled」
會這樣改的原因是,我查wireless裝置中,wifi開關的參數名稱有所不同,如下:

 希望以上內容對想要此功能,但又找不到方法的人有點幫助,因為如果沒有花點時間了解uci的系統,真的找不到這地方要修丫!!