FlucardにFlashAir互換機能を搭載した 2012/04/19版


FlucardにFlashAir互換機能を載せました。

載せたことにより、以下の様な感じでAirShowからFlucard内のデータを見れるようになりました。

[手順]
1. zipを入手→ flucard-20120419.zip
2. Flucardを普通に起動してWiFiを有効にする
3. WiFi APのSSIDを「flashair」という名前が入っているものに設定する
「flashair_flu」とかそんな名前で
4. WiFi AP設定のKEYも入れる
5. 1回、Flucardの電源を落とす(スロットから抜くなどで)
6. パソコンにさす
7. autorun.sh,fluroot,DCIMをFlucardにコピー
8. zipを展開
9. DCIM/122_TREK/fluconfig.txtを変更
機能のon/offを制御できます
10. 1回、正規の手段でFlucardを取り外す
11. Flucardを起動してWiFiを有効にするとFlashAir互換になる。

なお、手順の詳細は説明しません。
わからない人は使わないでください。

また、FlashAir互換用に作成したCGIは、不正な行動に弱い構造をしています。
これはセキュリティを考慮したプログラムにすると処理が重くなってしまい、非力なFlucardのCPUだと大変なことになるためです。
不正なCGIの引数でも受け付けてしまいますので、くれぐれもインターネットに直接接続しない環境で使用してください。

[fluconfig.txtの解説]
REPLACEBUSYBOX=yes # busyboxのリンクを独自コンパイルのbusyboxに張り直し
INSTALLSHAREDLIB=yes # 共有ライブラリをインストール
INSTALLPERL=yes # perlをインストール
INSTALLRUBY=no # rubyをインストール
INSTALLPHP=no # phpをインストール
REPLACEFTPD=no # ftpdを独自コンパイルのbusyboxに置き換え
REPLACETCPSVD=no # tcpsvdを独自コンパイルのbusyboxに置き換え
REPLACEHTTPD=yes # httpdを独自コンパイルのbusyboxに置き換え
ENABLEFTPD=yes # ftpdを起動
ENABLETELNETD=yes # telnetdを起動
ENABLESSHD=yes # sshdを起動
ENABLESSHD2=no # sshdを起動(dropbear 2012.55うまく動かなかった・・・
ENABLEFLASHAIR=yes # FlashAir互換機能を有効にする

なぜか、「INSTALLSHAREDLIB=yes」
と「ENABLETELNETD=yes」が共存できない。

telnetdをどうしても使いたい場合はINSTALLSHAREDLIB=noで
ひとまず起動し、あとで共有ライブラリをコピーすると、動く
そのためのCGIを用意してあるので、以下のURLをアクセスすると良い
http://flu.card/cgi-bin/perl.cgi

Amazon Trek2000ストア
楽天 Trek2000ストア
送料無料! Wifi機能付きSDカード ...

送料無料! Wifi機能付きSDカード …
価格:4,700円(税込、送料込)

送料無料! Wifi機能付きSDカード Flucard16GB

送料無料! Wifi機能付きSDカード Flucard16GB
価格:9,890円(税込、送料込)

[詳細情報]
Flucardの標準設定のままではFlashAirだと認識できないので以下の変更が必要です。

(1) WiFi APのSSIDに「flashair」という文字列を入れる
これはFlucardの標準的な設定画面で変更します。
うちでは「flashair_flu」という名前でテストしています。

(2) WiFi APのKEY設定
KEY設定がないとうまくFlashAirだと認識してくれなかったので
何か設定を入れる。
これもFlucardの標準的な設定画面で変更します。

ここまではFlucardの設定画面で変更できる項目です。
以下の(3)~(7)は設定ファイルの直接編集が必要です。
autorun.shで編集するようになっていますので、
実際には、特に気にする必要はありません。

(3) IPアドレスの変更
・FlucardのIPアドレス: 192.168.1.1
・FlashAirのIPアドレス: 192.168.0.1

FlashAirのIPアドレスである「192.168.0.1」に変更
/mnt/mtd/config/config.trek を書き換える。
config.trekは設定を変更すると書き換わるものなので、sedを使って「192.168.1.1」があったら「192.168.0.1」に書き換える、という単純処理を行っている。

(4) DHCPサーバが配布するIPアドレス帯の変更
IPアドレスが192.168.0.1に変わったことにより
DHCPサーバの設定も変更が必要になる。
/etc/udhcpd_uap.confを編集します。
このファイルは変更されることが無いので編集済みファイルをコピーしている。

(5) DNSサーバの名前解決情報を変更
「flu.card 192.168.1.1」と返しているDNSサーバを
192.168.0.1と返すように変更。
/etc/dnsd.conf を編集。
このファイルは変更されることが無いので編集済みファイルをコピーしている。

(6) FlashAirで使う機能の搭載
/command.cgi, /thumbnail.cgi を使うので、それを模したものを作成。
以下の情報を参考にした。
https://github.com/cho45/flashair

また、Airshowではindex.htmlから画像リストを拾っている、ということであったので、autorun.shを使って起動時に、/www/index.htmlと/mnt/sd/DCIM/各ディレクトリ/index.html にFlashAirの画像列挙用に「wlansd[0]=~」などの必要なエントリを追加している。
このため、画像ファイルが多くなってくると処理が重くなる可能性がある。

サムネイル画像はjheadコマンドの機能をそのまま流用しているので、結構ちっちゃい画像となっている。
処理に時間がかかるので/mnt/sd/fluroot/cache/に一度生成したサムネイル画像を蓄積させている。
自動削除はさせていないので、手動で消すこと。

(7) busyboxの標準的なhttpdを改造
busyboxのhttpdは/cgi-bin/にあるCGIのみを動作させます。
それを/command.cgi, /thumbnail.cgiでもCGIで動作できるように変更。

[flurootディレクトリについて]
DCIMディレクトリの中にバイナリがあるのもアレだったのでflurootという形で独立させました。
個人的趣味により、機能毎にディレクトリを分けています。

shared, perl, php, ruby, sshディレクトリ
Tonsukeさんの2012/04/10版から持ってきています。

busybox
/cgi-bin以外でも一部のCGIが動作するように改造したbusybox 1.19.4

ssh2ディレクトリ
dropbear 2012.55
ただし、うまく動作を確認できていない

flashairディレクトリ
jhead はTonsukeさんの2012/04/10版から持ってきています。
command.cgi, config.cgi, thumbnail.cgiは独自作成です。

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>