(2)CFEプロンプトからの復旧(Buffalo)

概要

Buffalo WZR-1166DHP2 の bootloader には CFE が採用されています。
u-bootではないためコマンドなどが少し違います。
ケースを開けてシリアルコンソールにアクセスすることでオリジナルファームウェアへの復旧が可能です。

リカバリ用ファームウェアの準備


WZR-1166DHP2の場合、メーカー公開のアップグレード用ファームウェアからリカバリ用ファームウェアを生成できません。
オリジナルファームウェアのlinuxコンソールにアクセスして、ファームウェアをバックアップする必要があります。
WZR-1166DHP2は古いファームウェアにdebugモードが残っているため、debugモードWeb からtelnet daemonを ebable にすれば無改造でもlinuxコンソールにアクセスできます。あるいは後述するシリアルコンソール経由でもlinuxコンソールにアクセスできます。
linuxコンソール上でのファームウェアバックアップ方法は他機種を参考にしてください。

オリジナルファームウェアの/dev/mtdblock/2 と/dev/mtdblock/3 のデータを結合してリカバリ用のファームウェアを生成します。
linuxやmacであればcatコマンドで、Windows環境ではcopy /b コマンドを使って結合し準備してください。
 (linux/mac) cat mtdblock2.dd mtdblock3.dd > wzr1166dhp2_cfe.trx
 (Windows) copy /b mtdblock2.dd+mtdblock3.dd wzr1166dhp2_cfe.trx

ケース開梱~シリアルコンソール接続

WZR-1166DHP2のケース開梱はやや面倒です。上位機種の WZR-1750DHP と同じの方法となりますので、
こちらのblogを参照してください。

3.3V仕様のUSB-UART変換モジュールを使ってPCから115200bps/8bit/パリティなし/ストップbit 1bit/フロー制御なしでアクセスできます。

CFEコンソールでの復旧

シリアルコンソールを接続した状態で電源を入れると、bootメッセージが流れます。
bootloader の起動中にターミナルから[CTRL]+[C]連打すると、OS bootが中断されてCFEプロンプトで停止します。
ここで各種操作ができますが、以下のコマンドを入力すると、bootloader側でTFTPサーバが起動されファイル待ち受け状態になります。

CFE> flash -noheader : nflash1.trx

初期状態では WZR-1166DHP2 側が 192.168.11.1 mask 255.255.255.0 になっていますので、
端末側を 192.168.11.2 などにセットしたうえで、

PC端末側から
tftp -i 192.168.11.1 PUT wzr1166dhp2.trx
で TFTPでファイル送信できます。

実績ではファイル転送途中で transfer cancelled のメッセージがでてファイル転送が完了しないのですが、再起動すればオリジナルファームウェアが復旧してきました。
念のため、再起動後にWeb-GUIから正規のファームウェアを再度バージョンアップすると確実と思われます。

なお、Broadcom SoCを採用した機種ではファームウェアを復旧しても無線出力が低下したままになる不具合が知られています。
その場合にはlinuxコンソールからflashメモリのほかの領域のデータを書き戻すと復旧した、という事例が報告されています。
最終更新:2019年04月06日 17:20