上海問屋DN-84749ことWT1520についてかなり朗報があります。
- WT1520のwikiが出来ました! (Buttonsの所とかかなり怪しいのですがw)
- WT1520のシリアルポートはここだ!(いずれ、文鎮となったWT1520をArduinoの3.3v版で救出したい。実際開けてみるととても小さいですよw)
- NTFSへの書き込み約3.5MB/s達成(思いっきり条件付きw)
- ソースからビルドする方法の詳細はこちら
2.4.2 ExtRootファーム更新
ExtRoot設定は簡単なのですがファームウェアをアップデートしようとすると途端にややこしくなります。設定はLuciからでも可能です。Luciの「ルートを使用する」を使わずにマウントポイント/overlayにしています。
問題はファームウェアの更新です。手順としてはここを参考に以下のようになりました。
①現状のバックアップ
Luciのバックアップで現状の設定をバックアップします。
②/etc/.extroot-uuidの削除
OpenWrtが自動で作成するExtRoot用のファイルを削除します。これをやらないとExtRootが設定できなかったりExtRootを解除して新しいファームをExtRootにコピーすることができません。
③sysupgradeの実行
ファームウェアを/tmpにコピーしてsysupgradeを実行。ファームの書き換えが終わると自動的に再起動します。
④ファームウェアのコピー
再起動後、telnetで入りrootのパスワードを設定しsshでログイン。ExtRootが外れている。ルータのフラッシュROMをExtRootするusbメモリにコピー(usbメモリのExtRootのファイルを削除した方がいいかも)
⑤ExtRootの有効化
/etc/config/fstabにExtRootのマウントを設定して再起動。
⑥設定のリストア
ExtRootが有効になっていることを確認。
以前のファームウェアで追加していたパッケージ(samba、uShareなど)を再度インストールして、①で取っておいたバックアップをリストアする。
重要なのは②の/etc/.extroot-uuidを削除することです。これをやらないと④の時点ですでにExtRootされていたり、⑤でfstabを修正してもExtRootされなかったりで混乱のもとになります。微妙にまちがっているかもしれませんが動くのでおk。OpenWrtのWikiも参考にどうぞ。
あとuuidは”block info”コマンドで参照できます。
2.5 Samba
インストールするパッケージはluci-app-sambaでおk。ついでにsamba36-serverもインストールされます。
luci-app-xxxxxをインストールするとLuciメニューに設定用の画面が追加されます、便利です、日本語ですw。
ただ、Luci画面だけからは設定できない部分があります。samba用のユーザを追加する必要があります。詳細はこちら。
2.4 ntfs-3G
2.4.1 インストール
NTFSに書き込み可能とするためntfs-3gのパッケージを追加する必要があります。opkgでインストールしようとするとカーネル依存と言われてインストールできませんでした。build時にntfs-3gのパッケージを組み込んでファームを生成して対応しています。
いわゆるカーネルモジュール(k-mod-xxとかntfs-3gとか)の/rom(ファームウェアのリードオンリー領域)に影響を与えるパッケージは主の環境ではopkgインストールできませんでした。
2.4.2 NTFSのマウント
ntfs-3gではfstabの設定で起動時に自動マウントできません(参照)。面倒なのでrc.localにマウントコマンドを記述しました。
2.4.3 NTFSへの読み込み・書き込みスピード
ようやく性能を計れる状態になりました。ntfs-3gではマウントするときのオプションで大きく性能が異なってきます。
1)一番大人しい状態
読み書きは同期モード。コマンド的には
ntfs-3g -o rw,sync -o noatime /dev/sdb1 /mnt/share
2)非同期モード
組み込み系ではご法度の非同期モード
ntfs-3g -o async -o noatime /dev/sdb1 /mnt/share
3)big_writeモード
本命big_writeモード
ntfs-3g -o big_writes -o async -o noatime /dev/sdb1 /mnt/share
3.5MB/S前後が安定して出ています。素晴らしい!これで地上波TSの書き込みはクリアできそうです。しかし・・・
4)読み込み性能
これば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もインストールしておいた方がいいかもです。
2)uShare動作の為の小細工
パッケージをインストールしても起動できません。色々小細工が必要ですw。
① ライブラリの追加
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の設定を行います。詳細なオプションはこちらを参照
③/etcinit.d/ushareの変更
それでも動かない場合、/etc/init.d/ushareの変更。情報元はこちら。なぜか起動前にsleep 10を入れると動きますw。
④ /etc/rc.localに起動コマンドを追加
/etc/rc.dに追加してもいいのですが、NTFSをrc.localでマウントしているのでそれ以降に起動しないといけません。
⑤ フリーなメモリをできるだけ増やす
uShareは簡易的なDLNAとはいえメモリをかなり消費します。少しでも動作が軽くなるように/tmp(RAMディスク)の容量を減らしフリーなメモリを増やします。
/etc/rc.localに以下のコマンドを追加。デフォルトでは16Mを8Mにしました。情報元はこちら
mount tmpfs /tmp -t tmpfs -o remount,size=8000k,nosuid,nodev
視聴中の左の%がCPU使用率で右がメモリ使用率です。SWAPも設定した方がいいみたいです。
3 そして
実用的かはさておき、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でも読み込みはあまり早くならないです。読み込みのが遅いなんて何かがおかしい。まぁ、いいか
DLNA経由でNTFSファイル再生時のCPU使用率(いっぱいいっぱいですw)
#疲れた。でもビルド編とシリアルコンソール編に続くw
