« 【TremaでOpenFlowプログラミング】マッチングルール早見表 | トップページ | PLANEX MZK-WNH および MZK-W300NH2 用 OpenWrt のビルド方法 »

2013年3月 9日 (土)

PLANEX MZK-WNH と MZK-W300NH2 用 OpenWrt 12.09 ファームウェア(Attitude Adjustment, r35864)をアップロードしました

[2015/05/10 追記: opkg コマンドの注意を追記しました]

PLANEX MZK-WNH と MZK-W300NH2 用に OpenWrt 12.09 のファームを作ったので公開しておきます。開発用の最新である trunk ブランチではなく attitude_adjustment のブランチのソースから作成しています。
/etc/banner によると以下のバージョンになります:
  ATTITUDE ADJUSTMENT (Attitude Adjustment, r35864)
ソースツリーで、svn info でみると
  Revision: 35879
  Last Changed Rev: 35864
でした。

Attitude Adjustment は、現時点で RC1(リリース候補1)であり正式リリースはされていないですが、OpenWrt のサイトにはコンパイル済のパッケージがおいてあり利用できます:
  http://downloads.openwrt.org/attitude_adjustment/12.09-rc1/ramips/rt305x/packages/
といっても、容量の少ないフラッシュメモリですからあれこれと入れるわけにはいきませんが。

今回は、OpenFlow 1.0 用のカスタマイズはしていません。
MZK-WNH/MZK-W300NH2 用のカスタマイズ以外はしていない純粋に OpenWrt のままのファームです。ただし、今回は、LED とボタンが扱えるようにしてあります。

ちなみに、数日前に秋葉原を歩き回ってみたら、Tsukumo12号店で MZK-W300NH2 が開封済という扱いとはいえ箱で売っていたり、あきばお~伍號店(5号店)で MZK-WNH のジャンクがまだ大量に積んであったりと、まだまだ入手可能な状態でした。

おことわり: ここで公開したファームを入れようとしたことで二度と起動しなくなる可能性があります。リスクを承知の上でお使いください。

■ MZK-WNH および MZK-W300Nh2 用の OpenWrt のイメージファイル

このブログで使っている ココログでは1ファイルのサイズ上限が 1Mバイトとのことで、面倒ですが3つに分割して置いてあります:
  concat.bat     image1.bin    image2.bin    image3.bin

3つの image*.bin ファイルを結合して1つのファイルにしてください。 Windows 用にバッチファイル concat.bat を用意しました。このバッチファイルを実行すると  openwrt-ramips-rt305x-mzk-wnh-squashfs-factory.bin というファイルができます。
  UNIX/Linux なら、cat image1.bin image2.bin image3.bin > openwrt-ramips-rt305x-mzk-wnh-squashfs-factory.bin でできあがり。
もし、ファイルが壊れていたらファームの入替え時にファイルのフォーマット不正か、チェックサムのエラーではじかれます。

■ファームの入れ替え方

通常の MZK-WNH および MZK-W300NH2 のファームの入替えの方法で入れ替えてください。

ファーム入替え手順は以下の通り(URLはプラネックス社のサイトへのリンクです)
(1) MZK-WNH の場合
手順1) 管理画面を開く
    スイッチをRouter側にしている場合, 「1」~「4」ポートにて192.168.1.1 でつながります。
      http://www.planex.co.jp/support/download/router/mzk-wnh/v31/html/menu-4-0.html
手順2) ファームを指定し入れ替える
       http://www.planex.co.jp/support/download/router/mzk-wnh/v31/html/menu-4-30.html

(2) MZK-W300NH2 の場合
手順1) 管理画面を開く
    スイッチをRouter側にしている場合, 「1」~「4」ポートにて192.168.111.1 でつながります。
  http://www.planex.co.jp/support/download/router/mzk-w300nh2/v2/html/menu-4-0.html
手順2) ファームを指定し入れ替える
    http://www.planex.co.jp/support/download/router/mzk-w300nh2/v2/html/menu-4-30.html

インジケータが100%に近くなると「Power」ランプが点滅し出すのですが、この点滅がとまったころに、OpenWrt が起動しています。
正常に起動できていれば、「1」~「4」のポートにつなげば IP アドレス 192.168.1.1 に telnet でパスワードなしで OpenWrt にログインできます。

もし、失敗して通常の起動もしなくなりどうしようもなくなったら、以前の記事 「MZK-WNH を純正ファームに戻す方法(シリアル接続不要)」を参考に純正ファームに戻してください。MZK-W300NH2 でも同じ方法が使えます。

純正ファームは以下から入手できます。
 MZK-WNH の純正ファーム:
  http://www.planex.co.jp/support/download/router/mzk-wnh.shtml
 MZK-W300NH2 の純正ファーム:
  http://www.planex.co.jp/support/download/router/mzk-w300nh2.shtml

■ファームの入れ替え方、つづき

ゴミが残って悪さすることがあるのでフラッシュメモリ内の rootfs_data 領域をクリアします。
OpenWrtへ ログイン後、以下を1回だけ実行してください:

 # mtd -r erase rootfs_data

実行すると以下のように「Rebooting...」が最後に出力されます。

 root@OpenWrt:/# mtd -r erase rootfs_data
 Unlocking rootfs_data ...
 Erasing rootfs_data ...
 Rebooting ...

この「Rebooting...」が表示されるとリブートが開始し「Power」ランプの点滅が始まります。点滅が終わり点灯状態になったら再度、telnet でログインして接続できることを確認してください。

以上で、ファームの入替え完了です。

■セキュリティについて

 最初はパスワードなしで root ユーザでログインできてしまいますが、passwd コマンドで root ユーザのパスワードを設定することができます。
  パスワード設定後は、telnet ではログインできなくなり、ssh を使う必要があります。
  Windows で SSH が使えるフリーソフトとしては TeraTerm が有名です。

■ OpenWrtについて

以下、OpenWrt の一般的なこと、今回のファーム固有のことなどを書いてます。

□ OpenWrt のドキュメント

公式サイト:
  http://wiki.openwrt.org/doc/start

右側の「Translations」という囲みに日の丸の国旗のアイコンがついたリンクがあれば翻訳版を読むことができますが、ほとんど翻訳はされていないと思った方が良いです。

□設定ファイル
  /etc/config ディレクトリ配下にあります。

  OpenWrt ではここの設定ファイルの書式を統一しています。
 uci というコマンドで読み書きできる仕掛けをもっています。
  詳しくは以下を読んでください(英語です):
   http://wiki.openwrt.org/doc/uci

□ネットワーク構成
  OpenWrt ではポートを、wan ポート、lan ポートと2種類に分けています。
  wan ポートには、ファイアウォールが設けらています。
  /etc/config/firewall ファイルや、コマンドで iptables --list を実行して確認してみてください。

 wan ポート
 物理的には、MZK-WNH および MZK-W300NH2 にて「Internet」の表示がしてあるポート。
  /etc/config/network ファイルにて config interface 'wan' と書いてあるところがこのポートの定義です。
 固定 IP は設定されておらず、dhcp で取得します。

 lan ポート
  物理的には、MZK-WNH および MZK-W300NH2 にて「1」~「4」の表示してあるポート。
  この4つはハブを構成していてつながっています。

 このポートからは DHCP で IP アドレスを取得できます。

  また、このハブを通して、OpenWrt にログインできます。
  IP アドレスは 192.168.1.1 です。
  IP アドレスを変更するには /etc/config/network ファイルを書き換えてください。
 書き換えを有効にするにはリブートするか、以下を実行します:
    # /etc/init.d/network restart

  /etc/config/network ファイルの詳細は以下を参照ください(英語です):
    http://wiki.openwrt.org/doc/uci/network

  /etc/config/firewall ファイルの詳細は以下を参照ください(英語です):
    http://wiki.openwrt.org/doc/uci/firewall

□LED

MZK-WNH, MZK-W300NH2 が持つ LED は以下の名前で点灯/消灯できます。

「Wireless」の表示がある LED
    mzk-wnh:amber:wlan
「WPS」の表示がある LED
    mzk-wnh:amber:wps
「Power」の表示がある LED
    mzk-wnh:green:power

使用例
点灯:

   # echo 255 > /sys/class/leds/mzk-wnh:amber:wlan/brightness

消灯:

   # echo 0 > /sys/class/leds/mzk-wnh:amber:wlan/brightness

□ボタン

MZK-WNH, MZK-W300NH2 が持つボタンは以下の名前のボタンとして押した(pressed)/離した(released)を検出できます。

「Reset」の表示があるボタン
    reset
「WPS」の表示があるボタン
    wps

使い方は以下を読んでください(英語です)。
  http://wiki.openwrt.org/doc/howto/hardware.button
  http://wiki.openwrt.org/doc/techref/hotplug

[2013/03/10 追記: ボタンを扱う仕掛けを用意しました。
記事「PLANEX MZK-WNH//MZK-W300NH2 用 OpenWrt にボタンの仕掛けを追加」 を参照ください。 ]

リセットボタンを押したら /etc/config 配下を正常時のバックアップから戻すとか、いっそのこと以下を実行してファームを入れた当初の状態に完全に戻すなどといった使い方ができます。
  mtd -r erase rootfs_data

□スイッチ

MZK-WNH および MZK-W300NH2 には、「Router」と「AP」を切り替えるスイッチがあります。
どちらになっているかは以下のようにして生で GPIO をアクセスしてください。

 # echo 13 > /sys/class/gpio/export
# echo in > /sys/class/gpio/gpio13/direction

/sys/class/gpio/export に使いたい GPIO の番号を書き込むと /sys/class/gpio/gpio番号 というディレクトリが作成される仕組みです。
  値は value ファイルを読み出すと取り出せます:

スイッチをRouter側にしている時:

    root@OpenWrt:/# cat /sys/class/gpio/gpio13/value
    0

スイッチをAP側にしている時:

    root@OpenWrt:/# cat /sys/class/gpio/gpio13/value
    1

リブートすると /sys/class/gpio/gpio13 が消えてしまうので /etc/rc.local ファイルの exit 0 の行の前に以下を書いておくとブート時に自動で実行してくれるので便利です。

  echo 13 > /sys/class/gpio/export
  echo in > /sys/class/gpio/gpio13/direction

  GPIO の扱いの詳細は、以下の中の「Paths in Sysfs」の箇所に書いてあります:
    https://www.kernel.org/doc/Documentation/gpio.txt

□パッケージ
  opkg コマンドで管理しています。

  インストール済一覧:
    opkg list
  インストール:
    opkg install パッケージのファイル名

  詳しくは以下を参照ください(英語です)
  http://wiki.openwrt.org/doc/techref/opkg

[2015/05/10追記:
注意: opkg install コマンドにはパッケージ名を指定する方法もありますがどんな環境でも使えるわけではないので、 パッケージの ipk ファイルを以下からダウンロードして /tmp あたりに置いておき ipkファイル名を指定する方法を用いてください:
http://downloads.openwrt.org/attitude_adjustment/12.09/ramips/rt305x/packages/

]

□ファイルシステム

ファームで書き込んだファイルシステムは読込専用のままで、overlayfs というファイルシステムによって /overlay というディレクトリ配下に変更点が書き込まれる仕掛けになっています。
LiveCD と似たような感じです。OpenWrt では /overlay はフラッシュメモリにあるのでリブート後でも変更点は残ります。

root@OpenWrt:~# mount
rootfs on / type rootfs (rw)
/dev/root on /rom type squashfs (ro,relatime)
proc on /proc type proc (rw,noatime)
sysfs on /sys type sysfs (rw,noatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime,size=6876k)
tmpfs on /dev type tmpfs (rw,noatime,size=512k,mode=755)
devpts on /dev/pts type devpts (rw,noatime,mode=600)
/dev/mtdblock5 on /overlay type jffs2 (rw,noatime)
overlayfs:/overlay on / type overlayfs (rw,noatime,lowerdir=/,upperdir=/overlay)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
none on /proc/bus/usb type usbfs (rw,relatime)

では、/overlay とはなにかというとフラッシュメモリ上のパーティション5 になります。

root@OpenWrt:/proc# df /overlay
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mtdblock5            1344       392       952  29% /overlay

フラッシュメモリのパーティション構成は以下:

root@OpenWrt:/proc# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00030000 00010000 "u-boot"
mtd1: 00010000 00010000 "u-boot-env"
mtd2: 00010000 00010000 "factory"
mtd3: 000e0000 00010000 "kernel"
mtd4: 002b0000 00010000 "rootfs"
mtd5: 00150000 00010000 "rootfs_data"
mtd6: 00020000 00010000 "Cimage"
mtd7: 00390000 00010000 "firmware"

以下のコマンドを実行すると変更を綺麗さっぱり忘れてファームを入れた当初に戻ります:
mtd -r erase rootfs_data

■おまけ
□他のマシンとのデータ交換
 OpenWrt に標準で入ってるコマンドだけだと苦労します...。
[ 2013/3/11 追記: 標準で scp コマンドが入っていることに気がつきました。SSH Server を用意すれば SSH Server と簡単にファイル交換できるようになります。 lubuntu なら、sudo apt-get install openssh-server で SSH Server が入ります。 ]

1) ファイルを取得:
    wget コマンドぐらいしかなさそう。
    http か ftp 経由で取得する。

    ftp 経由の形式:
      wget ftp://ユーザ名:パスワード@IPアドレス/パス名

2) ファイルを他のマシンに持っていくには:
    トリッキーな感じですが nc コマンドが使えます。

  例: 192.168.1.2 の TCP ポート 50000 へファイルを送る
    受け取り側(nc コマンドが使えることを前提にしてます):
      nc -l 50000 > ファイル名
  OpenWrt側:
      nc 192.168.1.2 50000 < 送りたいファイル名

  OpenWrt に入っている nc は BusyBox により提供されていて機能が制限されおり -l が使えません。つまり、サーバ側にはなれません。

□インストール後の状態
(特に記載していないところは MZK-WNH で採取)

1) メモリ
top コマンドより
Mem: 12832K used, 916K free, 0K shrd, 1100K buff, 3044K cached

1MBも残ってません...。
あとで確認したように tmpfs を大きくとっているためで大丈夫そう。

root@OpenWrt:/# cat /proc/swaps
Filename         Type            Size    Used    Priority

スワップは、なし。

2) ディスク
残り 1M ぐらい。

root@OpenWrt:/# df -k
Filesystem           1K-blocks      Used Available Use% Mounted on
rootfs                    1344       224      1120  17% /
/dev/root                 1536      1536         0 100% /rom
tmpfs                     6876        56      6820   1% /tmp
tmpfs                      512         0       512   0% /dev
/dev/mtdblock5            1344       224      1120  17% /overlay
overlayfs:/overlay        1344       224      1120  17% /
root@OpenWrt:/lib/preinit# cat /etc/mtab
rootfs / rootfs rw 0 0
/dev/root /rom squashfs ro,relatime 0 0
proc /proc proc rw,noatime 0 0
sysfs /sys sysfs rw,noatime 0 0
tmpfs /tmp tmpfs rw,nosuid,nodev,noatime,size=6876k 0 0
tmpfs /dev tmpfs rw,noatime,size=512k,mode=755 0 0
devpts /dev/pts devpts rw,noatime,mode=600 0 0
/dev/mtdblock5 /overlay jffs2 rw,noatime 0 0
overlayfs:/overlay / overlayfs rw,noatime,lowerdir=/,upperdir=/overlay 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
none /proc/bus/usb usbfs rw,relatime 0 0

tmpfs で /tmp が 6876k もとっています。

3) CPU
BogoMIPS が 212 しかない...。 MZK-W300NH2 だと 255 で少し性能が良い。

MZK-WNHだと

root@OpenWrt:/# cat /proc/cpuinfo
system type             : Ralink RT3052 id:1 rev:2
machine                 : PLANEX MZK-WNH
processor               : 0
cpu model               : MIPS 24KEc V4.12
BogoMIPS                : 212.58
wait instruction        : yes
microsecond timers      : yes
tlb_entries             : 32
extra interrupt vector  : yes
hardware watchpoint     : yes, count: 4, address/irw mask: [0x0000, 0x0ff8, 0x0ff8, 0x0ff8]
ASEs implemented        : mips16 dsp
shadow register sets    : 1
kscratch registers      : 0
core                    : 0
VCED exceptions         : not available
VCEI exceptions         : not available

MZK-W300NH2だと

root@OpenWrt:/# cat /proc/cpuinfo
system type             : Ralink RT3052 id:1 rev:3
machine                 : PLANEX MZK-WNH
processor               : 0
cpu model               : MIPS 24KEc V4.12
BogoMIPS                : 255.59
wait instruction        : yes
microsecond timers      : yes
tlb_entries             : 32
extra interrupt vector  : yes
hardware watchpoint     : yes, count: 4, address/irw mask: [0x0000, 0x0900, 0x0a20, 0x0eb0]
ASEs implemented        : mips16 dsp
shadow register sets    : 1
kscratch registers      : 0
core                    : 0
VCED exceptions         : not available
VCEI exceptions         : not available

« 【TremaでOpenFlowプログラミング】マッチングルール早見表 | トップページ | PLANEX MZK-WNH および MZK-W300NH2 用 OpenWrt のビルド方法 »

openwrt」カテゴリの記事

PLANEX MZK-W300NH2」カテゴリの記事

PLANEX MZK-WNH」カテゴリの記事

コメント

MZK-WNHのジャンクを手に入れたんですが、初期ファームがひどいのでdd-wrtが入らないものかと四苦八苦してたところ、こちらにたどり着きました。
うまくインストールできました。
最高です!
CLIで使えるまともなルータが手に入ってうれしいです~

コメントありがとうございます!
こういうコメントもらえると嬉しいです。

MZK-W300NH2 で動作しました!ありがとうございます!!

お陰様で、一昨年にばおーで2台も買って腐らせてたのが化けました!

naba_san さん、連絡ありがとうございます!
またまたコメントもらえて嬉しい。

tftpで流し込み、無事適用することができました。
ありがとうございます。

ところで
http://downloads.openwrt.org/snapshots/trunk/ramips/openwrt-ramips-rt305x-mzk-w300nh2-squashfs-sysupgrade.bin
が公開されているのでそれを/tmpにwgetし
mtd -r write firmware.bin firmware
で上書きすると正常に起動するのですが、現時点ではwifiを有効にしようとするとハングアップ→再起動を繰り返してしまうようです。

はじめまして。
MZK-WNHで、こちらのファームウェアを利用しています。大変素晴らしいです。
今、LuCIのWeb画面からルータ設定を行いたく、LuCIのインストールを試みていますが、
うまくできません。
もし、LuCIのインストールが可能でしたら、方法をご教授いただけますでしょうか?
よろしくお願いいたします。

2014年8月10日 (日) 12時36分 のコメント、ありがとうございます。

LuCI には、私も挑戦したことがあるのですが、MZK-WNH ではメモリ不足でだめでした。
コマンドラインで使うことを前提に使用することをおすすめします。

http://wiki.openwrt.org/doc/howto/luci.essentials
に記載の情報を参考にして、必要なパッケージを
http://downloads.openwrt.org/attitude_adjustment/12.09/ramips/rt305x/
からダウンロードして、インストールしまくり、Webブラウザからつないで画面が開くところまではできたのですが、何か操作しようとするとすぐに動かなくなってしまいました。


ranosgrant様
ありがとうございます。
メモリ不足が原因でしたら、どうしようもありませんね。
残念ですが、コマンドラインで利用することにします。
でも、このファームウェアは本当に素晴らしいです。
最新の純正ファームウェアでも、動作が不安定だったのですが、ずっと安定しています。
今後も、利用させていただきます。

はじめまして。
公開いただいているファームウェアをベースに
MZK-WNH をコンバータとして安定的に使用できております。
ありがとうございます。

http://wiki.openwrt.org/doc/recipes/relayclient
のとおりに設定するだけですが、少しハマったのが
Step 3: Install relayd で
opkg update
opkg install relayd
ではインストールできなかった所です。
http://downloads.openwrt.org/attitude_adjustment/12.09/ramips/rt305x/packages/
より、
relayd_2011-10-24-4e8f1fa4ca2b176500362843a9e57ea5abd4b7a3_ramips.ipk
を(/tmp/ とかに)保存して、
opkg install /tmp/relayd_2011-10-24-4e8f1fa4ca2b176500362843a9e57ea5abd4b7a3_ramips.ipk
でインストールしました。

LANポート4つ付きのコンバータが安価に入手できてHappyです!

tomsaito さん、コメントありがとうございます。
こういうコメントいただけると嬉しいです。

連絡いただいた opkg install コマンドの注意点を記事に反映させていただきました。

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1776113/50672630

この記事へのトラックバック一覧です: PLANEX MZK-WNH と MZK-W300NH2 用 OpenWrt 12.09 ファームウェア(Attitude Adjustment, r35864)をアップロードしました:

« 【TremaでOpenFlowプログラミング】マッチングルール早見表 | トップページ | PLANEX MZK-WNH および MZK-W300NH2 用 OpenWrt のビルド方法 »

最近のトラックバック

無料ブログはココログ