WZR-600DHP2

  • DD-WRTのLinuxカーネルとOpenWRTのrootfsを結合してWZR-600DHP2向けのファームウェアを作る方法です。
今のところ、有線LAN、無線LAN等が動かないので実用性は低いです。

Linux(UbuntuやFedora)での作業を推奨します。
コマンドはあまりちゃんと確認していないので間違い等があるかもしれません
コマンドをよく読んで何をしているか理解した上で実行してください。

  • 作業ディレクトリを作る

$ mkdir work
$ cd work

  • firmware-mod-kitのダウンロードと準備
firmware-mod-kitの使い方の詳細はこちら:https://code.google.com/p/firmware-mod-kit/wiki/Documentation?tm=6

$ wget https://firmware-mod-kit.googlecode.com/files/fmk_099.tar.gz
$ tar xvf fmk_099.tar.gz
$ cd fmk/src
$ ./configure
$ make -j4
$ cd ../..

makeには数分時間がかかります。

  • DD-WRTのファームウェアをダウンロード

$ wget ftp://ftp.dd-wrt.com/betas/2014/04-18-2014-r23919/buffalo_wzr-600dhp2/buffalo-wzr-600dhp2-webflash.bin -O buffalo-wzr-600dhp2-webflash-140418.bin

  • DD-WRTのカーネルとsquashfsを取りだす

$ mkdir dd-wrt
$ ./fmk/src/untrx buffalo-wzr-600dhp2-webflash-140418.bin dd-wrt
$ cd dd-wrt
$ ../fmk/src/squashfs-3.0-lzma-damn-small-variant/unsquashfs-lzma squashfs-lzma-image-3_0
$ cd ..

  • OpenWRTのファームウェアをダウンロード
$ wget http://downloads.openwrt.org/snapshots/trunk/bcm53xx/openwrt-bcm4708-netgear-r6250-squashfs.chk

  • OpenWRTのファームウェアを展開

$ dd if=openwrt-bcm4708-netgear-r6250-squashfs.chk of=openwrt.trx bs=1 skip=58
$ mkdir openwrt
$ ./fmk/src/untrx openwrt.trx openwrt
$ ../fmk/src/others/squashfs-4.2-official/unsquashfs squashfs-lzma-image-x_x

  • DD-WRTのカーネルモジュールをOpenWRTにコピー

$ cd openwrt/squashfs-root/
$ rm -r lib/modules/*
$ cp -r ../../dd-wrt/squashfs-root/lib/modules/* lib/modules/
$ cd ../..

  • OpenWRTではDD-WRTと違いカーネルモジュールの配置がフラットになっているらしいです。
それに合わせてファイルを移動します。

$ cd openwrt/squashfs-root/lib/modules/*
$ find -name '*.ko' -exec mv {} . \;
$ rm -r kernel/ extra/
$ cd ../../../../..

(ここはfirmware-mod-kitを活用したほうが楽かもしれない)

  • ファームウェアを構築
"-m"の後に続く数値はファームウェアの最大サイズです。
パッケージをたくさん入れた場合は適宜増やしてください。
(ただし大きくしすぎるとnandの他の領域まで壊しかねないので注意)

$ ./fmk/src/squashfs-3.0-lzma-damn-small-variant/mksquashfs-lzma openwrt/squashfs-root/ newroot.squashfs
$ ./fmk/src/asustrx -o dd-open.trx -m 10000000 dd-wrt/segment1 newroot.squashfs

  • できたdd-open.trxをtftpで焼きます

1.シリアルケーブルをWZR-600DHP2につなぐ
2.Ctrl+Cを押しっぱなしにしながら起動してCFEに入る
3.CFE> flash -noheader 192.168.10.2:dd-open.trx nflash0.trx
のようにして焼く
4.CFE> go
で起動する。


  • 起動後について
USBメモリは挿してマウントすれば使えます。
以下のような感じで有線LANくらいはなんとか使えそうな気がします。

root@OpenWrt:/# cd /lib/modules/*
root@OpenWrt:/lib/modules/3.10.37# insmod et
root@OpenWrt:/lib/modules/3.10.37# insmod switch-core.ko
root@OpenWrt:/lib/modules/3.10.37# insmod switch-robo.ko

root@OpenWrt:/lib/modules/3.10.37# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr B0:C7:45:91:C3:60
         BROADCAST MULTICAST  MTU:1500  Metric:1
         RX packets:0 errors:0 dropped:0 overruns:0 frame:0
         TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
         RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
         Interrupt:179 Base address:0x4000