フォト
2024年9月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          
無料ブログはココログ

MZK-SA300D

2013年11月26日 (火)

PLANEX MZK-SA300D 用カスタムファームウェア作成(2)

USBポートがあるので、USBメモリやハードディスクを接続して簡易NASを構築しようと
あれこれ試したのですが、フラッシュメモリの容量が4Mバイトしかなく、sambaやntfsの
モジュールを乗せることができませんでした。

フラッシュメモリのマッピングを変えればいけそうな感じですが、
ファームウェアのソースが無いとこれ以上は無理そうです。
取りあえず、このルータのカスタムファームウェアの作成は終了します。

まあ、このカスタムファームウェアに時間費やすなら中華製のTP-LINK TL-WR703N
なんかを買っていじった方がいいですね。

まとめ

現時点でできたこと
・UARTシリアル接続(送信は×、受信のログ表示のみ)
・tftpによるファームウェアの更新
・USB 3Gモデムによる OCN モバイル ON を使ったインターネットに接続
・FAT32のUSBメモリのマウント
・telnetによる接続
・vi等のコマンドの追加

試したが無理だったこと
・sambaサーバーの実装(rootfsのイメージ内に収まらないため無理)
・ntfs (rootfsのイメージ内に収まらないため無理)
・ftpサーバーの実装 (vsftpdを乗せたが、busエラーが発生して稼働しなかた)
・dlnaサーバー(ushareを乗せようとしたが、コンパイルエラー)

ソースがあれば出来そうと思われること
・フラッシュメモリのパーティションはカーネル用とrootfs用の2つかるが、
カーネル用のパーティションは若干空きがある。空きをrootfsに割り当てれば
sambaが乗るかもしれない。それにはカーネルの修正が必要。

追加・修正画面

システムコマンドの画面及びメニューの追加

01

WANセットアップ画面にデータ通信端末の設定を追加
(ソースが無いので、Webサーバの実行モジュール(バイナリファイル)を直接修正した)

04

telnet接続

02

カスタムファームウェアの作成は凍結します。
現状のカスタムファームウェアは納得のいなないレベルなので公開しません。

2013年11月24日 (日)

PLANEX MZK-SA300D用ファームウェア解凍・圧縮ツールの公開

需要はほとんどないと思いますが、
PLANEX製 MZK-SA300Dのファームウェアイメージ の解凍・圧縮ツールを公開します。
所有製品はMZK-SA300Dですが、ファームウェアはMZK-MF300D用のものを使っています。
実際の対象とするファームウェアイメージはMZK_MF300D_B25_httpupgrade.bin です。

本ツールを利用するとMZK_MF300D_B25_httpupgrade.bin を解凍し次のファイルを出力します。
config1.bin         デフォルト設定情報
config2.bin         設定情報
linux.bin             Linux カーネル
squashfs-root/   rootファイルシステム

更に、本ツールを利用して上記のファイルを再度圧縮してファームウェアイメージファイルを
作成することができます。これにより、コマンド追加・変更を行ったカスタムファームウェアの
作成が可能となります。

動作確認環境 
  CentOS 6.4 (Linux i686)

ダウンロード
次のファイルをダウンロードしてください。
planex_fw.tar.bz2 (895.9K)

Linuxでなら直接コマンドでダウンロード可能です。
# wget https://nuneno.cocolog-nifty.com/download/planex_fw.tar.bz2

ツールの解凍
# tar xjvf planex_fw.tar.bz2
解凍すると次のディレクトリ及びファイルが作成されます。
./planex_fw/
   tools/           ・・・  ツール格納ディレクトリ
   squashfs-pf-list.txt      ・・・   squashfs用定義ファイル
   fw_unpack.sh               ・・・  MZK_MF300D_B25_httpupgrade.bin 解凍コマンド
   fw_pack.sh                  ・・・  ファームウェア圧縮コマンド

使い方
  作業はroot権限で行います。操作ミスによりシステムにダメージを与える場合も
  ありますので、壊れても良い環境で行ってください。

  ・MZK_MF300D_B25_httpupgrade.bin の解凍
     1) ./planex_fw/ に MZK_MF300D_B25_httpupgrade.bin をコピーします。
        # cp MZK_MF300D_B25_httpupgrade.bin ./planex_fw/

     2)fw_unpack.sh を実行します。ちょっと時間がかかります。
        #cd ./planex_fw
        #./fw_unpack.sh

   これで、./planex_fw に 次のファイルが作成されます。
    config1.bin         デフォルト設定情報
    config2.bin         設定情報
    linux.bin             Linux カーネル
    squashfs-root/   rootファイルシステム

・ファームウェアイメージの作成
    上記の4つのファイルがある状態で次のコマンドを実行します。   
       #./fw_pack.sh

    作成されるファームウェアのイメージファイルは次のようなファイル名となります。
       new_px_fw20131124.bin
       new_px_年月日.bin といったファイル名になります。

     ルータの管理画面でこのファイルを指定してファームウェアの更新を行います。
 
     ファームウェアの改造はちょっとしたミスで、ルータは正常起動できなくなります。
     シリアル接続等をして復旧できる方のみ利用してください。
     万が一、起動出来なくなった場合は、
        「PLANEX MZK-SA300D TFTPによるファームウェア更新方法
     を参考にして下さい。

2013年10月27日 (日)

PLANEX MZK-SA300D 用カスタムファームウェアの作成

調査が進み、構築環境も整ってきたので、
PLANEX MZK-SA300D のカスタムファームウェアを試しに作ってみました。

修正は telnetでのログインのサポート、簡単なコマンドの追加(vi、tarなど)と、
3G USBモデム周りの修正です。

この製品3G USBモデム利用のための機能がかなり作りこまれておりまして、
ちょっと修正しただけで3G USBモデムの利用が出来てしまいました。



画面も元々存在し、OCN モバイル ONEの選択入力を追加した程度の修正で済みました。

3G USBモデムにはOCN モバイル ONEのSIMを装着しています。
インターネットにも接続出来ました。
所有していた3G USBモデムがZTE製だったのが幸運でした。

もともとrtl819x-SDKはUSB 3Gモデムをサポートサポートしているのでメーカーが
その部分の機能をサポート外で見た目は使えないようにしているんですよね。

まだ、管理画面で接続を切ったり、接続時間をチェックしたりはできません。
この作りこみはちょっと大変かも。

色々と機能追加したいのですが、フラッシュメモリの容量が4Mバイトしかなく、
そのうちrootfsに使えるのは3Mバイト弱しかありません。
ファイル共有のsamba と、NTFS用のモジュールが大きくて乗せるのは無理かも。

接続時のログ

INITZTE MF-662 ........
usbcore: registered new interface driver usbserial
USB Serial support registered for generic
usbserial_generic 1-1:1.0: generic converter detected
usb 1-1: generic converter now attached to ttyUSB0
usbserial_generic 1-1:1.1: generic converter detected
usb 1-1: generic converter now attached to ttyUSB1
usbserial_generic 1-1:1.2: generic converter detected
usb 1-1: generic converter now attached to ttyUSB2
usbserial_generic 1-1:1.3: generic converter detected
usb 1-1: generic converter now attached to ttyUSB3
usbcore: registered new interface driver usbserial_generic
usbserial: USB Serial Driver core
GPRS_PPP_MAIN_FILE_OPERATE: /dev/ttyUSB2
3G/GPRS PPP AUTH ENABLED
SPECIAL AT COMMAND RUNNING
GPRS modem init: press 

-C to disconnect AT Reseting Modem OK + Attaching to GPRS AT&FZ OK + To check signal of Modem AT+CGATT=1 OK AT+CSQ +CSQ: 19,99 OK AT+CIMI 440103076279001 OK + Dialing up with mobile phone network now AT+CGDCONT=1,"IP","3g-d-2.ocn.ne.jp" OK + requesting data connection ATD*99***1# CONNECT + Connected Serial connection established. Using interface ppp0 Connect: ppp0 <--> /dev/ttyUSB2 CHAP authentication succeeded CHAP authentication succeeded Could not determine remote IP address: defaulting to 10.64.xxx.xxx route: SIOCDELRT: No such process route: SIOCDELRT: No such process not replacing existing default route via 192.168.0.1 wanip=[153.141.xxx.xxx],__[system/set_wan.c-197] mask=[255.255.255.255],__[system/set_wan.c-201] WAN Connected Start NTP daemon IGMP Proxy v1.2 (2013.02.20-07:22+0000). local  IP address 153.141.xxx.xxx remote IP address 10.64.xxx.xxx primary   DNS address 222.146.35.1 secondary DNS address 221.184.25.1 Init Firewall Rules....

PLANEX MZK-SA300D TFTPによるファームウェア更新方法

PLANEX MZK-SA300Dは、シリアル接続出来ましたがコマンド入力が現状できません。
これではESCキーでブートを中断して、tftpによるファームウェア更新ができません。

コマンド入力不可が仕様で、別の方法があると考えて調査すると、方法がありました。
ブート時にRESETボタンを押すと中断してtftpによるファームウェア更新が可能となります。

RESETボタンを押しながら電源を入れてLEDが光ったらRESETボタンを離すでもOKです。
これなら、シリアル接続不要でファームウェア更新が可能です。

この状態で、rtl819x-sdkのINSTALL.txt の
6. Download image files to Realtek EV (evaluation) board for testing を参考にして
TFTPにてファームウェアのイメージを送信します。

この時のMZK-SA300D のIPアドレスは192.168.1.6 固定です。

具体的には次の手順(送信のPCはWindows 8.1を例にしています)
0)ファームウェアの用意
  rootfsのイメージファイルとカーネルのイメージファイルが必要です。

  例:オリジナルのアップデート用ファームウェア MZK_MF300D_B25_httpupgrade.bin を
  を利用する場合は、このファイルからrootfsとカーネルイメージを取り出す必要が
  あります。ファイル内位置はづぎの通りです。dump4w.exe などのツールを使えば
  簡単に部分抽出できます。
   Linux カーネル部 00003780  - 0011D392 (2013/10/31 訂正 91 => 92)
   rootfs部             0011D392 - 002EF3A4
   
1)PCのIPアドレスを192.168.1.1 にする(192.168.1.x なら何でもよい)
MZK-SA300Dの2つのポートのうちLANポートにLANケーブルを接続して、
  PCと通信が可能な状態にします。
(2013/10/31追記)

2)PCからTFTPクライアントソフトで root.bin(rootfsならファイル名は任意) を送信する。
  送信は30秒程度で完了します。送信後完了後、MZK-SA300Dでフラッシュメモリへの
  書き込みを行うので分程度待ちます(ここではTftpd32 を使っています)。

 

  もし送信できない場合は(bock が#0のまま)、ファイアウォールの設定、
  MZK-SA300Dに接続するLANポートをLAN側にするなどの見直しを行って下さい。

3)PCからTFTPクライアントソフトで linux.bin を送信する。

   送信は30秒程度で完了します。MZK-SA300Dは自動でリブートするのでそのまま
   放置します。 

  06

5)PCから管理画面に接続できることを確認します。
これで、カスタムファームウェアの作成に失敗して起動出来ない状態になっても
復旧ができます。

2013/10/31 追記
場合にっては、2)のroot.binの送信に成功した後、3)のlinux.binの送信でblockが#0の
ままで送信できない場合がります(ダメージが大きい場合)。
この場合は、一度MZK-SA300D の電源を落としたあと、2)をスキップして3)の
linux.binの書き込みを行って下さい。
要するに、root.binの書き込みは正常に行えたので,linux,binの書き込みだけ行えばよし。

root.bin、linux.bin の作成方法
Windows用のツールを作成しました(リンクをクリックして解凍)。
本ツールと公開されているファームウェアMZK_MF300D_B25_httpupgrade.bin
ダウンロードして、解凍したファイルを同一フォルダに保存してください。

08

ツールを解凍して得られるmk.batをダブルクリックして実行します。
これによりlinux.bin、root.bin を作成します。

2013年10月25日 (金)

PLANEX MZK-SA300D用ファームウェア解凍・圧縮ツールの作成


LAN-W300N/G8用ファームウェア解凍・圧縮ツールを流用して、
PLANEX MZK-SA300D用ファームウェア解凍・圧縮ツールを作成しました。

MZK_MF300D_B25_httpupgrade.bin をツールにて解凍し、再度ツールで圧縮して
MZK-SA300Dにてファームウェア更新を行って正常動作できることを確認しました。

これでMZK-SA300D用のカスタムファームウェアの作成の準備ができました。

fw_unpak.sh コマンドでMZK_MF300D_B25_httpupgrade.bin を解凍し、
config1.bin (デフォルト設定値)
config2.bin (ユーザ設定値)
linux.bin (Linuxカーネル)
squashfs-root/ (rootファイルシステム)
に分解します。

squashfs-root/ にコマンドを追加したりした後、
fw_pack.sh コマンドで カスタムファームウェアイメージファイルに固めます。
(図ではnew_pt_fw20131025.bin というファイル)

カスタマイズ予定
・telnetによる接続を可能にする
・コマンドの追加(vi、tarなどのコマンド)
・USBメモリ、USBHDDを利用できるようにする
・USB 3Gモデム を利用可能にする
・USB Webカメラを利用可能にする

シリアル接続でTXDの接続が間違えているのか、出力は得られますが
コマンド入力(送信)ができません。もしかしたら別の端子なのか?

2013年10月23日 (水)

PLANEX MZK-SA300D の調査その1

PLANEX製の無線アクセスポイント MZK-SA300D の調査をちびちびとやってます。
(関連:MZK-SA300D でtelnetログインできるようにする)

この製品MZK-SA300DはMZK-MF300D、MZK-EX300Dとハードウェア同じのため
ファームウェアの入れ替えができます。取りあえず一番高い値段のMZK-MF300Dの
ファームウェアに入れ替えました。

telnetで接続して中身を色々と調べてること、
製品的にはUSBポートは飾りで利用不能なのですが、ちゃんと生きています。
USBハブ経由でのUSBメモリのマウントも可能です。

コマンド的にも、lsusb、lsmod、insmod、rmmod、modprove が標準で使えるので
後からUSBディバイス用のモジュールを色々と追加できる可能性があります。

MZK-SA300の基本情報
# cat /proc/cpuinfo
system type            : RTL8196C
processor                : 0
cpu model               : 52481
BogoMIPS               : 388.30
tlb_entries               : 32
mips16 implemented  : yes

#cat /proc/version
Linux version 2.6.30.9 (root@Perish-Linux) (gcc version 3.4.6-1.3.6) #1 Wed Feb 20 15:30:23 CST 2013

# cat /proc/meminfo
MemTotal:          25672 kB
MemFree:            1328 kB
Buffers:            9204 kB
Cached:             5088 kB
SwapCached:            0 kB
Active:            11044 kB

# cat /etc/version
RTL8196C v1.0 --  三 2月 20 15:23:52 CST 2013
The SDK version is: Realtek SDK v2.5-r

ファームウェアの解析
公開しているアップデート用のファームウェアの中を見ると、
Realtek SDK で開発してる のにヘッター部がLAN-W300N/G8 と異なります。
SDKの標準のファームウェアのイメージ形式ではないようです。
2013/10/24 修正
Realtek SDK 標準 ファームウェアイメージ形式でした。

ただし、先頭の"COMDS"は見覚えがあります。LAN-W300N/G8の
設定値ファイル config.datと同じ形式です。

このデータを処理するWeb管理画面のWWWサーバー(goahead)のソースを
"COMDS"で検索をかけるとヒットしました。

# grep -n COMPCS *.h
apmib.h:1934:#define COMP_CS_SIGNATURE   "COMPCS"

apmib.h を見てみると、

これで、ヘッター部のレイアウトが分かりました。
ファームウェアの構造が解析できそうです。
今後、LAN-W300N/G8 と同じように解凍できるか調べます。

2013/10/24 追記
ファームウェアイメージの構造が分かりました。
3つのブロックに分かれています。
[設定値]
[カーネル]
[rootfs]

設定値以外はLAN-W300N/G8 と同じような各ブロックにシグニチャヘッダが付く形式
でした。ただしWebファイルのブロックはなくrootfs内に格納されていました。

rootfsはファームウェアのファイル内の0x0011d392からsize 0x001d2002(1908738バイト)
で格納されていることが判明。取り出してfileコマンドで調べてみると、

# file root.img
root.img: Squashfs filesystem, little endian, version 4.0, 1907412 bytes, 708 inodes, blocksize: 131072 bytes, created: Sun Jan  5 07:45:20 1902

Squashfs filesystem形式です。これなら解凍できますね。

# ~/bin/unsquashfs root.img
Parallel unsquashfs: Using 2 processors
667 inodes (691 blocks) to write
[=====================================================-] 691/691 100%
created 263 files
created 41 directories
created 107 symlinks
created 297 devices
created 0 fifos
取り出せました。

後は、LAN-W300N/G8 の時と同じようにファームウェアの解凍・圧縮ツールを
作成します。これでMZK-SA300D、MZK-MF300D、MZK-EX300Dが対応できると
思います。

ただし、MZK-SA300D はシリアルコンソール接続ができるのですが、
表示のみで入力ができません。コンソール周りの設定の調査が必要です。

2013/10/24 追記
ファームウェアの構造の詳細
各ブロックのヘッダー部のデータ
--------|-0--1--2--3--4--5--6--7--8--9--A--B--C--D--E--F-|---0123456789ABCDEF
00000000|43 4f 4d 50 44 53 00 07 00 00 1b b5 ff 36 47 30 |   COMPDS.....オ6G0
--------|------------------------------------------------|-------------------

--------|-0--1--2--3--4--5--6--7--8--9--A--B--C--D--E--F-|---0123456789ABCDEF
00001bc1|43 4f 4d 50 43 53 00 07 00 00 1b b3 ff 36 67 30 |   COMPCS.....ウ6g0
--------|------------------------------------------------|-------------------

--------|-0--1--2--3--4--5--6--7--8--9--A--B--C--D--E--F-|---0123456789ABCDEF
00003780|63 72 36 63 80 50 00 00 00 03 00 00 00 11 9c 02 |   cr6c.P........・
--------|------------------------------------------------|-------------------

--------|-0--1--2--3--4--5--6--7--8--9--A--B--C--D--E--F-|---0123456789ABCDEF
0011d392|72 36 63 72 00 2d 00 00 00 16 00 00 00 1d 20 02 |   r6cr.-........ .
--------|------------------------------------------------|-------------------

各ブロックのヘッダー部の詳細
[Compress config setting file ブロック1 00000000-00001bc0]
 [compress_mib_header (12バイト)]
   signature: 434f4d504453 (COMPDS)
   compRate : 0007 (7)
   compLen  : 00001bb5 (7093バイト)
 [データ(0000000C - 00001bc0) ]

[Compress config setting file ブロック2 00001bc1-0000377F]
 [compress_mib_header (12バイト)]
   signature: 434f4d504453 (COMPCS)
   compRate : 0007 (7)
   compLen  : 00001bb3 (7091バイト)
 [データ(00001bcd - 0000377F) ]

[Linux カーネル部 00003780 - 0011d391]
  [Firmware image file header(16バイト) ] 
    signature : cr6c 
    startAddr : 80500000
    burnAddr  : 00030000
    len       : 00119c02
  [データ(00003790 - 0011d391) 1154050バイト]

[rootfs 部 0011d392 -
  [Firmware image file header(16バイト) ] 
    signature : r6cr 
    startAddr : 002d0000
    burnAddr  : 00160000
    len       : 001d2002
  [データ(0011d3a2 - 002EF3A4) 1908738バイト]

2013年9月28日 (土)

MZK-SA300D でtelnetログインできるようにする

MZK-SA300 に一時的にtelnetで接続するための設定メモです。

製品情報:http://www.planex.co.jp/product/wireless/mzk-sa300d/




作業にはWindowsとLinux機(要wwwサーバー稼働)を利用
ここでLinuxはCentOSを利用するものとする。
MZK-SA300DのIPアドレスは192.168.0.250とする。
CentOSのIPアドレスは192.168.0.240とする。

手順
1)MZK-SA300Dのpasswdファイルのコピー
http://192.168.0.250/syscmd.asp を開く

次のコマンドを実行する。
cat /var/passwd

01

CentOSにログインしたTeraTerm上でviを開いて上の2行をコピペして修正する。
root::0:0:root:/:/bin/sh
nobody:x:0:0:nobody:/:/dev/null

ファイル名をpasswdとして保存し閉じる。
保存したpasswdファイルが外部からhttpプロトコルでダウンロード出来るディレクトリに
保存する。
cp passwd ~hogehoge/public_html/

2)MZK-SA300Dのpasswdの修正
削除してWWWサーバー上のpasswdファイルに差し替える。
http://192.168.0.250/syscmd.asp でコマンドを順次実行する。

rm /var/passwd
(cd /var;wget http://192.168.0.240/hogehoge/passwd)
cat /var/passwd

修正できたことを確認

3)telnetサーバーの起動
コマンドを実行
telnetd

確認

ps | grep telnetd

1221 root      1588 S    telnetd
1222 root      1588 S    sh -c ps | grep telnetd 2>&1 > /tmp/syscmd.log
1224 root      1588 S    grep telnetd

4)外部からtelnetでログイン
tertermでtelnetを指定して接続
rootでログインする。



この設定はMZK-SA300Dの電源を切ると初期化される。

rlx-linuxですがABCOMがカスタマイズしているため、改造は無理っぽい。
ファームウェアのバイナリの形式も独自形式。
シリアル接続できますが、出力のみ表示でコマンド入力できません。

この製品、USBポートがあり、USBメモリを突っ込んで
mount /dev/sda /var/tmp/usb

と実行すると正常にマウントできた。
ただ、smba、dlna、ftpサーバーないので何もできない。
USBメモリにこれらのコマンドを突っ込んで実行すればできるかもしれない。

追記 2013/09/28
USBメモリが利用できることが分かったので、wwwサーバーは不要ですね。
USBメモリにpasswdファイルを入れておいてsyscmd.aspで
mount /dev/sda /var/tmp/usb
cp -f /var/tmp/usb/passwd /var/passwd
で多分OKでしょう。