2010-12-18

Fonera to DD-WRT

前幾天在公司把一台 DLink DIR-300 B1 韌體刷成 DD-WRT,第三方韌體可設定項目真是多!自己有一台 Fonera 2100E,從買來第二年開始一直都沒繼續使用,目前也都以 3.5G 上網,找了一下相關資料,原來 Fonera 2100E 也是可以刷進 DD-WRT,雖然手續繁雜,就當作實驗。

開始前的準備:

  1. openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma
  2. out.hex
  3. linux.bin
  4. HFS:作為檔案傳輸時的 server
  5. PuTTY:用來做 ssh 連線用的工具
  6. tftpd:作為 tftp 服務的 server
前兩項是 Fonera 2100E 韌體版本 0.7.1 r1 導入 DD-WRT 的前置程式碼?!第三項是真正的 DD-WRT 韌體,請上 DD-WRT 下載最版本。

網路上很多資料都是以無線網路來設定這台迷你AP,畢竟它原本的設計就是如此,不過我是以網路線接上電腦來進行韌體刷新作業。
首先如果 Fonera 2100E 的韌體不是 0.7.1 r1,請記得以硬體 reset 方式回復到 0.7.1 r1,也要記得不要讓它接上 Intenet,避免它自動更新韌體。

現在要把 Fonera 2100E 的 ssh port 打開,以下內容請存成 open-ssh-a.html。

<html>
<head></head>
<body>
<form method="post" action=http://192.168.10.1/cgi-bin/webif/connection.sh" enctype="multipart/form-data">
<input name="username" value="$(/usr/sbin/iptables -I INPUT 1 -p tcp –dport 22 -j ACCEPT)" size="68">
<input type="submit" name="submit" value="Submit" onClick="{this.form.wifimode.value='"'; + this.form.wifimode.value + ';"}'/>
</form>
</body>
</html>
以下請存成 open-ssh-b.html
<html>
<head></head>
<body>
<form method="post" action="http://192.168.10.1/cgi-bin/webif/connection.sh" enctype="multipart/form-data">
<input name="username" value="$(/etc/init.d/dropbear)" size="68">
<input type="submit" name="submit" value="Submit" onClick="{this.form.wifimode.value='";' + this.form.wifimode.value +';"'}" />
</form>
</body>
</html>
上方兩個檔案紅字部份可以得視需要修改。

在本機電腦上以瀏覽器打開 open-ssh-a.html,按下 submit 鈕後,帳號 admin,密碼 admin。
接下來打開 open-ssh-b.html,按下 submit 鈕後,等待出現 Fonera 管理視窗即可。
以下這段我自己忘了做。
執行 PuTTY 連線到 192.168.10.1,輸入帳號 root 以及密碼 admin。
將 /etc/firewall.user 的第 22、23 行註解拿掉
# vi /etc/firewall.user
把 fon 的 sshd 設定為開機即啟動
# cd /etc/init.d
# mv dropbear S50dropbear
重新設定密碼以及同步一下
# passwd
# sync
將 fon 重開後就再也不會自動去升級韌體了。

啟動 HFS(預設 port 為 8080),並記得將 openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma 以及 out.hex 加入 HFS 中。在 ssh console 中接著做下列的步驟:

> cd /tmp
> wget http://169.254.255.110:8080/openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma
> mtd -e vmlinux.bin.l7 write openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma vmlinux.bin.l7
> reboot

等待 Fonera 重新開機後,大約一、兩分鐘,再以 putty 連入 169.254.255.1 並執行下列指令:
> cd /tmp
> wget http://169.254.255.110:8080/out.hex
> mtd -e "RedBoot config" write out.hex "RedBoot config"
> reboot

等待 Fonera 重新開機後,將您的電腦區域網路的 ip 改為 192.168.1.###(### 不要是 254 就行了),mask 為 255.255.255.0。上方不同顏色的 ip 位址得小心核對並做調整。

啟動 tftpd 並將 linux.bin 與 tftpd 執行程式放在同一個目錄中。
以 putty 連入 192.168.1.254:9000。如果出現 RedBoot> 的提示符號,表示目前為止的步驟都正確的完成了。

RedBoot> ip_address -l 192.168.1.254/24 -h 192.168.1.166
IP: 192.168.1.254/255.255.255.0, Gateway: 0.0.0.0
Default server: 192.168.1.166
RedBoot> fis init
About to initialize [format] FLASH image system – continue (y/n)? y
*** Initialize FLASH Image System
… Erase from 0xa87e0000-0xa87f0000: .
… Program from 0x80ff0000-0×81000000 at 0xa87e0000: .
RedBoot> load -r -b 0×80041000 linux.bin
Using default protocol (TFTP)
Raw file loaded 0×80041000-0x806a0fff, assumed entry at 0×80041000
RedBoot> fis create linux

接下來會等個十多分鐘,可能更久。
如果在 load -r -b 0×80041000 linux.bin 之後等了很久,那可能是你忘了啟動 tftpd,
如果出現 TFTP timed out 之類的訊息,很可能 TFTPD.EXE 被 Windows 防火牆擋下了,記得在防火牆設定例外允許 TFTPD.EXE (UDP port:69)。

當再次出現 RedBoot> 的提示符號後,鍵入 fconfig 指令,一般來說接下來的問題選項都是直接按 ENTER 就可以了,再次出現 RedBoot> 的提示符號後,鍵入 reset 讓 Fonera 重新開機就可以了,然後就可以用瀏覽器登入到 192.168.1.1 的 DD-WRT 網頁設定介面,設定登入密碼及調整其它選項。

Update 20110322:
今天終於把一必都搞定了,先將 FON2100E ip 設成 192.168.0.2,舊 NB Joybook 2000E 設定成 192.168.0.1,將舊 NB 上的 3.5G 設為連線共享,新的 NB Aspire 5750G 透過無線連入 FON2100E 後上網,兩部電腦共用一個 3.5G 頻寬,不用再買一個 3.5G 分享器,真是環保!

0 意見: