Hardware

Fon2201 磚塊化解法

哎呀,上次才發一篇 Fon2201 刷 DD-WRT 的方式手殘點了更新馬上就死機了...
在這邊奉勸玩家們千萬不要用 DD-WRT 的網頁更新!!! 我就是這樣死機了,後來去查的結果發現很多人只要利用網頁去更新都會出事情,接下來進入救難的流程吧...

在之前刷機的經驗發現其實 DD-WRT 其實就是架構在 REDBOOT 之下的 Linux 基本上只要 REDBOOT 沒有被刷壞其實只要重灌 Linux 就可以了,所以開始尋找怎麼進去 REDBOOT 的方式

測試一
用原本的 Serial port 試著登入看看,發現完全無效...連個畫面都沒有
後來有看到有人用跳線的方式傳出畫面跟登入 REDBOOT 的方式 <===但是麻煩了放棄

測試二
在論壇上看到其實 Fon2201 在啟動的一瞬間會進入到 REDBOOT 裡面,這個時候只要用 Telnet 接上 WAN Port 然後預設 192.168.1.1:9000 就可以登入到 REDBOOT 裡面而且阻止它繼續載入 script,後來也成功的用這個方法解開了

以下為解磚紀錄

軟體:
PuTTY
TFTP Server
DD-WRT firmware for Fonera

硬體:
磚塊化的 Fon2201
一條網路線

先將實體網路設定成
IP:192.168.1.2
MASK:255.255.255.0
Gateway:192.168.1.1
然後把網路線一頭接在電腦的網孔一頭接在 Fon2201 的 WAN 上面 (PC_LAN to Fon2201_WAN)
接下來開啟TFTP,在 Current Directory 點 Browser 並指到放 DD-WRT firmware 的資料夾,然後 Server interface 選擇 192.168.1.2
到這邊為止都跟之前的刷機前準備是一樣的

然後開啟 PuTTY 選擇 Telnet 在 IP 的欄位打上 192.168.1.1 然後 Port 打上 9000
這個時候很微妙因為它會在啟動的"某個瞬間"會起來,至於什麼瞬間呢...其實可以利用 CMD 下達 ping 192.168.1.1 -t 的指令來確認,當一有回應就馬上點下 open ,但我試了兩三次才成功

接下來成功的進入了 REDBOOT 之後就跟之前介紹的刷機方式一樣

Redboot> ip_address -l 192.168.1.1 -h 192.168.1.2 (這段主要在設定這台的 IP 位置跟 TFTP Server 的IP)
Redboot> fis init (建立一個新的 partition table)
About to initialize [format] FLASH image system - continue (y/n)? y (輸入 y 就可以了)
*** Initialize FLASH Image System
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: (一直到這段出現表示建立完成)

RedBoot> load -r -b 0x80041000 linux.bin (將 DD-WRT firmware 下載進來 )
Using default protocol (TFTP) (預設為TFTP)
Raw file loaded 0x80041000-0x80662fff, assumed entry at 0x80041000 (到這邊已經將 .bin 下載完成了)

RedBoot> fis create linux (建立 linux,注意 create 跟 inti 的用法不太一樣)
... Erase from 0xa8030000-0xa8652000: ...................................................................................................
... Program from 0x80041000-0x80663000 at 0xa8030000: ...................................................................................................
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: (到這個步驟結束為止超久的,要耐心等候)

RedBoot> fconfig (結束後開始設定 fconfig )
Run script at boot: true
Boot script:
.. fis load -l vmlinux.bin.l7
.. exec
Enter script, terminate with empty line
>> fis load -l linux (這時候出現 >> 是要你輸入 script )
>> exec (當輸入 exec 的時候代表開始時執行,所以下面就會開始跳出一些設定,原則上都直接按 Enter 帶過就好了)
Boot script timeout (1000ms resolution): 10
Use BOOTP for network configuration: false
Gateway IP address:
Local IP address: 192.168.1.254
Local IP address mask: 255.255.255.0
Default server IP address:
Console baud rate: 9600
GDB connection port: 9000
Force console for special debug messages: false
Network debug at boot time: false
Update RedBoot non-volatile configuration - continue (y/n)? y
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000:
RedBoot> reset (都結束後下重新啟動的指令就可以了)

後記
fis create linux 這段真的要耐心等待,可能是走網路的關係,回應的速度比較沒那麼快,第一次的時候我以為當機了,所以就關掉它,再做第二次的時候我就直接丟在那邊去做別的事,過了很久才跑出安裝成功的畫面