bootloader経由のインストール(WZR-900DHP)

※2018/1/5現在でWZR-900DHPではLEDE/DD-WRT書き換え後、無線出力が極端に減衰する事象が報告されています。(5GHz帯使用不可、2.4GHz帯が5mも届かない)
 Broadcom bcm53xx targetの他メーカ機種での報告ではflashメモリ上に暗号化して配置された無線LANチップ用firmwareをロードできないためと想定されています。
 この暗号化されたfirmwareはメーカー配布のfirmware imageには含まれておらず、事前取得したflashメモリのフルバックアップ以外では復旧できないようです。
 Buffaloのbcm53xx系機種(WZR-600DHP2以降/900DHP/1166DHP/1750DHP/1900DHPなど)へLEDE/DD-WRTをインストールする際にはご注意ください。

mini CFE Web Server経由のインストール方法

概要

WZR-900DHPはbootloaderとして CFE が採用されています。
WHR-G54Sの頃のCFEから大幅に機能が拡張されており、bootloaderの中で簡易Webサーバ機能が組み込まれています。

この「miniCFE web server」にWebアクセスしてファームウェアを書き込むことができます。

準備

ファームウェア確認

脆弱性対策でdebugモードが塞がれていないバージョンであることを確認します。
WZR-900DHPはver1.14未満、WZR-900DHP2はver2.28未満のファームウェアにダウングレードします。

管理画面から工場出荷状態に初期化しておきます。

バックアップ

debugモード画面にアクセスし、ID:bufpy PW:otdpopypassword でログインします。
http://192.168.11.1/cgi-bin/cgi?req=frm&frm=py-db/55debug.html
telnet daemonを有効にし、telnet で 192.168.11.1 にアクセスします。

MTD領域のアドレス配置を確認しておきます。
cat /proc/mtd

以下のコマンドでmtd領域のバックアップを取得します。
USBメモリを挿入し、そこにcdしてから書き出します。
dd if=/dev/mtdblock/0 of=mtdblick0.dd bs=1
dd if=/dev/mtdblock/1 of=mtdblick1.dd bs=1
dd if=/dev/mtdblock/2 of=mtdblock2.dd bs=1
dd if=/dev/mtdblock/3 of=mtdblock3.dd bs=1
dd if=/dev/mtdblock/4 of=mtdblock4.dd bs=1
dd if=/dev/mtdblock/5 of=mtdblock5.dd bs=1
dd if=/dev/mtdblock/6 of=mtdblock6.dd bs=1
dd if=/dev/mtdblock/7 of=mtdblock7.dd bs=1
dd if=/dev/mtdblock/8 of=mtdblock8.dd bs=1
(mtdblock/7はエラー発生する可能性あり)

さらにリストア用のファームウェアを生成しておきます。
cat mtdblock2.dd mtdblock3.dd > wzr900dhp_cfe.trx
(Windows環境で copy /b mtdblock2.dd+mtdblock3.dd wzr900dhp_cfe.trx でも可)

インストール方法(基本編)

mini CFE web Serverはnvram設定を変更することでboot中に起動できるようになります。
nvram設定変更はdebugモードにて実施します。

準備

debugモードのtelnet CLIにて以下を実施します。

nvram set boot_wait=on
nvram set wait_time=30
nvram commit
(起動時のWaitをONにし、30秒間 mini CFE Web Server が起動するようにする)

電源を落とし、PCのIPを192.168.1.2/24に設定します。

mini CFE Web Serverへの接続

bootup中のCFEのIPアドレス 192.168.1.1 宛に連続pingを実施します。
(ping -t 192.168.1.1)

ルータの電源をONにします。
mini CFE Web Serverが起動している間、TTL=100でicmp応答があります。
この間に http://192.168.1.1/ にWeb接続します。

インストール

フォームで lede-17.01.4-bcm53xx-buffalo-wzr-900dhp-squashfs.trxを選択し、uploadを実行します。

wait_time の 30秒の間に転送終了する必要があるので、うまくいかない場合は必要に応じて値を増やしてください。

インストール方法(別法)

debugモードがない機種や既にOSがbrickしているなど、nvram 設定ができない場合はAOSSボタンを押しながら電源を入れます。nvram設定に関わらず短時間、mini CFE Web Server が起動します。
ただしブラウザからの手動uploadは時間的に間に合わないため、CLIツールのcurlを利用してコマンドラインでのフォーム経由uploadを行います。

準備

以下のLinkから Windows版curl を入手します。
http://opensourcepack.blogspot.jp/p/wget-and-curl.html
(wget-1.19.1_curl-7.52.1_win32_win64.7zで実績あり)

LEDE firmware を C:\temp\ 以下に置きます。
lede-17.01.4-bcm53xx-buffalo-wzr-900dhp-squashfs.trx

PCのIPアドレスを 192.168.1.2/24 に設定します。

インストール実施

1)あらかじめ ping -t 192.168.1.1 を実行します。
2)別Windowで以下コマンドラインを準備(まだEnterしないでください)
 curl -F "name=@c:\temp\lede-17.01.4-bcm53xx-buffalo-wzr-900dhp-squashfs.trx" http://192.168.1.1/f2.htm
 (f2.htm のフォーム内の name に指定したファイルの内容をPOSTメソッドで送信)
3)AOSSボタンを押しながら電源を入れます。
 正面のLED全点灯後 緑のPower LEDだけが点灯するまで押し続けます。
4)192.168.1.1 から TTL=100でping応答があったらすかさず別窓のcurl を enter
 成功すれば Upload completedの文字列が含まれる HTML が返ってきます。
 curl: (56) Recv failure: や curl: (7) Failed to connect to 192.168.1.1 port 80: は失敗です。
5)nvramの内容をresetするには以下の方法で可能です。
 curl http://192.168.1.1/do.htm?cmd=nvram+erase

参考

http://mao.5ch.net/test/read.cgi/network/1483357034/
http://buffalo.jp/support_s/s20160527a.html ※ここに書かれたバージョン以降、ID:bufpyでのデバッグモードは削除された模樣です。