BHR-4RVのブートローダ―にはBuffaloがカスタマイズしたCFEが使われています。
何らかの理由で当ブートローダ―を破壊してしまった場合、シリアルコンソールでの
操作もできなくなりますが、JTAGを使用することで復旧できる場合があります。
またシリアルコンソールも、スルーホールに接続しただけでは使用できませんので
その使用手順についても併せて解説します。
●シリアルコンソール使用手順
BHR-4RVの基板上にはシリアルコンソール用のスルーホールが存在していますが
RS232-TTLレベル変換ICであるSP3220Eが未実装(=シリアルコンソール未結線)と
なっているため、少々小細工が必要になります。
具体的にはSP3220Eの空きパターン上の必要な箇所をブリッジ接続することによって
シリアルコンソールのスルーホールでTTLレベルの信号が得られるようにします。
シリアルコンソールは基板上にJ1と印刷されたスルーホールです。
リセットスイッチが左側を向いている位置(J1の印刷が天地逆)状態で
左から順に"TxD / RxD / NC / GND"です。
SP3220Eは基板上にIC18と印刷された空きパターンです。
ピンの数え方は目印の半月状の欠けが上を向いた状態で、左上から反時計回りに
1→8(折り返して)9→16です。このうち8-9ピンと11-13ピンをそれぞれ接続することで
TTLレベルのシリアルコンソールが使用できるようになります。
●JTAGによるCFEの復旧
前述の通りBHR-4RVにはカスタマイズされたCFEがブートローダ―として
使用されています。Linksys WRT54GシリーズはCFEの生成用ソフト等もあるようですが
BHR-4RVで動作するCFEを生成することは難しいようです。
その為、事前にCFEのバックアップを取っておくことが重要になります。
万一バックアップを取っていなかった場合、違うBHR-4RVからJTAGを用いてファームを
吸出して移植することができますが、そのままでは吸出し元と同じMACアドレスに
なってしまいます。
BHR-4RVのJTAGは基板上にCN10と印刷されたスルーホールです。
必要なピンは印刷されている番号に従って以下の通りです。
3 - TDI
5 - TDO
6 - GND
7 - TMS
9 - TCK
JTAGケーブルは、"WRT54G EJTAG DeBrick Utility"のドキュメントに含まれる
回路図を参考に自作してください。EJTAGはgiveio.sysに依存しており
PCにパラレルポートが必須です。
また、64bit版のgiveio.sysは現時点で提供されていません。
http://www.dd-wrt.com/site/support/other-downloads
上記のファイルに含まれるバイナリではBHR-4RVには使用できないため
別途mod版のファイルを入手する必要があります。
http://download.modem-help.co.uk/utilities/JTAG/Software/Tjtag/v1-0--v4-8-1-/Tjtag.zip.php
自作したJTAGケーブルでBHR-4RVと接続し、BHR-4RVの電源を入れた状態で
コマンドプロンプト上から以下のコマンドを入力するとカレントディレクトリ上に
バックアップイメージファイルが出力されます。
>"tjtag.exe" -backup:cfe /fc:63
出力されたイメージファイルを"CFE.BIN"にリネームして、今度は復旧させたい
BHR-4RVにJTAGケーブルを接続し、以下のコマンドを入力するとCFEが書き込まれます。
>"tjtag.exe" -flash:cfe /fc:63
ただこのツールはBHR-4RVに搭載されたフラッシュメモリに正式に対応していないらしく
時々不安定な挙動をします。フラッシュの消去が進まない等のおかしな動きをする場合は
消去中にBHR-4RVの電源を再投入するなどの荒業が必要な場合があります。
●MACアドレスの書き換え
ここまでの方法でCFEのブートまでは出来るようになっていると思います。
ただしこれだけでは、復旧したBHR-4RVのMACアドレスが、吸出し元のものと
同じになってしまいます。そこでバイナリエディタを用いてMACアドレスを書き換えます。
吸いだしたイメージファイルをバイナリエディタで開くと、0x1014~0x1290の範囲に
設定項目が記載されていますので、eth0(LAN)とeth1(WAN)の値をBHR-4RVの
筐体に貼られているシールと同じに書き換えて保存してください。
しかしこの状態のイメージをBHR-4RVに書き込んでも、CRCチェックによって
弾かれてしまいます。具体的には以下のようなメッセージです。
** Bad CRC
crc=84 stored=19
このメッセージは「正しいCRCの値は84だが、現在書き込まれている値は19である」
といった意味です。そこでMACアドレスを変更済みのバイナリを再度バイナリエディタで
開くと、0x408のアドレスにstored=と同じ値(今回は19)が書き込まれていると思います。
これをcrc=と同じ値(今回は84)に書き換えて保存します。
こうして出来上がったイメージファイルをJTAG経由で再度書き込めば、今度は
CRCチェックで引っかかることも無く、CFEが正しくブートすると思います。
MACアドレスは各機器ごとにユニークな値ですので、この方法を用いてご自身が
所有している機器以外のMACアドレスに変更することはお控えください。
atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!