2020/4/13 記事修正しました。
私は、最近DD-WRTという無線LANルーター向け高機能OSを知り、入れてみたいなと思ってやってみた際に失敗した話です。
DD-WRTとは
DD-Wrtは、ゲートウェイ、無線LANアクセスポイントなどの組み込みシステム用ファームウェアとして開発されているLinuxディストリビューションの一種である。OpenWRTを元にして作られている。(出典:https://ja.wikipedia.org/wiki/DD-WRT)
インストールの時点でアウトだった
私は、Googleで調べて出てきたサイトを参考に、WHR-300HP2に合ったDD-WRTをダウンロードしてインストールしようとしました。
しかし、あるサイトに最新のバージョンでは起動しなくなるかもしれないと書かれていたのです。
ですが、そのページに示されていたダウンロードリンクは切れていて、流石に今のバージョンでは起動できるようになっているだろうと思いこんで、最新版のものをインストールしてしまいました。
2分ほどPWRランプが赤点滅。文鎮化しないように・・・と願いながら書き込みが終わるのを待っていました。
そしてようやく書き込みが終わってPWRランプが緑点灯になりました。
しかし・・・
一向に無線LANの電波が飛ばず、おかしいなと思ってハードリセットをしてNVRAMの消去をしてみました。
でも変わらず。そこでONUルーター側のリンク状態LEDを見てみました。
すると、なぜか6秒ごとに点いたり消えたりしています。
ここで私は「あぁ・・・。文鎮化したんだ・・・。」と思い、がっくりしてしまいました。
文鎮化から復旧させる
復旧方法は無いかと、焦りながら探しまくったところ、以下の成功例を見つけました。
http://koyama4284.blogspot.com/2016/10/whr-300hp2-tftp.html
WHR-300HP2もTFTPに対応しているようで、AOSSボタンを押しながら電源を入れるとTFTPの要求に答えてくれるようです。
早速やってみました。
純正ファームウェアのヘッダをいじる
非常に紛らわしいですが、このまま純正ファームウェアを書き込んでも何も起こりません。
ファームウェアのバイナリを少しだけいじります。
FavBinEdit等のバイナリエディタでファームウェアを開いて、バイナリデータが16進数で27 05 19 56で始まるように編集します。27 05 19 56がある場所より前にあるバイナリデータは消して構いません。
完成したら、firmware_WHR-300HP2.ramというファイル名で保存します。
code.binとか、firm.binという名前にしていてもできません。
このファイルを保存したフォルダをTFTPのルートディレクトリにしてください。
手順 (上記サイトより)
- 自分のPCのIPアドレスを192.168.11.168にする
- 3cdaemonというTFTPサーバーを入手して起動する ※必ず3cdaemonを使わないと失敗します。
- AOSSボタンを押しながら電源を入れる
- 5秒ほど経ったらAOSSボタンから指を離す(この時に上手く行けば転送が始まります)
- 2~7分で純正ファームウェアに戻り、完了
復旧できたらNVRAMの消去(ハードリセット)を行ってください。
上手く復旧できない場合は・・・
ブートローダーが壊れているために、完全に何もできなくなっているかもしれません。
最低でも10回試せば行けます。
純正ファームウェア書き込み後の注意
復旧できた...と思ったら大間違い。
復旧したらファームウェアアップデートで最新版にしてください。この操作を行うことで、確実にフラッシュメモリに純正ファームウェアを書き込むことができます。
筆者のルーターでは再起動したらDD-WRTがまた起動してしまいました。中にはルーターの動作モードを切り替えるスイッチをいじった瞬間にDD-WRTに切り替わることもあります。
この操作を忘れないで行ってください。
まとめ
よく調べたら、DD-WRTをインストールするには、まずOEMファームウェアのバージョンを1.40以下にしなければならない。