SSブログ

Realtek SDK Firmware USBメモリの接続 MZK-MR150

プラネックス無線LANルーター MZK-MR150 を Realtek SDK カスタムファームウェアに書き換えて、USBメモリをマウントできた。

無線ルーターはいくつか持ってるが、USBポートがある無線ルーターは、この1台しか持ってない。
USBで、無線ルーターが大容量ストレージを持てるし、USBプリンタやUSBカメラをつないだりもしたい。
MZK-MR150 は、CPUクロックが390MHzあり、メモリ32M、フラッシュ4Mで比較的高性能。
コンパクトで、USBバスパワーで動くので、たぶん電池や携帯バッテリでも動く。
WiFiハッキングツールが動けば、電池で動くWiFiハッキングデバイスに仕立てられるかもしれない。

SDK のコンフィグで、USBサポートを設定してからカーネルをビルドする。
USBサポートの手順は、SDKの Document.tar.gz 内にある Realtek Kernel 2.6 SDK User Guide を参照する。

FWのフラッシュ書き込みは、USBシリアル変換モジュールでPCとMZKをシリアル接続して、電源投入後、ESCでブートを中断し、tftp でファームウェアを転送する。

ifconfig eth0 192.168.1.3
atftp -p -l fw.bin 192.168.1.6

fw.binの転送が終わるとブートが始まる。以下はシリアル接続のminicomの表示。
minicom は、/dev/sttyUSB0,38400,8N1

Booting...
========== SPI =============
---RealTek(RTL8196C)at 2010.09.10-11:24+0800 version v1.1f [16bit](390MHz)
no sys signature at 00010000!
no sys signature at 00020000!
no rootfs signature at 000E0000!
no rootfs signature at 000F0000!
Jump to image start=0x80500000...
decompressing kernel:
Uncompressing Linux... done, booting the kernel.
done decompressing kernel.
start address: 0x80003600
RTL8192C/RTL8188C driver version 1.6 (2011-07-18)
init started: BusyBox v1.13.4 (2012-07-10 09:08:23 JST)
Init Start...
Init bridge interface...
Init Wlan application...
WiFi Simple Config v2.2 (2011.09.08-23:32+0000).
Register to wlan0
route: SIOCDELRT: No such process
iwcontrol RegisterPID to (wlan0)
IEEE 802.11f (IAPP) using interface br0 (v1.7)
open /proc/sys/kernel/hotplug: No such file or directory
DEVPATH=/sys/block/sda/sda ACTION=add usbmount block
basename(1)
basename(2 /sys/block/sda/sda)
basename(2 /block/sda/sda)
basename(2 /sda/sda)
basename(2 /sda)
basename(3 sda)
basename(1)
basename(2 /sys/block/sda/sda)
basename(2 /block/sda/sda)
basename(2 /sda/sda)
basename(2 /sda)
basename(3 sda)
DEVPATH=/sys/block/sda/sda1 ACTION=add usbmount block
basename(1)
basename(2 /sys/block/sda/sda1)
basename(2 /block/sda/sda1)
basename(2 /sda/sda1)
basename(2 /sda1)
basename(3 sda1)
basename(1)
basename(2 /sys/block/sda/sda1)
basename(2 /block/sda/sda1)
basename(2 /sda/sda1)
basename(2 /sda1)
basename(3 sda1)
try_mount(1) sda1, /var/tmp/usb/sda1
CMD: /bin/ntfs-3g /dev/sda1 /var/tmp/usb/sda1 -o force
# cd /var/tmp/usb/sda1
# ls
Kernel 2_6 SDK User Guide v1_29.pdf System_Note.pdf
RTL819X_Firmware_Release_Note_v2.5.pdf WLAN_Application_Note_RTL819X.pdf
Realtek_WPS_user_guide_V1.4.pdf

fat32のUSBメモリは、ntfs-3g のエラーになった。NTFSでフォーマットしておかないとマウントできなかった。

USBメモリの書き込みも遅い気がする。

dd if=/dev/zero of=testfile bs=1M count=10

それから、デバイスドライバーなどカーネルにいろいろ追加すると、すぐにカーネルがサイズオーバーになってしまう。 
 
rootfs のオフセットを 0x130000 に変更で一応収まった。 
これを0x140000 にするとコンパイルは通っても、なぜか起動しない。


nice!(1)  コメント(14)  トラックバック(0) 

nice! 1

コメント 14

ENSIGN2012

atc-500様、

いつも貴重な情報有難う御座います。

小生の場合、なぜ2GByteのUSB(fat16)は良さそうなのに8GByteのUSBはダメなのかの答えが「fat32のUSBメモリは、ntfs-3g のエラーになった。NTFSでフォーマットしておかないとマウントできなかった。」に隠されているように思います。NTFSをチェックしてみます。

それから驚いたことにatc-500様のRTL8192C/RTL8188C driver versionは 「1.6 (2011-07-18)」となっていますが小生は「version 1.4 (2010-12-22)となっています。理由はSDKの中に2つのrtl819xのフォルダーが2つあり、首をかしげて小生は.tbz2を使ったのが間違いだったのではと思っています。調べて後日報告します。

最後に「これを0x140000 にするとコンパイルは通っても、なぜか起動しない」とありますがこれはUser GuideのP45とP46に従ってKernel configureとbootloaderを書き換えると0x13,000以上でも使えます。小生の場合は8MByteROMですがbootloaderはP46の数字に書き換えて、Kernel configureは以下のような数字に書き変えて現在0x30,000で動かしています。(4MByteの場合は0x13,000付近が適当なんだろうとSystem Noteのmemory layoutを見て思っていますが。。。)

(.configureの関連する部分です)

# Flash size 2M or 4M, default 2M
#
CONFIG_RTL_FLASH_SIZE=0x800000

#
# Hardware setting offset,should be 4K alignment
#
CONFIG_RTL_HW_SETTING_OFFSET=0x6000

#
# Default setting offset,should be 4K alignment.
#

#
# size of default and current setting should be same.
#
CONFIG_RTL_DEFAULT_SETTING_OFFSET=0x8000

#
# Current setting offset,should be 4K alignment.
#
CONFIG_RTL_CURRENT_SETTING_OFFSET=0xC000

#
# Webpage image offset,should be 4K alignment.
#

#
# size of web page is normally about 100K.
#
CONFIG_RTL_WEB_PAGES_OFFSET=0x10000

#
# Linux image offset,should be 4K alignment.
#

#
# this offset MUST between 0x10000~0x40000.
#
CONFIG_RTL_LINUX_IMAGE_OFFSET=0x30000

#
# Root image offset,should be 64K alignment.
#
CONFIG_RTL_ROOT_IMAGE_OFFSET=0x300000

ご参考までに。

by ENSIGN2012 (2012-07-12 22:48) 

atc-500

ensign 様ありがとうございます。
こんなことやってるのも、ensign さんと僕だけかもしれませんね。(国内で)
MR150は、USBバスパワーで動きますし、コンパクトなのでがんばっていろいろやってるんですが、
現在ビルドしているFWでは、USBメモリがマウントできなくなってしまいました。前の.configも残ってないので困ってます。
DEVPATH=/sys/block/sda/sda1 ACTION=add usbmount block
が表示されません。
それからアプリを追加したいのですが、方法が未だわからない状況です。
by atc-500 (2012-07-14 13:37) 

ENSIGN2012

atc-500様、

どうもrealtekの中心は中国語とロシアの世界のようですね?国内の関心をお持ちの方の目を引くようにたくさん記事をお書きくだされればと思っています。

小生もアプリのマニュアルを探しているのですが、
http://wenku.baidu.com/view/32cc2a2e7375a417866f8ffb.html

が参考になるのではと思っています。

おかげで、USBのストレージに関してはfat16, fat32, ntfsとも認識しました。ただしext2,ext3が認識しないのは残念でが。。。。でもこれで書き込み可能な大容量メモリーが確保できたことになり今後4〜8Mbyteの制限から開放されたことで意義はあると思っています。

こちらは非圧縮のrtl819xファイルを使ってみようとしていますが実行プログラムとシェルスクリプトでpermission deniedのエラーが多発して困っています。

SDKも本体もごきげんが悪いことが多いので忍耐が必要なようです。realtekの関係者が手助けしてくれないかなあ?

ではまた。







by ENSIGN2012 (2012-07-15 14:59) 

ENSIGN2012

atc-500様、

permission deniedのエラーメッセージはコマンド"chmod -R +x rtl819x/"で止まりました。これでRTL8192C/RTL8188C driver versionは1.6になりました。ただし、realtekのwebのSite Surveyによるとversion1.6ではsignalの値がversion1.4に較べて10程低くなりconnectionが止まることがあります。

ということで原因はわからないのですが一応version1.4に戻して使っています。

こちらはDEVPATH=/sys/block/sda/sda1 ACTION=add usbmount blockはsdaとsda1に表示されています。これはmake users_menuconfigでusbmountをチェックしたからではないかと思っています。




by ENSIGN2012 (2012-07-16 20:16) 

atc-500

ensigns様
mzk-mr150 はflash4Mなのでいろいろ制約が多いです。
rootfsのオフセットのmaxが、0x130000 みたいで、make linux_menuconfig でちょっと追加するとすぐに、kernelがover size (rootfsのオフセットをover)になってしまいます。
permissionの問題は、こっちでは、ソースをまるごと chown root にしてrootでmakeしました。
by atc-500 (2012-07-16 21:49) 

ENSIGN2012

「rootfsのオフセットのmaxが、0x130000 みたい」に関してのコメントですが小生のFlash8Mの場合も0x300000の指定が成功するときと失敗する時があります。Flashが4Mが原因でないように思いますが良くわかりません。

一応RealtekのSDKの範囲であれば機能変更の目処は立ったように思っています。次に独自のユーザーアプリの追加に挑戦したのですが小生の経験と知識では敷居は高いようです。暑くて部屋に籠る季節ではないですし知識の向上のためにアマゾンに発注してあった中古の「Building Embedded LINUX Systems」がちょうど到着しましたのでこれを涼しいところで読み終わる(?)ことができた時点で再度チャレンジしてみたいと考えています。一応今までの経緯を以下のBlogにまとめておきました。

http://openwrtwlan.blogspot.jp/?zx=7b1c26636879277

ありがとうございました。

暑い季節ですので体調に気を付けてご健勝にお過ごしください。

by ENSIGN2012 (2012-07-19 11:04) 

atc-500

ensignさま
ぜひブログに招待いただきたいです。
アプリ追加は、ぼくも全然分かりません。
openwrtでrtl8196cをサポートして欲しいです。
by atc-500 (2012-07-19 23:09) 

atc-500

ensignさま
ぜひブログに招待いただきたいです。
アプリ追加は、ぼくも全然分かりません。
早くopenwrtでrtl8196cをサポートして欲しいところです。
by atc-500 (2012-07-19 23:16) 

ENSIGN2012

atc-500様、

失礼しました。小生のBlogの閲覧者設定を「全てのユーザー」にしました。小生の調べたことをほとんどなぐり書き状態で出すのは恥ずかしいですがご参考までにです。

atc-500様も見られてご存知だとうと思いますがOpenWrt Forumでもrealtekの取り込みが一部で議論されているようですが進捗はどうなっているのでしょうか。積極的なら主催者が動くと思うのですが、何か意図があるようなので素人として静かにしていようと思っています。一方、"Confidential Information"のスタンプのあるRealtekのSDKをの内容を公の場で話をするのもある意味気が引けるのですが、素人の個人的な範囲で情報交換なのでまあいいかと思ってこちらのアプローチで楽しんでみようと思っています。

いずれにしても、無線LANをいじることで、大学卒業以来機会を与えられなかった「ソフト」に触れることができるので暇つぶしには良いと思っています。

今後共よろしく。
by ENSIGN2012 (2012-07-20 07:18) 

ENSIGN2012

atc-500様、

以下情報ですが、現状penwrtがサポートしているポケットルーターとしてTP-LINKという中国Shenchenの会社がAtheros 7240ベースで多くの製品を出しているようです。OpenWRTのTable of Hardwareから引っ張って頂ければわかると思います。例えばTL-3020のページを見ますと機能的にはatc-500様のmzk-mr150に相当することがわかると思います。

日本での販売はちょっと調べたところですが、アマゾンではTL-WR700Nが見つかりましたがこれは2MbyteのFlashの簡易版ですからFON2405と同じ問題を抱えているようです。

もう少し調べればすでに日本でも入手可能か、近い将来は可能ではないかと思っています。

以上です。

by ENSIGN2012 (2012-08-01 09:05) 

atc-500

ensign様
TP-link はhak5が採用していて前から気になってます。
http://hakshop.myshopify.com/products/wifi-pineapple
そういえばぼくも amazon で tp-link を検索してました。
realtek sdkは、分からないことだらけです。
openwrt がサポートするまで待とうかなと思ってます。
ビデオを作ったのでご覧ください。最新記事参照
by atc-500 (2012-08-02 01:08) 

ゆうり

南日本からこんにちは!
(半年後ですが、)質問があります。
RTL8196C のファームウェアが今現在 Realtek のHPからダウンロードができなくなりましたが、》他のどこかから手に入れる事ができますか。
ここで又は上記のHP経由でご返事いただければ幸いです。
よろしくお願いします
by ゆうり (2013-01-17 14:15) 

atc-500

ゆうりさん
こちらのDownload RTL819X からダウンロードできました。
http://rtl819x.sourceforge.net/
ところで久々に見たら今月4日に新しいのがリリースされてます。
試してみたいですね。
by atc-500 (2013-01-17 21:40) 

ゆうり

情報ありがとうございます!
m(_ _)m

by ゆうり (2013-01-19 21:11) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。