2014年12月2日火曜日

Buffalo WLAH-G54 が Shibby 版 Tomato ファームウェアで復活

本当に読者さんには感謝しています!
当ブログの掲示板へ WLAH-G54 が起動不良になったことへの対策を読者さんが投稿してくださり、これをヒントにして WLAH-G54 が復活しました。それも起動できないと思っていた Shibby 版の Tomato ファームウェアで立ち上がりました。

起動不良となっていた バッファロー WLAH-G54 です。

Buffalo WLAH-G54 が起動不良へ
http://near-unix.blogspot.jp/2014/07/buffalo-wlah-g54.html

掲示板への投稿ではシリアルコンソールのつなぎ方が示されていました。それも画像つきです。これを参考にしてシリアル接続のためのピンヘッダなどを取り付けました。そして USB 接続のシリアルケーブル(PL2303HX)をパソコンと接続して WLAH-G54 と通信することに成功しました。

以下の写真は WLAH-G54 の分解とシリアル接続のための加工の様子です。

WLAH-G54 の筐体を開いてマザーボードを取り出したところです。
発熱の大きなチップの熱を放熱する工夫がされていました。
マザーボードの裏側の様子です。
ピンヘッダのハンダ付けはこちらがわから行うために取り外しました。
加工前のシリアル接続部分の様子です。
IC8 に TTL-RS232C のレベル変換のチップを搭載すれば RS232C で送受信ができるようになります。
しかしここでは、直接 TTL レベルで信号のやり取りをします。
IC8 の #7-#8#11-#12-#13 をハンダブリッジで接続します。
そして信号を取り出すピンヘッダも取り付けました。
左から GND, NC, Rx, Tx となります。
シリアル-USB 変換IC の PL2303HX が搭載されたケーブルをピンヘッダへ接続したところです。
マザーボードの Tx には、ケーブルの Rx を
マザーボードの Rx には、ケーブルの Tx を
マザーボードの GND には、ケーブルの GND を接続します。

シリアルコンソールへの接続ソフトウェアは、パソコンのシステムが Debian であったため、cu で行いました。この辺のことは以前の fon2405 の投稿記事へ記述した方法と一緒です。
FON2405E へ改造ファームウェアを導入
http://near-unix.blogspot.jp/2014/09/fon2405e.html

接続して電源を投入すると文字化けした表示が流れて行く状態でした。初期値の 9600 bps から順番に変化させて、ようやく発見した接続速度は 115,200 bps でした。Debian の仮想端末上から次のコマンドで接続しました。
# cu -l /dev/ttyUSB0 -s 115200

そしてシリアルコンソール上に表示されたのは PMON という BIOS でした。ネット上を検索してみると PMON のマニュアルが存在していました。"h" でヘルプが表示され、各コマンドの取り扱いが示されます。ただし WLAH-G54 に搭載されていた PMON はバッファローでカスタマイズされたものでした。コマンドの数が少なく、そして "melco" というコマンドが追加されていました。
pmon
http://www.mbernstein.de/agenda/pmon.htm
シリアルコンソール上に表示された内容は次のとおりです。長いので一部分だけ抜粋です。
Connected.
Flash type "TC58FVM6T2AFT65 8Mx8 TopB"
  Main(bc7f8000) NVRAM is good
   Sub(bc7e8000) NVRAM is good
  ** There is a difference in Main and Sub.
dst=bc7e8000 src=bc7f8000 len=32768
Erase of block 0x007e0000-0x007f0000 done
Writing 0x8000 bytes to flash @0xbc7e8000 ...

      ↓

PMON 3.51.5.0-MEL1.0_005

failed to retrieve os dl addr
PMON> 

"set" コマンドで、現在登録されている変数と数値が表示されます。この "set" コマンドを実行すると仮想端末の初期値で設定していた 512 行を超える変数が流れて行きました。そこで 1024 行にしてみましたが、まだ全部表示することが出来ず、さらに 2048 行に設定してようやく全貌を見ることができました。結局 1778 行の変数が存在していました。

この中から ipaddr の文字列を持つ変数を探しだしては、 IP アドレスをメモしておきました。かつて DD-WRT で使用していた時に設定していた IP アドレス類を次々に発見することができました。どうも lan_ipaddr (192.168.*.*)へ稼働中の IP アドレスが記録され、ini_ipaddr (1.1.1.1)へ TFTP の IP アドレスが記録されているようでした。

しかし現在設定されている lan_ipaddr や ini_ipaddr の値で TFTP 経由でファームウェアを読みこませることが出来ないのは確認済みで、さらに今回も同様に TFTP でファームウェアを送り込むことができませんでした。そこで先程メモしていた IP アドレスで次々と TFTP でファームウェアを読みこませようとしましたが、どれも成功しませんでした。

ここでお手上げ状態となってしまいました。

そこで再度起動直後に表示されるメッセージを詳しく観察してみると、一番最後に表示される案内に目が留まりました。それは・・・ " failed to retrieve os dl addr " というものです。これをキーワードにしてネット上を検索してみると、バッファローの WZR-RS-G54 の事例を発見しました。
WZR-RS-G54 Bricked/DeBricked via serial console
http://www.dd-wrt.com/phpBB2/viewtopic.php?t=11279

この参考ページにはマザーボードの画像もあり、それが WLAH-G54 と同じもので、部品の搭載の仕方が異なっているだけのものでした。そして上記の " failed to retrieve os dl addr "のキーワード部分には、解決のためのヒントがありました。どうも nvram に記録されている変数の一部が衝突を起こしているようで、問題となる部分の内容を消去する (nvErase) と解決するとありました。早速実行してみました。
Buffalo WHR-G54S reverted to defaults automatically
http://www.dd-wrt.com/phpBB2/viewtopic.php?p=24604

PMON> nvErase 0xbc7e0000 0x20000
Erase of block 0x007e0000-0x007f0000 done
Erase of block 0x007f0000-0x007f2000 done
Erase of block 0x007f2000-0x007f4000 done
Erase of block 0x007f4000-0x007f6000 done
Erase of block 0x007f6000-0x007f8000 done
Erase of block 0x007f8000-0x007fa000 done
Erase of block 0x007fa000-0x007fc000 done
Erase of block 0x007fc000-0x007fe000 done
Erase of block 0x007fe000-0x00800000 done

コマンド実行と共にシリアルコンソール上をメモリ消去している案内が流れて行きました。終了したところで WLAH-G54 を再起動させてみました。

すると今までとは違った内容がシリアルコンソール上に表示されました。このシリアルコンソール上に 192.168.1.1 の IP アドレスが表示されていたこともあり、パソコン上からブラウザで 192.168.1.1 へアクセスしてみたところ、何と! Shibby 版の Tomato ファームウェアへアクセスすることができました。書き換えが失敗していたと思っていた Shibby 版の Tomato ファームウェアですが、ちゃんと書き換えが成功しており、ちゃんと動作していました。なおログイン・パスワードなどは DD-WRT 時代に設定していたものが残っていました。

TFTP 経由でファームウェアの流し込みを行なっていた様子です。
TFTP での流し込みは成功しませんでした。
WLAH-G54 上で動作している Shibby 版 Tomato ファームウェアですが、DIAG の LED ランプが赤色に点灯したままなど、きっちりと正常に動作しているのかまだ不明な状態です。これから動作確認などを行ってみたいと思っています。

WLAH-G54 上で動作している Shibby 版 Tomato ファームウェアの設定画面です。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。