トップページ | 2012年11月 »

2012年10月

2012年10月31日 (水)

OpenWRT with OpenFlow 1.0 性能比較

OpenWRT with OpenFlow 1.0 で2台の Linux を 100Mイーサでつなぎ iperf コマンドで速度を測定してみました。

UDP のテストでは -b 100000000 をつけて 100Mbps として送信しています。

比較として Baffalo WHR-G300N にも参戦していただきました。こちらは、 http://openflow.inthebox.info/ で公開されている OpenFlow 1.0 のイメージを使わせてもらいました。

結果:

  Planex MZK-WNH: 約 10Mbps

  Planex MZK-W300NH2: 約 20Mbps

  Baffalo WHR-G300N: 約40Mbps

top コマンドで CPU 使用率を見ていると 30% くらいなので何が悪いんでしょうね...。

■ MZK-WNH

UDP 

$ iperf -c 10.0.0.101 -u -b 100000000
------------------------------------------------------------
Client connecting to 10.0.0.101, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size:  160 KByte (default)
------------------------------------------------------------
[  3] local 10.0.0.100 port 45558 connected with 10.0.0.101 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   114 MBytes  95.8 Mbits/sec
[  3] Sent 81451 datagrams
[  3] Server Report:
[  3]  0.0-10.3 sec  13.7 MBytes 
11.2 Mbits/sec  14.903 ms 71681/81449 (88%)
[  3]  0.0-10.3 sec  1 datagrams received out-of-order

TCP

$ iperf -c 10.0.0.101 
------------------------------------------------------------
Client connecting to 10.0.0.101, TCP port 5001
TCP window size: 21.0 KByte (default)
------------------------------------------------------------
[  3] local 10.0.0.100 port 54097 connected with 10.0.0.101 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.1 sec  17.2 MBytes 
14.3 Mbits/sec

 

■ MZK-W300NH2

UDP

$ iperf -c 10.0.0.101 -u -b 100000000
------------------------------------------------------------
Client connecting to 10.0.0.101, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size:  160 KByte (default)
------------------------------------------------------------
[  3] local 10.0.0.100 port 58068 connected with 10.0.0.101 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   114 MBytes  95.7 Mbits/sec
[  3] Sent 81415 datagrams
[  3] Server Report:
[  3]  0.0-10.3 sec  24.8 MBytes 
20.3 Mbits/sec  15.116 ms 63720/81413 (78%)
[  3]  0.0-10.3 sec  3 datagrams received out-of-order

 TCP

$ iperf -c 10.0.0.101 
------------------------------------------------------------
Client connecting to 10.0.0.101, TCP port 5001
TCP window size: 21.0 KByte (default)
------------------------------------------------------------
[  3] local 10.0.0.100 port 54095 connected with 10.0.0.101 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.1 sec  26.9 MBytes 
22.4 Mbits/sec

■ WHR-G300N

UDP

$ iperf -c 10.0.0.101 -u -b 100000000
------------------------------------------------------------
Client connecting to 10.0.0.101, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size:  160 KByte (default)
------------------------------------------------------------
[  3] local 10.0.0.100 port 53927 connected with 10.0.0.101 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   115 MBytes  96.3 Mbits/sec
[  3] Sent 81917 datagrams
[  3] Server Report:
[  3]  0.0-10.0 sec  50.2 MBytes 
42.0 Mbits/sec   0.082 ms 46139/81915 (56%)
[  3]  0.0-10.0 sec  1 datagrams received out-of-order

TCP

$ iperf -c 10.0.0.101 
------------------------------------------------------------
Client connecting to 10.0.0.101, TCP port 5001
TCP window size: 21.0 KByte (default)
------------------------------------------------------------
[  3] local 10.0.0.100 port 54093 connected with 10.0.0.101 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  51.4 MBytes 
42.9 Mbits/sec

 

2012年10月28日 (日)

MZK-W300NH2 でもOpenWRT with OpenFlow 1.0

MZK-WNH 用に公開した OpenWRT with OpenFlow 1.0 のイメージがそのままMZK-W300NH2 でも使用できました。インストール手順も同じです。

また、 MZK-W300NH2 でも、MZK-WNH にて純正ファームに戻す方法が使えることを確認しました。 ping の応答時間は2msと MZK-WNH より若干よくなってます。

MZK-WNH を純正ファームに戻す方法(シリアル接続不要)

MZK-WNH をいったん OpenWRT に入れ替えたあとに、純正ファームに戻す方法について書いておきます。色々といじっていたらたまたま見つけたという方法ですが10台やって10台ともできたので確実にできると思います。

MZK-WNH の電源を入れる前に「WPS」ボタンを押したままにしておきます。電源を入れて2~3秒そのまま押しっぱなしにすると MZK-WNH 側で TFTP サーバが起動します。

物理ポートの「1」~「4」のどれかに接続して IP アドレス 192.168.1.6 にめがけてファームのファイルを送ってください。

Windows 7 からの送付例:

C:\>tftp -i 192.168.1.6 put mzkwnh_v129.bin
転送を正常に完了しました: 7 秒間に 2977794 バイト、425399 バイト/秒

転送が終わってもファームの書き換えに2分くらいかかります。「Wireless」ランプが点滅しだしたらファームの書き換えと再起動が完了です。

ちなみに、192.168.1.6 と通信するときの MAC アドレスは本来の MAC アドレスではなく変な値が固定で使われるようです:

C\:>arp -a | findstr 192
  192.168.1.6           00-aa-bb-cc-dd-18     動的

2012年10月27日 (土)

MZK-WNH で動かす OpenFlow 1.0 のイメージをアップロードしました

[ 2013/03/24追記: 新しいOpenWrtをベースにファームウェアを作り直しました。こちらの記事を参照ください。 ]

MZK-WNH で OpenWRT with OpenFlow 1.0 に取り組んでいてずっと悩んでいた MAC アドレスが壊れる現象の原因がやっとわかりました。Planex のファームのブートログで出てくる Cimage という名前のフラッシュメモリの領域をぶっこわしていました...。やっぱり、W306R のカーネルそのままでいけるほど簡単ではなかった。この領域には、Planex の工場出荷時のデータが入っていたようです。factory という領域かと勘違いしてました。

さてさて、閑話休題(本来の話に戻します)!

注意: ここで公開するファームウェアは、まだまだとりあえず動いた!というレベルです。お使いの MZK-WNH が最悪まったく動かなくなりただのゴミとなる可能性もあることを覚悟した上でお使いください。

■ MZK-WNH で OpenWRT with OpenFlow 1.0 のイメージファイル

このブログが使っている ココログでは1ファイルのサイズ上限が 1Mバイトとのことで、面倒ですが3つに分割しておきました:

concat.bat img1.bin img2.bin img3.bin

3つの img*.bin ファイルを結合して1つのファイルにしてください。 Windows 用にバッチファイル concat.bat を用意しました。このバッチファイルを実行すると openwrt-mzk-wnh-v0.11.bin というファイルができます。

■インストール方法

(1) 通常の MZK-WNH のファームの更新と同じくWEBの管理画面からファームの更新をしてください。(concat.bat を使って結合した場合は、openwrt-mzk-wnh-v0.11.bin が指定するファイルです)

(2) しばらくすると、「Internet」のポートにて、IP アドレス 192.168.1.1 でアクセスできるようになります。ping コマンドなどで応答が返ってくるまでしばらく待ってください。(1分くらい?)

(3) telnet で 192.168.1.1 に接続してください。

(4) 以下のコマンドを実行

       mtd -r erase rootfs_data

  (この手順を不要にできないか悩んだが解決できず...)

(5) しばらくすると、Rebooting... と出ます。telnet はいったん抜けて、また 192.168.1.1 で ping の応答が返るようになるまでまってください。

以上できあがりです。

■どう動くのか

  1 ~ 4 と表示された4つのポートが OpenFlow スイッチのポートとして動作します。その番号がそのまま OpenFlow スイッチのポート番号に対応します。

  OpenFlow コントローラとの接続は「Internet」ポートで接続してください。デフォルトでは、TCP で IP アドレス 192.168.1.10、ポート番号 6633 に接続しようとします。

/etc/config/openflow ファイルで変更できます。

■OpenFlow コントローラとの接続実績

  OpenFlow コントローラの TREMA とつなで、TREMA のサンプルである repeater_hub と learning_switch にて2台の機器間で ping が通ることを動作を確認しています。

■カスタマイズ

OpenFlow スイッチ1台しか使わないならカスタマイズは不要ですが、複数台使う場合は変更が必要になります。ファイルの変更は vi コマンドが使えます(が、機能が色々と制限されているので使いにくい)。

(1) MZK-WNH 側 IP アドレス

  /etc/config/network ファイルで 192.168.1.1 となっているところを変更してください。

(2) OpenFlow スイッチの識別子

  /etc/config/openflow ファイルで  option 'dpid' の値として '000000000001' となっている箇所を変更してください。 これは、OpenFlow コントローラがOpenFlow スイッチを一意に識別するための識別子です。

変更したら reboot コマンドでリブートすれば次の起動時から反映されます。

■とりあえず試すには

本来なら OpenFlow コントローラが必要なのですがまずは動いているのを手っ取り早く確認したいと思います、よね。telnet で入ってコマンドで OpenFlow スイッチにフローを登録することができますのでまずはこれで遊んでみてください。

例: ポート1とポート2だけ通信できるように設定する

 dpctl del-flows unix:/var/run/dp0.sock
 dpctl add-flow unix:/var/run/dp0.sock idle_timeout=0,in_port=1,actions=output:2
 dpctl add-flow unix:/var/run/dp0.sock idle_timeout=0,in_port=2,actions=output:1

この設定は、電源を切ると失われます。

dpctl の詳細は、こちらを参照: dpctl.8

■動作ログ

  OpenFlow スイッチのログは /var/log/ofprotocol.log に出力されます。OpenFlow コントローラとの接続しにいっているかどうかはここで確認してみてください。

■性能は期待しないでください

  この OpenFlow はユーザ空間で動くものです。当然、性能は悪くなります。

  ただのハブとして動作させたとき ping の応答に 3ms もかかりました。

■最後に

本ファームを試してみた方はコメント残してもらえると嬉しいです。

ここにいたるまでにファームをぶっ壊した10台のMZK-WNH も喜ぶでしょう。

  (といっても、純正ファームに戻せなくなっただけで OpenWRT with OpenFlow としては動きますが)

2012年10月24日 (水)

参考にした MZK-WNH ブートログ

参考にした MZK-WNH ブートログはこちら

http://www.awaitingstock.wordpress.com/2011/08/31/planex-mzk-wnh/

シリアル接続箇所の写真があったので私も分解してシリアル接続しようと試みたのですが小さすぎて私にははんだ付けは無理でした(;_;)

2012年10月23日 (火)

PLANEX MZK-WNH で OpenWRT with OpenFlow

ジャンクで買った MZK-WNH で OpenFlow できないかと色々と試行錯誤して、怪しいところはありつつもなんとか OpenWRT 上で OpenFlow を動かすことができました。

MZK-WNH にシリアルでつないだ人の情報や分解した人の情報をあさってみると、チップは Ralink RT3050 でフラッシュは 4M。OpenWRTのサイトにてサポートされた機器から似たようなものを探すと  http://wiki.openwrt.org/toh/tenda/w306r にて W306R V2 がチップは上位の Ralink RT3052 でフラッシュが 4M で似たようなレイアウトとの記載。これで、なんとかなるかなーと。

さらに WEBからインストールできるようにするためにヘッダやチェックサムをさらに追加したイメージを作ったらファームを入れ替えて OpenWRT が起動しました。

あとは、http://www.openflow.org/wk/index.php/Pantou_:_OpenFlow_1.0_for_OpenWRT にしたがって OpenFlow を追加した上で、イメージ作り直し。

でも、OpenWRT をいれるとイーサネットの MAC アドレスの情報が壊れるという現象がおきたりおきなかったりという課題は残ったままです。

しかし、OpenWRT のコンパイルははまった。6GB 近くもディスク占有はするわ、ネットワーク接続が前提だわ、まいった。make の実行途中でソースをとってきてコンパイルするというしかけでどんどん膨らんでいく...

後日、イメージのアップロードをして、インストール手順を書く予定です。

ブートして TELNET でログインしたところの画像です:

Openwrt_2

OpenFlow のプロセス2つ(of で始まるプロセス名)が動いています:

Openflow

2012年10月20日 (土)

MZK-WNH をジャンク品で150円で購入

秋葉原で購入。ジャンク品扱いでAC アダプタも何もなしのPLANEX MZK-WNH がたった150円で売っていたので5つも買ってしまいました(^_^;)。
ACアダプタは200円と本体より高い。
写真のかごの中はすべてジャンク品でこれだけあっても2050円。
地雷ルータとして有名ですが、OpenWRTをいれて遊ぶつもりなのでだいじょうぶでしょう。たぶん...

Img_20121020_155936


2012年10月18日 (木)

PLANEX MZK-W300NH2 にシリアル接続してファーム入替え時のログ採取

MZK-W300NH2 にシリアル接続できたのでファームの入替え時のログを採取してみました。

ファームは、http://www.planex.co.jp/support/download/router/mzk-w300nh2.shtml からダウンロードした v1.09 です。ダウンロードしたファイルは ZIP でアーカイブされているので解凍して mzkw300nh2_v109.bin というファイルを取り出します。

あとは、マニュアル http://www.planex.co.jp/support/download/router/mzk-w300nh2/v2/ に従ってファームを入れ替えます。

ファームの入替え手順は、「索引」を開いて「ファームウェアをアップデート」という箇所を開けば記載されています。WEB ブラウザ経由でファームのファイルを送り込みます。

WEB ブラウザで接続するにあたって、切替スイッチを「Router」と「AP」のどちらにしているかで接続先 IP アドレスが異なるので注意が必要です。

今回は「Router」にして、LANケーブルは「LAN」側のポートに接続し、 http://192.168.111.1 に対して WEB ブラウザで接続してファームを入替えました。

■ファーム(mzkw300nh2_v109.bin) への入替え時のシリアルコンソールの出力

(切替スイッチは「Router」側にして実施)

-----> SNTP
sh: /tlupgrade.asp: not found
websRedirect entered
Kill app
device ra0 left promiscuous mode
br0: port 2(ra0) entering disabled state
device ra1 left promiscuous mode
br0: port 3(ra1) entering disabled state
Terminate the task(RtmpWscTask) with pid(822)!
device apcli0 is not a slave of br0
Remove wireless driver
RtmpOSNetDevDetach(): RtmpOSNetDeviceDetach(), dev->name=ra0!
rmmod: can't unload 'rt2860v2_sta': unknown symbol in module, or unknown parameter
Unload module
rmmod: can't unload 'nf_nat_tftp': unknown symbol in module, or unknown parameter
old mode is DHCP
Received SIGTERM
Close Wan(eth2.2) Interface!!
ERROR: Couldn't kill dnrd: No such process
No dnrd daemon found.  Exiting.
cat: can't open '/etc/resolv.conf': No such file or directory
killall: auth: no process killed
killall: upnpd: no process killed
killall: udhcpc: no process killed
killall: iwcontrol: no process killed
killall: agent: no process killed
Killed
# killall: rt2860apd: no process killed
killall: wpstool: no process killed
killall: pppoe.sh: no process killed
killall: pppd: no process killed
Free cache!
MemFree:          5572 kB
Cached:           2472 kB
f/w length=2cdfee, checksum=5933
Add Reboot timer !!


U-Boot 1.1.3 (Nov 25 2008 - 16:46:30)

Board: Ralink APSoC DRAM:  16 MB
relocate_code Pointer at: 80fa8000
****************************
Init GPIO Pin****************************
flash_protect ON: from 0xBFC00000 to 0xBFC26213
protect on 0
protect on 1
protect on 2
protect on 3
protect on 4
protect on 5
protect on 6
protect on 7
protect on 8
protect on 9
flash_protect ON: from 0xBFC30000 to 0xBFC3FFFF
protect on 10
============================================ 
Ralink UBoot Version: 3.1
-------------------------------------------- 
ASIC 3052_MP1 (MAC to GigaMAC Mode)
DRAM COMPONENT: 64Mbits 
DRAM BUS: 32BIT 
Total memory: 16 MBytes
Flash: 4 MBytes
Date:Nov 25 2008  Time:16:46:30
============================================ 
icache: sets:256, ways:4, linesz:32 ,total:32768
dcache: sets:128, ways:4, linesz:32 ,total:16384 

 ##### The CPU freq = 384 MHZ #### 

 SDRAM bus set to 32 bit 
 SDRAM size =16 Mbytes

Please choose the operation: 
   0: Load ucos code to SDRAM via TFTP Client. 
   1: Load system code to SDRAM via TFTP. 
   2: Load system code then write to Flash via TFTP. 
   3: Boot system code via Flash (default).
   4: Entr boot command line interface.
   9: Load Boot Loader code then write to Flash via TFTP. 
 1  0 
   
3: System Boot system code via Flash.
## Booting image at bfc50000 ...
Bad Magic Number,43535953 
   Image Name:   Linux Kernel Image
   Created:      2010-04-21   1:40:57 UTC

 System Control Status = 0x21040000 
   Image Type:   MIPS Linux Kernel Image (lzma compressed)
   Data Size:    2940844 Bytes =  2.8 MB
   Load Address: 80000000
   Entry Point:  802b6000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK
No initrd
## Transferring control to Linux (at address 802b6000) ...
## Giving linux memsize in MB, 16

Starting kernel ...


LINUX started...

 THIS IS ASIC
Linux version 2.6.21 (root@localhost.localdomain) (gcc version 3.4.2) #10 Mon Apr 19 14:24:30 CST 2010

 The CPU feqenuce set to 384 MHz
CPU revision is: 0001964c
Determined physical RAM map:
 memory: 01000000 @ 00000000 (usable)
Built 1 zonelists.  Total pages: 4064
Kernel command line: console=ttyS1,57600n8 root=/dev/mtdblock4
Primary instruction cache 32kB, physically tagged, 4-way, linesize 32 bytes.
Primary data cache 16kB, 4-way, linesize 32 bytes.
Synthesized TLB refill handler (20 instructions).
Synthesized TLB load handler fastpath (32 instructions).
Synthesized TLB store handler fastpath (32 instructions).
Synthesized TLB modify handler fastpath (31 instructions).
Cache parity protection disabled
cause = 800000, status = 1100ff00
PID hash table entries: 64 (order: 6, 256 bytes)
calculating r4koff... 00177000(1536000)
CPU frequency 384.00 MHz
Using 192.000 MHz high precision timer.
Dentry cache hash table entries: 2048 (order: 1, 8192 bytes)
Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
Memory: 13248k/16384k available (2254k kernel code, 3136k reserved, 517k data, 116k init, 0k highmem)
Mount-cache hash table entries: 512
NET: Registered protocol family 16
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
NET: Registered protocol family 2
Time: MIPS clocksource has been installed.
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 512 (order: 0, 4096 bytes)
TCP bind hash table entries: 512 (order: -1, 2048 bytes)
TCP: Hash tables configured (established 512 bind 512)
TCP reno registered
squashfs: version 3.2-r2 (2007/01/15) Phillip Lougher
squashfs: LZMA suppport for slax.org by jro
io scheduler noop registered (default)
FLASH_API: MAN_ID=C2 DEV_ID=22A8 SIZE=4MB
***********Init LED Driver*****************
Init GPIO Pin
Init GPIO Direction
Init GPIO Interrupt
***********Init LED Driver Finishing*****************
Ralink_gpio_init_irq 
LED & GPIO & LAN Status Driver LED_VERSION 
HDLC line discipline: version $Revision: 1.1.1.1 $, maxframe=4096
N_HDLC line discipline registered.
Serial: 8250/16550 driver $Revision: 1.3 $ 2 ports, IRQ sharing disabled
serial8250: ttyS0 at I/O 0xb0000500 (irq = 37) is a 16550A
serial8250: ttyS1 at I/O 0xb0000c00 (irq = 12) is a 16550A
loop: loaded (max 8 devices)
rdm_major = 254
GDMA1_MAC_ADRH -- : 0x00000000
GDMA1_MAC_ADRL -- : 0x00000000
Ralink APSoC Ethernet Driver Initilization. v1.60  256 rx/tx descriptors allocated, mtu = 1500!
GDMA1_MAC_ADRH -- : 0x0000000c
GDMA1_MAC_ADRL -- : 0x43305277
PROC INIT OK!
PPP generic driver version 2.4.2
PPP BSD Compression module registered
NET: Registered protocol family 24
PPPoL2TP kernel driver, V0.17
PPTP driver version 0.8.2
ralink flash device: 0x1000000 at 0xbf000000
Ralink SoC physically mapped flash: Found 1 x16 devices at 0x0 in 16-bit bank
 Amd/Fujitsu Extended Query Table at 0x0040
number of CFI chips: 1
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
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 $
usbmon: debugfs is not available
u32 classifier
    Performance counters on
nf_conntrack version 0.5.0 (128 buckets, 1024 max)
ip_tables: (C) 2000-2006 Netfilter Core Team, Type=Fully Cone
ClusterIP Version 0.8 loaded successfully
arp_tables: (C) 2002 David S. Miller
ipt_time loading
TCP cubic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
802.1Q VLAN Support v1.8 Ben Greear 

All bugs added by David S. Miller

VFS: Mounted root (squashfs filesystem) readonly. Freeing unused kernel memory: 116k freed init started: BusyBox v1.15.2 (2010-03-25 18:13:21 CST) starting pid 596, tty '': '/etc/rc.sh' cannot run '/etc/rc.sh': No such file or directory Please press Enter to activate this console. starting pid 597, tty '': '-/bin/sh' Algorithmics/MIPS FPU Emulator v1.5 BusyBox v1.15.2 (2010-03-25 18:13:21 CST) built-in shell (ash) Enter 'help' for a list of built-in commands. Sat Jan  1 00:00:00 UTC 2000 ralink_gpio:ioctl GPIO REG ralink_gpio:ioctl GPIO REG insmod: can't insert '/bin/alg/nf_nat_': No such file or directory killall: pptp.sh: no process killed killall: pppoe.sh: no process killed Close Wan(eth2.2) Interface!! No dnrd daemon found.  Exiting. No dnrd daemon found.  Exiting. cat: can't open '/etc/resolv.conf': No such file or directory phy_tx_ring = 0x009f9000, tx_ring = 0xa09f9000, size: 16 bytes phy_rx_ring = 0x009fa000, rx_ring = 0xa09fa000, size: 16 bytes RT305x_ESW: Link Status Changed GDMA1_FWD_CFG = 710000 ra2880stop()...Done Free TX/RX Ring Memory! GDMA1_MAC_ADRH -- : 0x00000011 GDMA1_MAC_ADRL -- : 0x22334455 phy_tx_ring = 0x009b3000, tx_ring = 0xa09b3000, size: 16 bytes phy_rx_ring = 0x009b4000, rx_ring = 0xa09b4000, size: 16 bytes GDMA1_FWD_CFG = 710000 eth2.1: Setting MAC address to  00 11 22 33 44 55. VLAN (eth2.1):  Underlying device (eth2) has same MAC, not checking promiscious mode. eth2.2: Setting MAC address to  00 11 22 33 44 56. device eth2 entered promiscuous mode VLAN (eth2.2):  Setting underlying device (eth2) to promiscious mode. Initialize WLAN interface ****************Use External RADIUS****************** Load RT2880 Timer Module(Wdg/Soft) rt2860v2_ap: module license 'unspecified' taints kernel. === pAd = c1011000, size = 494296 === <-- RTMPAllocAdapterBlock, Status=0 RX DESC a0bc4000  size = 2048 <-- RTMPAllocTxRxRingMemory, Status=0 1. Phy Mode = 9 2. Phy Mode = 9 3. Phy Mode = 9 RTMPSetPhyMode: channel is out of range, use first channel=0 MCS Set = ff ff 00 00 00 SYNC - BBP R4 to 20MHz.l The 4-BSSID mode is enabled, the BSSID byte5 MUST be the multiple of 4 Main bssid = 00:11:22:33:44:55 <==== rt28xx_init, Status=0 0x1300 = 00064380 Setup BRIDGE interface ifconfig: ioctl 0x8913 failed: No such device ifconfig: ioctl 0x8913 failed: No such device ifconfig: ioctl 0x8913 failed: No such device ifconfig: ioctl 0x8913 failed: No such device bridge br0 doesn't exist; can't delete it Setup bridge... device eth2.1 entered promiscuous mode eth2.1: dev_set_promiscuity(master, 1) route: ioctl 0x890c failed: No such process device ra0 entered promiscuous mode route: ioctl 0x890c failed: No such process br0: port 2(ra0) entering learning state br0: port 1(eth2.1) entering learning state br0: topology change detected, propagating br0: port 2(ra0) entering forwarding state br0: topology change detected, propagating br0: port 1(eth2.1) entering forwarding state route: ioctl 0x890c failed: No such process route: ioctl 0x890c failed: No such process ------> 802.1x--------->Enter ------> 802.1x------>Exit ****************** Router Mode ****************** Static DHCP Leases disable! route: ioctl 0x890c failed: No such process Setup WAN interface Close Wan(eth2.2) Interface!! ERROR: Couldn't kill dnrd: No such process No dnrd daemon found.  Exiting. cat: can't open '/etc/resolv.conf': No such file or directory device eth2 is not a slave of br0 device eth2.1 is already a member of a bridge; can't enslave it to bridge br0. switch reg write offset=14, value=405555 switch reg write offset=50, value=2001 switch reg write offset=98, value=7f3f switch reg write offset=e4, value=3f switch reg write offset=40, value=1001 switch reg write offset=44, value=1001 switch reg write offset=48, valuRT305x_ESW: Link Status Changed e=1002 switch reg write offset=70, value=ffff506f Set: phy[0].reg[0] = b100 Set: phy[1].reg[0] = b100 Set: phy[2].reg[0] = b100 Set: phy[3].reg[0] = b100 Set: phy[4].reg[0] = b100 udhcpc (v1.15.2) started ********************************************************************** *                           Running Diagd                            * ********************************************************************** ********************************************************************** *                          Enable WSC_UPnP                           * ********************************************************************** killall: snmpd: no process killed into eth2.2.deconfig ********************************************************************** *                            Enable LLTD                             * ********************************************************************** killall: lld2d: no process killed ********************************************************************** *                       Enable GPIO Interrupt                        * ********************************************************************** libupnp: using UDP SSDP_PORT = 1900 killall: watchdog.sh: no process killed -----> SNTP ip_table: set wan_name=eth2.2 killall: radiusd: no process killed RADIUS server disable !! device ra1 entered promiscuous mode br0: port 3(ra1) entering learning state br0: topology change detected, propagating br0: port 3(ra1) entering forwarding state interface ra-1 does not exist! interface ra-1 does not exist! interface ra-1 does not exRT305x_ESW: Link Status Changed ist! interface ra-1 does not exist! interface ra-1 does not exist! ReInit APMIB ********************************************************************** *                       FREE Page,Dentries and Inodes Cache          * ********************************************************************** MemFree:          3840 kB Cached:           1616 kB ReInit APMIB WEBS Restarting !

2012年10月16日 (火)

PLANEX MZK-W300NH2 とのシリアル接続とブートログ

秋葉原でジャンクとして500円で売っていた無線LANルータを買ってきて分解してシリアル接続してみました。これだけ安いと、壊れても後悔せずにすみます。

ネジもないしどうやって開けたらよいかいきなりつまづきましたが、http://ameblo.jp/kenchichichi/day-20110519.html を参考に開けることができました。

MZK-W300NH2 は、チップに Ralink RT3052F を使っており、ネットで情報をあさってみると 3.3V で動いているようです。シリアル接続用のピンの信号も 3.3V のようです。

まじめに RS-232C でパソコンと接続するのは大変そうだったので、秋月電子にて「TTL-232R-3V3」(http://akizukidenshi.com/catalog/g/gM-05840/) という USB ケーブルを購入しました。シリアル接続が、3.3V でできるすぐれものです。

このケーブルの端子(メス)にはブレッドボード用のワイヤ(オス)がぴったりささりましたので、ルータ側との接続はブレッドボード用のワイヤで接続しています。抜き差しもできるし便利です。おかげで、きちんとしたコネクタを用意する手間がはぶけました。

■接続方法

・CTS と RTS はブレッドボード用のワイヤ(オス-オス)で直結。
・ルータ側の基盤に JP1 と書かれたところを上にして順に以下と接続します:

  JP1
  □ 接続しない
  □ -  TXD
  □ -  GND
  □ -  RXD

ルータ側はこんな感じです。もともと半田で穴が埋めてあったのでハンダ吸取線で吸い出したうえでブレッドボード用のワイヤ(オス)を差し込み、抜けないように半田づけして固定しました。

Img_20121017_001337_2  Img_20121017_001524_2

USB ケーブル側の端子はこんな感じです:

Img_20121017_001208_2

■PC側

TeraTerm を使いました。

  メニュー「設定」→「シリアルポート」で開く設定画面で以下としました:

Tertermserialport

■ブート時の出力内容(切替スイッチを「AP」ではなくて「Router」側にして起動した場合)

U-Boot 1.1.3 (Nov 25 2008 - 16:46:30)

Board: Ralink APSoC DRAM:  16 MB
relocate_code Pointer at: 80fa8000
****************************
Init GPIO Pin****************************
flash_protect ON: from 0xBFC00000 to 0xBFC26213
protect on 0
protect on 1
protect on 2
protect on 3
protect on 4
protect on 5
protect on 6
protect on 7
protect on 8
protect on 9
flash_protect ON: from 0xBFC30000 to 0xBFC3FFFF
protect on 10
*** Warning - bad CRC, using default environment

============================================ 
Ralink UBoot Version: 3.1
-------------------------------------------- 
ASIC 3052_MP1 (MAC to GigaMAC Mode)
DRAM COMPONENT: 64Mbits 
DRAM BUS: 32BIT 
Total memory: 16 MBytes
Flash: 4 MBytes
Date:Nov 25 2008  Time:16:46:30
============================================ 
icache: sets:256, ways:4, linesz:32 ,total:32768
dcache: sets:128, ways:4, linesz:32 ,total:16384 

 ##### The CPU freq = 384 MHZ #### 

 SDRAM bus set to 32 bit 
 SDRAM size =16 Mbytes

Please choose the operation: 
   0: Load ucos code to SDRAM via TFTP Client. 
   1: Load system code to SDRAM via TFTP. 
   2: Load system code then write to Flash via TFTP. 
   3: Boot system code via Flash (default).
   4: Entr boot command line interface.
   9: Load Boot Loader code then write to Flash via TFTP. 
 1  0 
   
3: System Boot system code via Flash.
## Booting image at bfc50000 ...
Bad Magic Number,43535953 
   Image Name:   Linux Kernel Image
   Created:      2009-12-09   7:11:17 UTC

 System Control Status = 0x01040000 
   Image Type:   MIPS Linux Kernel Image (lzma compressed)
   Data Size:    2879404 Bytes =  2.7 MB
   Load Address: 80000000
   Entry Point:  802ad000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK
No initrd
## Transferring control to Linux (at address 802ad000) ...
## Giving linux memsize in MB, 16

Starting kernel ...


LINUX started...

 THIS IS ASIC
Linux version 2.6.21 (root@linux-fedora) (gcc version 3.4.2) #12 Wed Dec 9 14:56:14 CST 2009

 The CPU feqenuce set to 384 MHz
CPU revision is: 0001964c
Determined physical RAM map:
 memory: 01000000 @ 00000000 (usable)
Built 1 zonelists.  Total pages: 4064
Kernel command line: console=ttyS1,57600n8 root=/dev/mtdblock4
Primary instruction cache 32kB, physically tagged, 4-way, linesize 32 bytes.
Primary data cache 16kB, 4-way, linesize 32 bytes.
Synthesized TLB refill handler (20 instructions).
Synthesized TLB load handler fastpath (32 instructions).
Synthesized TLB store handler fastpath (32 instructions).
Synthesized TLB modify handler fastpath (31 instructions).
Cache parity protection disabled
cause = 10800050, status = 1100ff00
PID hash table entries: 64 (order: 6, 256 bytes)
calculating r4koff... 00177000(1536000)
CPU frequency 384.00 MHz
Using 192.000 MHz high precision timer.
Dentry cache hash table entries: 2048 (order: 1, 8192 bytes)
Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
Memory: 13284k/16384k available (2228k kernel code, 3100k reserved, 507k data, 116k init, 0k highmem)
Mount-cache hash table entries: 512
NET: Registered protocol family 16
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
NET: Registered protocol family 2
Time: MIPS clocksource has been installed.
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 512 (order: 0, 4096 bytes)
TCP bind hash table entries: 512 (order: -1, 2048 bytes)
TCP: Hash tables configured (established 512 bind 512)
TCP reno registered
squashfs: version 3.2-r2 (2007/01/15) Phillip Lougher
squashfs: LZMA suppport for slax.org by jro
io scheduler noop registered (default)
FLASH_API: MAN_ID=C2 DEV_ID=22A8 SIZE=4MB
***********Init LED Driver*****************
Init GPIO Pin
Init GPIO Direction
Init GPIO Interrupt
***********Init LED Driver Finishing*****************
Ralink_gpio_init_irq 
LED & GPIO & LAN Status Driver LED_VERSION 
HDLC line discipline: version $Revision: 1.1.1.1 $, maxframe=4096
N_HDLC line discipline registered.
Serial: 8250/16550 driver $Revision: 1.3 $ 2 ports, IRQ sharing disabled
serial8250: ttyS0 at I/O 0xb0000500 (irq = 37) is a 16550A
serial8250: ttyS1 at I/O 0xb0000c00 (irq = 12) is a 16550A
loop: loaded (max 8 devices)
rdm_major = 254
GDMA1_MAC_ADRH -- : 0x00000000
GDMA1_MAC_ADRL -- : 0x00000000
Ralink APSoC Ethernet Driver Initilization. v1.60  256 rx/tx descriptors allocated, mtu = 1500!
GDMA1_MAC_ADRH -- : 0x0000000c
GDMA1_MAC_ADRL -- : 0x43305277
PROC INIT OK!
PPP generic driver version 2.4.2
PPP BSD Compression module registered
NET: Registered protocol family 24
ralink flash device: 0x1000000 at 0xbf000000
Ralink SoC physically mapped flash: Found 1 x16 devices at 0x0 in 16-bit bank
 Amd/Fujitsu Extended Query Table at 0x0040
number of CFI chips: 1
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
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 $
usbmon: debugfs is not available
u32 classifier
    Performance counters on
nf_conntrack version 0.5.0 (128 buckets, 1024 max)
ip_tables: (C) 2000-2006 Netfilter Core Team, Type=Fully Cone
ClusterIP Version 0.8 loaded successfully
arp_tables: (C) 2002 David S. Miller
ipt_time loading
TCP cubic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
802.1Q VLAN Support v1.8 Ben Greear 

All bugs added by David S. Miller

VFS: Mounted root (squashfs filesystem) readonly. Freeing unused kernel memory: 116k freed init started: BusyBox v1.15.2 (2009-12-08 18:11:15 CST) starting pid 595, tty '': '/etc/rc.sh' cannot run '/etc/rc.sh': No such file or directory Please press Enter to activate this console. starting pid 596, tty '': '-/bin/sh' Algorithmics/MIPS FPU Emulator v1.5 BusyBox v1.15.2 (2009-12-08 18:11:15 CST) built-in shell (ash) Enter 'help' for a list of built-in commands. Sat Jan  1 00:00:00 UTC 2000 ralink_gpio:ioctl GPIO REG ralink_gpio:ioctl GPIO REG killall: pptp.sh: no process killed killall: pppoe.sh: no process killed Close Wan(eth2.2) Interface!! No dnrd daemon found.  Exiting. No dnrd daemon found.  Exiting. cat: can't open '/etc/resolv.conf': No such file or directory phy_tx_ring = 0x0099c000, tx_ring = 0xa099c000, size: 16 bytes phy_rx_ring = 0x0099d000, rx_ring = 0xa099d000, size: 16 bytes RT305x_ESW: Link Status Changed GDMA1_FWD_CFG = 710000 ra2880stop()...Done Free TX/RX Ring Memory! GDMA1_MAC_ADRH -- : 0x00000022 GDMA1_MAC_ADRL -- : 0xcf3abd9c phy_tx_ring = 0x00956000, tx_ring = 0xa0956000, size: 16 bytes phy_rx_ring = 0x00957000, rx_ring = 0xa0957000, size: 16 bytes GDMA1_FWD_CFG = 710000 eth2.1: Setting MAC address to  00 22 cf 3a bd 9c. VLAN (eth2.1):  Underlying device (eth2) has same MAC, not checking promiscious mode. eth2.2: Setting MAC address to  00 22 cf 3a bd 9d. device eth2 entered promiscuous mode VLAN (eth2.2):  Setting underlying device (eth2) to promiscious mode. Initialize WLAN interface ****************Use External RADIUS****************** Load RT2880 Timer Module(Wdg/Soft) rt2860v2_ap: module license 'unspecified' taints kernel. 2860 version : 1.9.0.0 (Dec  9 2009) === pAd = c100e000, size = 485088 === <-- RTMPAllocAdapterBlock, Status=0 RX DESC a0bb0000  size = 2048 <-- RTMPAllocTxRxRingMemory, Status=0 1. Phy Mode = 9 2. Phy Mode = 9 3. Phy Mode = 9 MCS Set = ff ff 00 00 00 Dirtyness =   13.   2.   3.  14.   2.  13.   2.   1.   1.   0.   0.   0.   0. signal    =  -74.-127.-127. -64.-127. -40.-127.-127.-127.-127.-127.-127.-127. signal map=   53.  34.  42.  63.  58.  87.  58.  29.   0.   0.   0.   0.   0. Channel Selected = 9 Main bssid = 00:22:cf:3a:bd:9c The UUID Hex string is:2880288028801880a8800022cf3abd9c The UUID ASCII string is:28802880-2880-1880-a880-0022cf3abd9c! <==== RTMPInitialize, Status=0 0x1300 = 00064380 Setup BRIDGE interface ifconfig: ioctl 0x8913 failed: No such device ifconfig: ioctl 0x8913 failed: No such device ifconfig: ioctl 0x8913 failed: No such device ifconfig: ioctl 0x8913 failed: No such device bridge br0 doesn't exist; can't delete it Setup bridge... device eth2.1 entered promiscuous mode eth2.1: dev_set_promiscuity(master, 1) route: ioctl 0x890c failed: No such process device ra0 entered promiscuous mode route: ioctl 0x890c failed: No such process br0: port 2(ra0) entering learning state br0: port 1(eth2.1) entering learning state br0: topology change detected, propagating br0: port 2(ra0) entering forwarding state br0: topology change detected, propagating br0: port 1(eth2.1) entering forwarding state route: ioctl 0x890c failed: No such process route: ioctl 0x890c failed: No such process ------> 802.1x--------->Enter ------> 802.1x------>Exit Static DHCP Leases disable! route: ioctl 0x890c failed: No such process Setup WAN interface Close Wan(eth2.2) Interface!! ERROR: Couldn't kill dnrd: No such process No dnrd daemon found.  Exiting. cat: can't open '/etc/resolv.conf': No such file or directory device eth2 is not a slave of br0 device eth2.1 is already a member of a bridge; can't enslave it to bridge br0. switch reg write offset=14, value=405555 switch reg write offset=50, value=2001 switch reg write offset=98, value=7f3f switch reg write offset=e4, value=3f switch reg write offset=40, value=1001 switch reg write offset=44, value=1001 switch reg write offset=48, value=1002 switch reg write offset=70, value=ffff506f Set: phy[0].reg[0] = b100 Set: phy[1].reg[0] = b100 Set: phy[2].reg[0] = b100 Set: phy[3].reg[0] = b100 Set: phy[4].reg[0] = b100 udhcpc (v1.15.2) started ********************************************************************** *                           Running Diagd                            * ********************************************************************** ********************************************************************** *                          Enable WSC_UPnP                           * ********************************************************************** into eth2.2.deconfig killall: snmpd: no process killed ********************************************************************** *                            Enable LLTD                             * ********************************************************************** killall: lld2d: no process killed libupnp: using UDP SSDP_PORT = 1900 ********************************************************************** *                       Enable GPIO Interrupt                        * ********************************************************************** killall: watchdog.sh: no process killed ip_table: set wan_name=eth2.2 killall: radiusd: no process killed RADIUS server disable !! device ra1 entered promiscuous mode br0: port 3(ra1) entering learning state br0: topology change detected, propagating br0: port 3(ra1) entering forwarding state interface ra-1 does not exist! interface ra-1 does not exist! interface ra-1 does not exist! interface ra-1 does not exist! interface ra-1 does not exist! ReInit APMIB ********************************************************************** *                       FREE Page,Dentries and Inodes Cache          * ********************************************************************** MemFree:          4208 kB Cached:           1612 kB ReInit APMIB WEBS Restarting !

トップページ | 2012年11月 »

最近のトラックバック

無料ブログはココログ