REX-WIFIUSB1を探る(USB-LAN増設編)

 rootになれば何でもできる!とOpenWrt通(自称)の主は意気込んでいたのですが、 REX-WIFIUSB1にOpenWrtを入れるのはやめました。技量がない&REX-WIFIUSB1に入っている商用版のntfsとexfatのドライバが勿体ない(もちろん、OpenWrtでは動きませんでしたw)。というわけで、どうやってREX-WIFIUSB1を機能アップするか!が課題となります。

 ネットを徘徊していたらRT5350のSDKを手に入れました。そしてクロスコンパイラ込のRT288x_SDKも手に入ってしまいました(情報元はここ、でも前者はまぁ信頼できるが後者のSDKのリンクは怪しいサイトなので最後にまとめておいておきますわ)。3年くらい前にRT5350を遊び尽くしているとは、やっぱり周回遅れな主ですw。そら2chもメルコ一色になるわな

 さてやる気を戻して、GPLかなんかに従って開示されているんだよなSDK、英語読めないけどそんな風に書いてあるよな、と自分に言い聞かせてユーザマニュアルを見てみるとUSB Ethernetが使えるようになるではないですか。というわけで、さっそくやって見ました。最初はushareを入れるつもりだったのですがw。

image

 

1.開発環境

 RT5350のSDKとRT288XのSDKをインストールします。5350のSDKを適当に展開して、クロスコンパイラ等はは5350SDKの中にあるユーザマニュアル33ページを参照してぶち込みます。主はVMWare+CentOs6.5にぶち込みました。

2.USB-LANドライバの作成

 ユーザマニュアル99ページ参照。

 ①make menuconfig実行

 OpenWrtの時と同じ様なメニューが出てきます。Custmize Kernel Settingsを選択して一旦Exitします。

image

 
 ②LANドライバの選択

 つらつらとコマンドが流れて再びメニューが出ます。ここでユーザマニュアル99ページに従いMマークを付けます。

image

 ちなみに手元にあるUSB-LANアダプタはグリーンハウスのやつ

イメージこいつUSB-LANの中ではメジャーなASIXのチップでした。

 ③make実行

 最初OpenWrtのtoolchainを入れようと思った主には信じられないほど簡単にmakeが走りますw。autoconf.hが無いというエラーがでましたがmakeを実行したディレクトリにあったのでそれをコピーしました。主はlzmaを入れてていないのでいつもそこでエラー終了しますが、romfsの下にドライバーが生成されますので問題なしです。

image

他にもいろいろなドライバが生成できそうで楽しみです。

 

2.REX-WIFIUSB1への導入

2.1 REX-WIFIUSB1のファイルシステム

 ROMとRAMしかないという、OpenWrtをやってきた身としてはいやらしいファイルシステムです。

image

 /etcだけは再起動前にmtd7にバックアップ、起動時にそれを読み込むみたいです。仕方ないのでUSBハブ(セルフパワー)を増設し、システム補助用のUSBメモリ(Candoで買った100円(税抜き)カードリーダー)とUSB-LANを接続しています。

 ちなみに、Web管理画面での再起動は/etcの中身が保存されますが、コマンドでやろうとすると、etc_tools pで保存してreboot –fで行けると思います。

image

 その他、USBに差すと勝手にマウントされる元凶の/etc/udev/scriptからadd_usb_storage.shをmvしています。

2.2 REX-WIFIUSB1への導入

 というわけで、増設したUSBメモリ(システム用)をSwapとデータに分けて、そして面倒なのでrc.localの末尾に起動コマンドを全部入れましたw。後で整理しますw。

image

imageext3はなぜかmountできませんでした

USB-LANも認識されています

image

 

3.性能向上

 さてお楽しみのベンチマークですUSBメモリ(ソフマップで1100円)をNTFSでフォーマットしてSamba共有書き込み実施!。

3.1 書き込み性能(NTFS)

image

5MB/sという数字、初めて見ました、感動。でもそんなに都合のいい話ばかりではなくwriteのキャッシュがいっぱいになると3MB/sに頻繁に落ち(グラフの波線)、Swapが発生したりするとさらに速度が落ちます。topコマンドで見ているとpdflushが頻繁に起動しています。

image

しかし、同じ環境でwifi接続(130M~150Mbps)で比べても十分高速であります。

image

 

3.2 読み込み性能(NTFS)

 ある意味キャッシュのごまかしが効きにくい読み込み性能が本来のものと言えます。

image

ちなみにwifiだと

image

なので有線LAN(100Mbps)の方が無線(802.11.n)よりも速いみたいです。暗号化とかの負荷が多いのでしょうか?

3.3 exFATの問題点

 負荷が軽いexFATが本命と思っていたのですが、REX-WIFIUSB1のドライバに問題がありそうです。大きなファイルをコピーすると

image

途中から転送速度が半減します。topコマンドで見ていた限りではwriteのキャッシュが効かなくなり同期モードで動いている(Idole時間が多い)になります。同じ事象はwifi接続でも発生します。

image

NTFSでは転送速度がSwap等で低下しても復帰しますのでexFATドライバ特有の現象ではないかと思われます。

 

4.結論

  REX-WIFIUSB1にUSB-LANとUSBメモリを接続しているため、USBの負荷が高く、mipsではいっぱいいっぱいな感じです(最大2.5wじゃ仕方ない)。多分、Nexx WT1520の純正ファームにREX-WIFIUSB1のNTFSドライバ(TUXERAの商用NTFSドライバ)を組み込んで使うのが最速だと推測されます。Nexx WT1520は純正ファームに戻せないので検証できませんがw。

#とりあえず、怪しいものを置いておきますw。
UDFドライバを動かして、寝ながらスマフォでエロDVD-PGが今の目標ですw。

カテゴリー: 20世紀プログラマ, コンピューターとインターネット | タグ: , | コメントをどうぞ

REX-WIFIUSB1を探る

 REX-WIFIUSB1にシリアルコンソールを付ける前に「やっぱrootじゃないと色々きついよな」ということでいろいろやって見ました。

1.Telnetが使える

  telnetdがデフォルトで立ち上がっています。adminでログインできますが、あまりできることは少ないです。

image

 

2.ファームウェアの中を見る

 現在最新のファームは2.000.036です。シリアル番号を無くしてしまったのでアップもダウンも出来なくなってしまいましたw。

image

 このファームウェア、重要なのは先頭から172行ぐらいがスクリプトになっています。秀丸で強引に開くとこんな感じ

image

で、このスクリプト部分を書けばファームウェアのアップ時に処理が走り自由自在じゃないか!と思ったらそんなに甘くはなかったです。スクリプト部分は動いていないみたい。しかし!ヒントがありました。チェックサムの作り方が記述されています。

sed '1,3d' ファイル名 | /usr/bin/cksum

これを実行すると2つ数字が出てきて最初の方がチェックサムになります。

image

 

3./etc/passwdを書き換える

 REX-WIFIUSB1の管理画面にはシステムの設定のバックアップと復元という機能があります。/etcの下をバックアップ&復元している感じです。これを利用します。

image

 rootのパスワードなしのpasswdと念のためshadowを用意してetcディレクトリを作りその中に入れtarします。

image

バイナリエディタで先頭に2.で表示されたチェックサムを付加します。先頭からアドレス2Cの’0A’までを付加しています。

image

そして設定の復元!

image

 

4.rootでログイン

 REX-WIFIUSB1が再起動するとrootでログインできるようになります。/etc/passwdファイルが書き換わっています。

image

 

5.OpenWrtを・・・・

 どうしましょうか?敷居がかなり高そうです。rootで入れたからと言ってなんでもできるわけじゃないだろうし。mtdもWT1520の時と違って難しそうです。フラッシュメモリは8Mあって楽そうではあるのですが・・・

Creating 9 MTD partitions on "raspi":
0x00000000-0x00800000 : "ALL"
0x00000000-0x00030000 : "Bootloader"
0x00030000-0x00040000 : "Config"
0x00040000-0x00050000 : "Factory"
0x00050000-0x001d0000 : "Kernel_RootFS"
0x001d0000-0x001e0000 : "params"
0x001e0000-0x001f0000 : "user_backup"
0x001f0000-0x00200000 : "user"
0x00200000-0x00800000 : "Rootfs"

 

#/binとか全部リードオンリーだし、/etcとかはRAMディスクだし、mtd7に書き出している感じだし、これこそOpenWrt化してほしいのだがw。「お客様の中でOpenWrtに詳しい方がいらっしゃいましたら・・・ 」

カテゴリー: 20世紀プログラマ, コンピューターとインターネット, OpenWrt | タグ: , | コメントをどうぞ

Windows使いのOpenWrt(ビルド編)

 上海問屋DN-84749ことNexx社WT1520についてさらに朗報があります。

 この人、RT5350Fを外して基板を解析するとはどれだけ暇、じゃなくて偉大なんだよ。ちなみにGPIOピンをうまく利用するとLEDを点灯できます!じゃなくてSDカードスロットを追加できたりします。

 実は重要なのはそこではなく、WT1520のリセットボタンはGPIO10番に繋がっていたということなのです。つまり、リセットボタンを効くようにできることになります。今まではOpenWrtを入れるとリセットボタンが効かなくなっていたんですよ。dtsファイルの修正が必要となりますのでImageBuilder版をビルドしながらおいおい説明します。

 でと思っていろいろやっていたら、ようやく気づきました。

WT1520がTrunk(開発版)でサポートされました!

 見よ!この勇姿

image

 日付を見る限り10月からサポートされたみたいw。とにかくめでたい。

 というわけで、make image PROFILE=”WT1520″でビルド完了!では面白くないのでリセットボタンを有効にする改造を含めて以下に示します。

 

 1. 準備

 Linuxを用意します。主の環境ではCentOS6.5をダウンロードしてVMWareにぶち込みました。ソースからコンパイルする環境と合わせて30Gぐらディスクを使っています。その他インストールするソフトはここを参考にその都度加えてください。CentOSはRedHatの所を見ればいいです。またインストールのコマンドはapt-getではなくyumになります。

 pythonとかバージョン違いで苦労した覚えがあります。

 2. ダウンロード

 http://downloads.openwrt.org/にアクセスするとOpenWrtの現在のバージョンがわかります。

image

ついこの前、14.07の正式版がでましたが、現在のTrunk版とかなり違う。まぁ、WT1520をサポートしているのはTrunk版なのでそれをダウンロードします。URLはOpenWrt-ImageBuilder-ramips_rt305x-for-linux-x8で10月20日版が最新ですね。800Mぐらいあります。

image

で、適当に展開してください。

 3. ビルド用スクリプト

 最初にWT1520を突破した方のビルド用スクリプトを改良して使っています。ImageBuilder版でファームを作る利点はパッケージの選択が楽な点ですね。

#!/bin/sh
# profile name
PROFILE="WT1520"
# packages to skip, packages to install^
PACKAGES="-6relayd -hostapd -ip6tables -kmod-ip6tables -kmod-ipv6 -kmod-ipv6 -libip6tc -odhcp6c -odhcpd -wpad -wpad-mini block-mount hostapd-mini \
kmod-fs-ext4 -kmod-fs-vfat -kmod-usb-net-cdc-ether kmod-usb-ohci -kmod-usb-serial -kmod-usb-serial-option -kmod-usb-serial-wwan kmod-usb-storage \
kmod-usb2 libuci libxtables luci -luci-app-ddns -luci-proto-3g \
mtd netifd opkg -ppp -ppp-mod-pppoe procd swconfig luci-i18n-japanese ntfs-3g  \
uboot-envtools ubox ubus ubusd uci usb-modeswitch -firewall \
-libip6tc "
# directory with files
FILES="FILES_1520"
# threads
J=4

# apply patch if not applied
#test -f target/linux/ramips/dts/NEXXWT1520.dts || patch -p1 < nexx-wt1520.patch
#test -f target/linux/ramips/dts/NEXXWT1520.dts || patch -R -p1 < support_for_nexx_wt1520.patch
# compile
#make V=s -j$J image PROFILE="$PROFILE" PACKAGES="$PACKAGES" && echo firmware is here: "$(pwd)/bin/ramips/openwrt-ramips-rt305x-nexx-wt1520-squashfs-sysupgrade.bin"

make -j$J image PROFILE="$PROFILE" PACKAGES="$PACKAGES" FILES="$FILES" && echo firmware is here: "$(pwd)/bin/ramips/openwrt-ramips-rt305x-nexx-wt1520-squashfs-sysupgrade.bin"

PACKAGESに加えるパッケージと削除するパッケージ(-を付ける)で指定、FILESはファームをWT1520に入れたときの初期設定(IPアドレスとか)を指定するファイルを入れておきます。主は今の所Luciで設定した/etc/config/networkを入れています。

image

fstabやパスワード関連も入れるとファームウェアをアップデートした時に楽になると思いますが、後日やりますw。

 

 4. ビルドを実行

 ビルドを実行するとつらつらと処理がながれてbin\ramipsの下にopenwrt-ramips-rt305x-wt1520-squashfs-sysupgrade.binファイルが出来ます。

image

ファイルサイズが3670020 バイトであることを確認してください。この大きさでないときは上手く動かなかった記憶があります。後はこちらの手順に従ってWT1520に導入してください。今更重要な注意点を

元のファームに戻す方法はシリアルコンソール経由しかない!(多分)

 元のファームはminidlnaが入っていなかったりしてひどいので後悔する人は少ないと思いますがw

 

 5. リセットボタンの有効化

 他のルータの例をみて多分正しいと思うのですが、自己責任で。

 ① DTSファイルの修正

 DTSファイルとはデバイスツリーソースのことらしいですw、詳しくはこちら、ってわかんねぇよ。何やらハードウェア構成を定義するファイル見たいです。修正するファイルは”[OpenWrtを展開したディレクトリ]/target/linux/ramips/dts/WT1520.dts”です。diffを取る能力が無いので、そのまま説明すると59行目辺りから始まる

    pinctrl {
        state_default: pinctrl0 {
            gpio {
                ralink,group = "jtag";
                ralink,function = "gpio";
            };
        };
    };

    pinctrl {
        state_default: pinctrl0 {
            gpio {
                ralink,group = "jtag","uartf";
                ralink,function = "gpio";
            };
        };
    };

“uartf”を加えます。そして、83行目辺りから末尾を変更

    ohci@101c1000 {
        status = "okay";
    };
};

にリセットキーの設定を加えます。

    ohci@101c1000 {
        status = "okay";
    };
    gpio-keys-polled {
        compatible = "gpio-keys-polled";
        #address-cells = <1>;
        #size-cells = <0>;
        poll-interval = <20>;
        reset {
            label = "reset";
            gpios = <&gpio0 10 1>;
            linux,code = <0x198>;
        };
    };

2つ目の変更はgpios=のgpio番号以外は他ルータと同じなのでわかりますが、問題は1つ目の変更のuartfを加えること。調べたがよくわからん、かろうじて

  • LinuxにはPINコントロールというサブシステムがある
  • PINコントロールにはGPIOをMUXする機能(共有みたいなもんか)がある
  • group=”xxx”で指定しないと共有機能が有効にならないような感じw
  • RT5350のデータシートや/sys/kernel/debug/pinctrl/pinctrl.1/pingroupsを見るとGPIOの10番はuartf(シリアル通信用のIC)が使っているみたい

    image

なお、PINのMUXについてはこちら。日本語ではいい説明が見つからなかった。英文で流し読みだけどまぁ、そんな感じでWindows使いなら動けばおk。

 

②リセットボタンの有効化

 ①で加えた変更を適用したファームウェアをWT1520に適用するとリセットボタンが有効になります。実際には/etc/rc.buttonの下のresetスクリプトが起動されます。長押しすると初期設定に戻ります。

image

嗚呼、この機能を有効にしておけばFirewallを削除し忘れて一切アクセスできなくなった文鎮WT1520を救えるのに・・・あの頃は今思えば若かったw・・・・・・・それはシリアルコンソール編で

そうそう、リセットボタンが効くようになってもOpenWrtのfailsafeモードで起動できませんでしたので、その点はご注意を。

 

#現時点でノータッチのシリアルコンソール編じゃなくてUSBIP編かもw

REX-WIFIUSB1を開腹したらWT1520と同じRT5350Fが出てきた。俄然、シリアルコンソールにやる気が出てきたぞ。exFATのドライバ(ry
image

カテゴリー: 20世紀プログラマ, コンピューターとインターネット, OpenWrt | タグ: , , | コメントをどうぞ

Windows使いのOpenWrt(一段落編完結)

上海問屋DN-84749ことWT1520についてかなり朗報があります。

  1. WT1520のwikiが出来ました! (Buttonsの所とかかなり怪しいのですがw)
  2. WT1520のシリアルポートはここだ!(いずれ、文鎮となったWT1520をArduinoの3.3v版で救出したい。実際開けてみるととても小さいですよw)
  3. NTFSへの書き込み約3.5MB/s達成(思いっきり条件付きw)
  4. ソースからビルドする方法の詳細はこちら

2.4.2 ExtRootファーム更新

ExtRoot設定は簡単なのですがファームウェアをアップデートしようとすると途端にややこしくなります。設定はLuciからでも可能です。Luciの「ルートを使用する」を使わずにマウントポイント/overlayにしています。

問題はファームウェアの更新です。手順としてはここを参考に以下のようになりました。

①現状のバックアップ

Luciのバックアップで現状の設定をバックアップします。

image

②/etc/.extroot-uuidの削除

OpenWrtが自動で作成するExtRoot用のファイルを削除します。これをやらないとExtRootが設定できなかったりExtRootを解除して新しいファームをExtRootにコピーすることができません。

image

③sysupgradeの実行

ファームウェアを/tmpにコピーしてsysupgradeを実行。ファームの書き換えが終わると自動的に再起動します。

image

④ファームウェアのコピー

再起動後、telnetで入りrootのパスワードを設定しsshでログイン。ExtRootが外れている。ルータのフラッシュROMをExtRootするusbメモリにコピー(usbメモリのExtRootのファイルを削除した方がいいかも)

image

⑤ExtRootの有効化

/etc/config/fstabにExtRootのマウントを設定して再起動。

image

⑥設定のリストア

ExtRootが有効になっていることを確認。

image

以前のファームウェアで追加していたパッケージ(samba、uShareなど)を再度インストールして、①で取っておいたバックアップをリストアする。

image

重要なのは②の/etc/.extroot-uuidを削除することです。これをやらないと④の時点ですでにExtRootされていたり、⑤でfstabを修正してもExtRootされなかったりで混乱のもとになります。微妙にまちがっているかもしれませんが動くのでおk。OpenWrtのWikiも参考にどうぞ。

あとuuidは”block info”コマンドで参照できます。

2.5 Samba

 インストールするパッケージはluci-app-sambaでおk。ついでにsamba36-serverもインストールされます。

image

luci-app-xxxxxをインストールするとLuciメニューに設定用の画面が追加されます、便利です、日本語ですw。

image

ただ、Luci画面だけからは設定できない部分があります。samba用のユーザを追加する必要があります。詳細はこちら

2.4 ntfs-3G

2.4.1 インストール

NTFSに書き込み可能とするためntfs-3gのパッケージを追加する必要があります。opkgでインストールしようとするとカーネル依存と言われてインストールできませんでした。build時にntfs-3gのパッケージを組み込んでファームを生成して対応しています。

image

いわゆるカーネルモジュール(k-mod-xxとかntfs-3gとか)の/rom(ファームウェアのリードオンリー領域)に影響を与えるパッケージは主の環境ではopkgインストールできませんでした。

2.4.2 NTFSのマウント

ntfs-3gではfstabの設定で起動時に自動マウントできません(参照)。面倒なのでrc.localにマウントコマンドを記述しました。

image

2.4.3 NTFSへの読み込み・書き込みスピード

ようやく性能を計れる状態になりました。ntfs-3gではマウントするときのオプションで大きく性能が異なってきます。

1)一番大人しい状態

読み書きは同期モード。コマンド的には

ntfs-3g -o rw,sync -o noatime /dev/sdb1 /mnt/share

image

2)非同期モード

組み込み系ではご法度の非同期モード

ntfs-3g -o async -o noatime /dev/sdb1 /mnt/share

image

3)big_writeモード

本命big_writeモード

ntfs-3g -o big_writes -o async -o noatime /dev/sdb1 /mnt/share

image

3.5MB/S前後が安定して出ています。素晴らしい!これで地上波TSの書き込みはクリアできそうです。しかし・・・

4)読み込み性能

image

こればSambaでファイルをオープンしてみると微妙に帯域が足りない。音声が途切れ途切れになります。困りました。そこで

2.6 DLNA

2.6.1 minidlna

 minidlnaを入れてみましたが、問題点があり使えません

  • 重い!特にファイル一覧のDBを作成しているときはSWAPを数十M使っていました。
  • 一部のTSファイルを認識できない。一覧に出てこない

ということで断念。残るなushareとなりました。

2.6.1 uShare

1)パッケージ

Trunk版にはushareがありません。そこでoldpackagesから持ってきます。OPKG-設定に一行追加します。

src/gz oldpackagew http://downloads.openwrt.org/barrier_breaker/14.07/ramips/rt305x/packages/oldpackages/

リストを更新後、パッケージが出てくるようになります。もしかしたらlibdlnaもインストールしておいた方がいいかもです。

image

2)uShare動作の為の小細工

パッケージをインストールしても起動できません。色々小細工が必要ですw。

① ライブラリの追加

image

55と同じようにシンボリックリンクで54を作りますw。もはや動けば何でもいいw

ln -s libavformat.so.55.48.100 libavformat.so.54
ln -s libavcodec.so.55.69.100 libavcodec.so.54

② uShareの設定

LuciでuShareの設定を行います。詳細なオプションはこちらを参照

image

③/etcinit.d/ushareの変更

それでも動かない場合、/etc/init.d/ushareの変更。情報元はこちら。なぜか起動前にsleep 10を入れると動きますw。

image

④ /etc/rc.localに起動コマンドを追加

/etc/rc.dに追加してもいいのですが、NTFSをrc.localでマウントしているのでそれ以降に起動しないといけません。

image

⑤ フリーなメモリをできるだけ増やす

uShareは簡易的なDLNAとはいえメモリをかなり消費します。少しでも動作が軽くなるように/tmp(RAMディスク)の容量を減らしフリーなメモリを増やします。

/etc/rc.localに以下のコマンドを追加。デフォルトでは16Mを8Mにしました。情報元はこちら

mount tmpfs /tmp -t tmpfs -o remount,size=8000k,nosuid,nodev

視聴中の左の%がCPU使用率で右がメモリ使用率です。SWAPも設定した方がいいみたいです。

image

image

3 そして

imageimageimage

実用的かはさておき、iphone4S+nplayerで途切れる回数が大幅に減少しますw。DLNAのがSambaより軽いんですね。

ちなみに環境としてはWT1520にUSBハブ(二股ケーブルで電源強化)にUSBメモリとUSB-SATA変換を差しています。

そして、無駄なOpenWrt上で無駄なサービスを停止(NTPとか)を見直しSambaでも同じくらい再生できるようになりました。

おまけの性能測定(目安として)

SDカード32G、Windowsでの書き込み約11MB/s、読み込み約19MB/s。Sambaのファイルコピーを目測で測定w

format アロケーションサイズ マウント
オプション
書き込み(MB/s) 読み込み
(MB/s)
NTFS

512

非同期big_write

3.0

2.3

NTFS

8k

非同期
big_write

3.2

2.4

NTFS

64k

非同期
big_write

2.5

2.4

ext3

?

非同期

4.0

2.9

ext3

?

同期

2.1

2.9

ext3でも読み込みはあまり早くならないです。読み込みのが遅いなんて何かがおかしい。まぁ、いいか

image

DLNA経由でNTFSファイル再生時のCPU使用率(いっぱいいっぱいですw)

#疲れた。でもビルド編とシリアルコンソール編に続くw

カテゴリー: 20世紀プログラマ, コンピューターとインターネット, OpenWrt | タグ: , , | コメントをどうぞ

Windows使いのOpenWrt(一段落編その1)

ようやくDN-84749ことWT1520をOpenWrt化して遊べる環境まで持ってこれました。文鎮となったDN-84749に感謝を!ググったら見つかったすべての情報に感謝を!

と、いきなりシュタインズゲートで始まりましたがWT1520、上海問屋で10月8日までお安いですよ、もう1台買おうかなw。

さてここ一ヶ月、時間のある時はずーと OpenWrtを触っていましたわ。とりあえず

image

IEのツールバーで色々個人情報が漏れていますが日本語でセットアップできるって素晴らしい!別に英語でもいいのですが、「あれどこで設定するんだっけ?」というときに日本語表記のが確実に速いです。luci-i18n-japaneseのパッケージをインストールすると日本語になります。言いたいことは

Luciさんが居なければxx.confを全部手動設定だったんだよ無理ゲーだったよ。ありがとう!

1.ファームウェアの構築

もはや忘れてしまっているので詳細は別稿で自分でもやりながら忘れないように振り返りたいと思います。ファームをビルドするには主に3つ方法があり

① できているファームをもらってくる方法(DD-WRT方式)
② trunk(開発版)のImageBuilderから生成する方法。パッチはこちら
③ ソースからもらってきて0からコンパイルする方法

がありますが最終的に②を使用しました。ちなみに①のファームだと

image

②のファームだとちょっと新しいです。名前も変わっているし

image

②のビルドに関してはパッチを落としてそしてMakefileを一か所書き換えた記憶があります。詳細は後日w最新版のSnapshotでWT1520がサポートされました。

#makefile大っ嫌い。.configとか入れ子でどこで落ちたかわからんし。デバックしずらいし苦労したわ。Windowsを使っていると「ごめんねエラー、あとよろしく」的なメッセージが許せん!

2.ネットワーク環境

今の環境はこんな感じです。WT1520に4ギガのUSBメモリを差しています。

image

主なセットアップを以下に示します

2.1 インタフェース

VLANってなに?おいしいの?レベルなので見様見真似で設定。WT1520をLAN内で使用する(管理者パスワードがばれているルータを外にはつなげないだろw)のでWAN側いりません。WAN側削除してFirewallもいらん!PPPoEもいらん!となるとPPPもイラン

参考にしたのはこちら。無線LANは10dBmにする必要があるのを知りましたw。結果、微妙に違うのですが

image

br-lanに全部集めてブリッジ。

image

よくわからんのですが、おじさんの記憶としてはインタフェース=LANカードでIPアドレスを持っていて・・・な感じなのですが・・・eth0.1と0.2がWT1520から出ている有線LANポートで192.168.1.4につながっているHUBのイメージでいいんでしょうかね。まぁ、動いているのでよしw

2.2 DHCP

ブロードバンドルータおよびWT1520でDHCPサーバを動かしています。どちらも192.168.1.xの払い出しで重ならないように設定、さらにWT1520のDHCPサーバの設定で強制にチェックを入れずにすると、

image

ブロードバンドルータが電源ONの時はブロードバンドルータがIPアドレスを払い出し、節電!のためOFFにしているときにはWT1520が払い出してくれます。エコです。

2.3 LED設定

WT1520には白色LEDの点滅を制御できるはずなのですが、トリガーによっては点灯しません。結局LED名をradioにして送信受信でトリガーを設定したら点滅するようになりました。radioじゃないけど有線でも点滅するから結果オーライw

image

2.4 マウントポイント

WT1520にUSBメモリを差しました。アクセスするとクリップボードへの権利を求めてくるあやしい中華情報を元にSWAPExtRootを設定。

 2.4.1 SWAP

SWAPを設定したら劇的に速度が上がるんじゃないかと期待してUSBメモリの基本パーティション1をext3でフォーマットしてLuciでSWAPを設定。

image

確かこれだけでは動かなくてTeraTermのSSHでログインしてmkswapを実行しました。

image
しかし、せっかくのSWAPを使ってくれないw

image

 2.4.1 ExtRoot

WT1520のフラッシュメモリは4M、4Gじゃなくて4MなのでSambaやDLNAを入れるにはどうしても容量の拡張が必要となります。そこで切り札ExtRoot。WT1520に差したUSBメモリやHDDの領域をWT1520のフラッシュメモリに重ね合わせて容量を拡張してくれます。詳しくはこちら。これもLuciのこの設定で楽勝かと思いましたが、

image

出来ているのかもしれませんが駄目でした。結局Luciでは設定せずに直接/etc/config/fstabを書き換えました。

config global
    option anon_swap '0'
    option anon_mount '0'
    option auto_swap '1'
    option auto_mount '1'
    option delay_root '5'
    option check_fs '0'

config mount
        option target '/overlay'
    option fstype 'ext3'
    option device '/dev/sda2'
        option options 'rw,sync'
        option enabled '1'
    option enabled_fsck '0'
#    option is_rootfs '1'

config swap
    option device '/dev/sda1'
    option enabled '1'

config mountの所がそうです。ちょっと乱れていますがw。

ExRootはもうちょっと真面目に英文を読んで検証中です。

結果として

image

なんでもインストールできそうな3GのスペースをGetしました。そうそう、書き換えたfstabは念のためバックアップを。Luciさんのリストアでは復帰しないかも

#opkgの話とかSamba+ext3での速度とか続きます。lowntfs-3g -o big_writesでマウントすれば3.5MB/Sまででるぞ!これは一気に実用範囲内か?その前にExrootの件を

カテゴリー: 20世紀プログラマ, コンピューターとインターネット, OpenWrt | タグ: , , | コメントをどうぞ

Windows使いのOpenWrt(復活編)

今更ながらにOpenWrtにはまっています。開発環境を整えると必要な機能(パッケージ)を加えてお望みのファームウェアが作成できます。特にUSBポートが付いているルータだと

  • Bluetooth・・・なんのプロファイルが使えるかは不明
  • テザリング・・・WX04SHでできるかも
  • カメラ・・・カメラを接続して動画撮影とか

あくまでもファームのサイズがルータのフラッシュメモリの大きさ以下にできる場合なんですけどね。DD-WRTが機能固定だったのと比べると自由度は高いです。ただ、日本で発売しているルータで対応している機種が少ないです。

ぐらいでしょうか。一番安いのは上海問屋なんですよ。しかし、NEXX1520の純正ファームがntfs3Gを使用している時点でNTFSの高速化は諦めました。

ntfs3gの名誉の為に言いますが商用版を使用すれば高速になるという話を見ました。NTFSの書き込みが速いWifiストレージはそれを使っているんだろうな・・・・ 追記:もしかしたら3.5MB/Sまで転送速度が向上できそうな感じになってきました。

さて、NEXX1520の純正ファームで用があるのはSambaだけ。4MBのフラッシュROMに収まるコンパクトなSambaをもらい、OpenWrtにコピーして(以下、良い子は真似をしないでね略)

色々な問題に泣きながらNEXX1520ファームのコンパイル環境を整えました。・・・つづく

#こんなきっかけでもないならLinuxなんて絶対にインストールしなかったわ。今だにGitとはなんぞや?のレベルですがw。そうそう、上海問屋から買った一台目はファーム書き換えの失敗で文鎮化w。追加で2台買いました。最初から裸族のお立ち台を買った方が安かったw

カテゴリー: 20世紀プログラマ, コンピューターとインターネット, OpenWrt | タグ: , , | コメントをどうぞ

Windows使いのOpenWrt(挫折編)

追記 ntfs-3gのbig_writesを使うと2.5MB/Sぐらいまでlowntfs-3gでbig_writesを使うと3.5MB/Sまで転送速度が向上できそうな雰囲気です。

まだ途中経過なのですが、心が折れそうな実験結果になったのでご報告を。話せば長くなるのですが、折れそうなので略!

WT-1520H(DN-84749)に元に戻せないのを覚悟でOpenWrtを入れました。

image

NTFSで書き込みができるようにntfs-3gも入れました。

image

pure-ftpdも入れてrootでアクセスしてNTFSフォーマットしてあるUSBメモリをWT1520Hに差してマウントして、FFFTPでUSBメモリに書き込みました。

image

1.3MB/Sぐらい・・・・・・・・・・・・

読み込みは

image

2.5MB/Sぐらい・・・・・・・・・・・・

でも、sambaならsambaなら速いかも(震え声)。sambaはでかくてファームに入らないらしい、外付けHDDとかに入れる必要があるらしい。

これまでの経緯をまとめる気も、そしてちゃんとconfigしてきれいなファームを作る元気もなくなりそうです。

ファイルシステムをext4にしようかな・・・VMWare経由でWindowsからファイル転送できそうだし・・・・・orz

追記:で、WT1520の/sbinにntfs-3gがありましたw。同じもの使っとったんかい!そら、速くならんわw

image

カテゴリー: 20世紀プログラマ, コンピューターとインターネット, OpenWrt | タグ: , , | コメントをどうぞ