Posted at

シリアル接続でWZR-600DHP2に、DD-WRTやOpenWrtを焼いてみた


はじめに

BUFFALO WZR-600DHP2にWeb-GUIからDD-WRTをインストールしようとしたら、またもや再起不能になりました。やっちゃいました文鎮化。ツイてない!

でも大丈夫。箱を開けてシリアル接続すれば、意外と簡単に復旧させることができます。WZR-HP-G301NHと比べると雲泥の差です。ブートローダが賢くなっています。

さらに同じ方法でDD-WRTもOpenWrtもインストールできます。よかった!

参考:


まずはこれ

自己責任でお願いします。


箱を開けます

ここが一番の難所です。

参考:


パソコンを設定します

:one:今回のOSはUbuntu 18.10です。

:two:LANポートのIPアドレスは192.168.1.2です。

:three:必要なパッケージをインストールします。

$ sudo apt-get install tftpd-hpa

$ sudo apt-get install screen


WZR-600DHP2とパソコンを接続します

:one:WZR-600DHP2のシリアル・ピンを確認します。


:two:WZR-600DHP2とUSB-UART変換モジュールを結線します。

今回はUSB2UART-CP2102を利用しました。ピンの対応は下記のとおりです。

WZR-600DHP2
USB2UART-CP2102

RX
TXD

TX
RXD

GND
GND

:three:USB2UART-CP2102をパソコンのUSBポートに接続します。

/dev/ttyUSB0 として認識されました。

$ dmesg | grep cp210x

[ 938.409962] usbcore: registered new interface driver cp210x
[ 938.409988] usbserial: USB Serial support registered for cp210x
[ 938.410031] cp210x 1-1.2:1.0: cp210x converter detected
[ 938.412473] usb 1-1.2: cp210x converter now attached to ttyUSB0

:four:screenコマンドを実行し、WZR-600DHP2のコンソールを表示するようにします。

$ sudo screen /dev/ttyUSB0 115200,cs8,-parenb,-cstopb

:five:WZR-600DHP2の電源を入れます。

するとコンソールにブート画面が表示されます。


WZR-600DHP2にDD-WRTやOpenWrtを焼きます

:one:まずはコンソールを確認します。

これでわかること。


  • ブートローダ起動直後、WZR-600DHP2のIPアドレスは192.168.1.1

  • tftpサーバのIPアドレスは192.168.1.2

  • tftpサーバのファイルlinux.trx-recoveryを転送しようとして失敗している。

Bootloader version v0.03 boot_version v0.03

Project name : WG9116H22
Press CTRL+C to cancel startup...
Device eth0: hwaddr B0-C7-45-2C-BC-F9, ipaddr 192.168.1.1, mask 255.255.255.0
gateway not set, nameserver not set
Invalid boot block on disk
Loader:raw Filesys:tftp Dev:eth0 File:192.168.1.2:linux.trx-recovery Options:(null)
Loading: Failed.
Could not load 192.168.1.2:linux.trx-recovery: Timeout occured

:two:ということで、下記を実施すればファームウェアを焼けると思いました。


  • パソコンのIPアドレスを192.168.1.2にする。(既に実施済み)

  • パソコンにtftpサーバ(tftpd-hpa)をインストールする。(既に実施済み)

  • DD-WRTやOpenWrtのファームウェアをダウンロードし、tftpサーバのディレクトリ(/var/lib/tftpboot/)にファイル名linux.trx-recoveryでコピーする。

DD-WRTの場合

$ wget https://download1.dd-wrt.com/dd-wrtv2/downloads/betas/2019/03-11-2019-r39144/buffalo_wzr-600dhp2/buffalo-wzr-600dhp2-webflash.bin

$ sudo cp buffalo-wzr-600dhp2-webflash.bin /var/lib/tftpboot/linux.trx-recovery

OpenWrtの場合

$ wget https://downloads.openwrt.org/releases/18.06.2/targets/bcm53xx/generic/openwrt-18.06.2-bcm53xx-buffalo-wzr-600dhp2-squashfs.trx

$ sudo cp openwrt-18.06.2-bcm53xx-buffalo-wzr-600dhp2-squashfs.trx /var/lib/tftpboot/linux.trx-recovery

:three:最後にWZR-600DHP2を再起動します。

そうするとファームウェアを取得し、新しいファームウェアで立ち上がります。

Bootloader version v0.03 boot_version v0.03

Project name : WG9116H22
Press CTRL+C to cancel startup...
Device eth0: hwaddr B0-C7-45-2C-BC-F9, ipaddr 192.168.1.1, mask 255.255.255.0
gateway not set, nameserver not set
Invalid boot block on disk
Loader:raw Filesys:tftp Dev:eth0 File:192.168.1.2:linux.trx-recovery Options:(null)
Loading: ... 27779072 bytes read
Entry at 0x010a3c38
Reading from 0x010a3c38: Programming...done. 27779072 bytes written
Booting(1): boot -raw -z -addr=0x8000 -max=0xef8000 nflash0.os2:
Loader:raw Filesys:raw Dev:nflash0.os2 File: Options:(null)

:four:OSが立ち上がったら、WZR-600DHP2とパソコン間のLANケーブルを抜きます。

再度ファームウェアを取得しないようにするためです。

:five:コマンドscreenを終了するには、[Ctrl]+[a][k]を入力します。

:six:USB2UART-CP2102をパソコンから取り外します。


さいごに

ださださオリジナル・ファームウェアを捨て、DD-WRTやOpenWrtでプロ仕様のルータ機能を楽しみましょう。(=^・^=)