(2012.08.15)START
MZK-WNH オフィシャルな話を書いていこう。

仕様

CPU Ralink RT3050F 320MHz
Flash 29LV320 4MByte
SDRAM A3V28S40ETP 8MByte
OS Linux 2.6.21
U-Boot,squashfs,BusyBox

ファームウェアを見ると CQW-MR500 / MZK-WNH / MZK-W300NH2 の3つはよく似ている。
See: http://www.binzume.net/diary/2010-04#15A1
See: http://www.binzume.net/diary/2010-05#03A2

続きはこちら。。。

シリアル・コンソール

写真      写真      写真
MZK-WNH側のRxがプルアップされてないことに注意する。
つないだケーブル側でプルアップをしないと失敗する。
RS-232Cのレベル変換回路がオープンコレクタになっている場合はプルアップをしないと失敗する。
57600bps, 8N1,
・+3.3V
・Rx (PULL-UPが必要)
・GND
・Tx
の順

シリアルコンソールをつないでみた
モニターしたものはこちら
MZK-W300NH2のとほぼ同じはずなんで、比較してみた

MZK-WNHでもMZK-W300NH2でもそうだけど、「リターンキーを押してログインできる」
ようには書いてあるけど、実際には、リターンキーを打ってもプロンプトは出てこない。
これだと全然いじれない。

フラッシュの構成 7分割 (サイズは4MB)
実際のメモリーアドレスは、0xBFC00000〜なので、0xBFC00000を足す。
たとえば、kernelがある場所は、0x00050000==>0xBFC50000である。
ブロックレンジ名称サイズ(10進)先頭部分(もっと詳細
mtdblock00x00000000-0x00030000Bootloader196608bfc00000: ff 00 00 10 00 00 00 00 fd 00 00 10 00 00 00 00
................
mtdblock10x00030000-0x00040000Config65536bfc30000: 2e 1e 57 67 62 6f 6f 74 63 6d 64 3d 74 66 74 70
..Wgbootcmd=tftp
mtdblock20x00040000-0x00050000Factory65536bfc40000: 50 30 00 01 00 22 cf 17 48 34 ff ff ff ff ff ff
P0..."..H4......
mtdblock30x00050000-0x00160000Kernel1114112bfc50000: 43 53 59 53 00 00 10 01 00 00 05 00 52 4e 35 32
CSYS........RN52
mtdblock40x00160000-0x003e0000RootFS2621440bfd60000: 73 68 73 71 94 03 00 00 00 a8 bf 79 2d 22 00 38
shsq.......y-".8
mtdblock50x003e0000-0x00400000Cimage131072bffe0000: 48 53 30 31 fa 03 01 00 22 cf 17 48 34 00 22 cf
HS01...."..H4.".
mtdblock60x00050000-0x003e0000Uimage3735552

0x000000000x000300000x000400000x000500000x001600000x003e0000
Bootloader(0)Config(1)Factory(2)Kernel(3)RootFS(4)Cimage(5)
Uimage(6)

bootdelay=2
baudrate=57600
ethaddr="00:AA:BB:CC:DD:10"
ipaddr=10.10.10.123
serverip=10.10.10.3
自分(ルーター)のIPアドレスを10.10.10.123だとし、tftpサーバーのIPアドレスを10.10.10.3と仮定している。
シリアルのスピードは、57600bps


U-Boot

ubootになっている。
シリアルでつないで、電源オンして、観察し、タイミング良く「4」を連打すると、
停止してくれる。u-bootモードになる。空リターンを打つ。
圧縮されたカーネルイメージは0xbfc50000に入っている。
ファームウェアのイメージがそのまま入っている。
tftp経由でLinuxのカーネル起動ができる。
起動時のMTDのメッセージの中にMTDの配置が書いてある。
## Booting image at bfc50000 ...
              :
              :
Creating 7 MTD partitions on "Ralink SoC physically mapped flash":
0x00000000-0x00030000 : "Bootloader"
mtd: Giving out device 0 to Bootloader
0x00030000-0x00040000 : "Config"
mtd: Giving out device 1 to Config
0x00040000-0x00050000 : "Factory"
mtd: Giving out device 2 to Factory
0x00050000-0x00160000 : "Kernel"
mtd: Giving out device 3 to Kernel
0x00160000-0x003e0000 : "RootFS"
mtd: Giving out device 4 to RootFS
0x003e0000-0x00400000 : "Cimage"
mtd: Giving out device 5 to Cimage
0x00050000-0x003e0000 : "Uimage"
mtd: Giving out device 6 to Uimage
block2mtd: version $Revision: 1.1.1.1 $


dd-wrt化しよう


Planex提供のファームを調べる

たとえば、Ver.131のファイルの先頭部分をhexdumpで見る。
CSYSから始まる20バイトのうしろに、27 05 19 56 で始まるuImage形式が続いている。
最後にはCRCが入っているらしい。
CSYSイメージについてはこちら。
$ hexdump -C mzkwnh_v131.bin
Swan:mzk-wnh_v131 kamii$ hexdump -C mzkwnh_v131.bin | less
00000000  43 53 59 53 00 00 10 01  00 00 05 00 52 4e 35 32  |CSYS........RN52|
00000010  ee 3f 2d 00 27 05 19 56  5d 24 76 43 4c 19 dc 2d  |.?-.'..V]$vCL..-|
00000020  00 2d 3f ac 80 00 00 00  80 29 b0 00 f8 d4 8c c7  |.-?......)......|
00000030  05 05 02 03 4c 69 6e 75  78 20 4b 65 72 6e 65 6c  |....Linux Kernel|
00000040  20 49 6d 61 67 65 00 00  00 00 00 00 00 00 00 00  | Image..........|
00000050  00 00 00 00 5d 00 00 00  02 f0 6f 2b 00 00 00 00  |....].....o+....|
00000060  00 00 00 6f fd ff ff a3  b7 7f 65 ef 2c c6 5f 6c  |...o......e.,._l|
00000070  10 7d 35 de 3f 74 d6 11  4d a8 e2 66 32 bb 41 44  |.}5.?t..M..f2.AD|
00000080  d5 9c 35 7b dc 45 23 70  fa 8a f4 dc c5 60 36 0e  |..5{.E#p.....`6.|


こういう配線で実行