Flucard ProとPQI Air Cardは同じプラットフォームっぽい

以前作ったFlucardの記事のメンテナンス中、おもしろいものを見つけた

Flucard内部で使用しているCPU KeyASIC社のKA ARM9 Reference Platform(mach-ka2000)のページを探しにいったところ、開発用プラットフォームのページが出来ていました。

KA ARM9 Reference Platform for Developing Combo SD Card Solutions

内部構造

SD IO Socketにはwifiカード、SD Memory Socketにはメモリカードを挿す感じですね。

ひとりぶろぐの「遅いWiFi内蔵SDカードにサヨナラ!デジタル一眼レフのWiFi化なら絶対コレ!PQI Air Card」を見ると、PQI Air Cardの内部構造はFlucard Proと類似している模様。

おそらくは、Trek2000 Flucard Proも、PQI Air Cardも、 この開発プラットフォームをベースに作られているので、内部構造に共通点があるんでしょうね。

・・・PQI Air Cardのfirmwareが出ればもうちょっとはっきりしそうです。

Flucardで出来ることのまとめ 2012/04/23版

Flucardのまとめはある程度需要があるみたいなので、記事更新。

前回の記事「Flucardで出来ることのまとめ 2012/04/11版

Flucardとは
2010年に台湾のTREK 2000 Internationalより発売された、SDカードサイズで、WiFiを利用して画像転送を行えるような製品です。
時期的にはEye-Fiよりあとに発売されていますが、東芝のFlashAirよりは、ずっと前、という形になります。

Eye-Fiは撮ったもの全てを転送する、というのが基本方針ですが、FlucardとFlashAirの方は撮った中から必要なものだけを選んで転送する、というのが基本方針です。

Eye-Fiと同様の外部の画像サイトに自動アップロード、という機能を「サーバアップロード」という名称で持っています。
しかし、Eye-Fiにある転送が終わった画像を自動的に削除していく、という機能はありません。

さて、FLUCARDですが、現在までに4種類のFLUCARDが販売されています。

2010年モデルは黒いFLUCARDとなります。これがFLUCARD GEN 1です。

こちらはfirmwareが違うようでアップデータが提供されていません。
たとえ安かったとしても買わない方がいいのではないかと思います。

日本でも発売しているのは白いFLUCARDのうち、黄色(4GB)と水色(8GB)です。
こちらはFLUCARD GEN 2です。

白いFLUCARDのうち、オレンジ(16GB)は日本では発売していません。
FLUCARD GEN 2かGEN 3のどちらかだと思いますが、詳細は不明です。

GEN 2、GEN 3のどちらであっても、サポートページにてfirmwareのアップデータが提供されている。
2012/04/11時点での最新版は「3.65_100R」となる。

Flucardのfirmwareアップデータの特筆すべき利点。
それは単なるzip形式での配布であり、アップデート方法も、zip内のファイルをFlucard内にSDHCカードスロットを経由してコピーすればいい、というだけの単純なものです。
そのためfirmwareアップデートはWindows/Mac OSX/Linuxなど、プラットフォームを選びません。

ただし、プラットフォームは選ばないが、SDHCカードリーダは、認識しないものが結構あります。
具体的な使えないライン、というものが見いだせていませんが、1つの目安としては、SDXC対応を謳ってるかどうか、ぐらいだと思います。

使用できるSDHCカードリーダについて
Flucardをさしても認識しないというSDHCカードリーダが結構あります。

使えないライン、というものがはっきりしていませんが、100円ショップで売っているようなものはほとんどが使えませんでした。使える製品もありましたが、安定して動作しませんでした。

おそらく、通常のSDHCカードと比較した場合にFlucardの消費電力が非常に大きいのですが、安いSDHCカードリーダだと、その消費電力を供給できずに動作しない、ということになるようです。

いま店頭で販売しているものだと「SDXC対応」と謳われているものであれば、消費電力が多少大きくても大丈夫なようで、おおむね認識しているようです。

発熱について
Flucardは、無線で送受信します。そして、無線の電波送信というものは熱を発生するものです。
このため、Flucardで通信を行っている結構な量の発熱があります。

Linux環境をいろいろいじっていたりすると30分以上通信したりしますが、そうすると、触るとかなり熱い、ぐらいの熱となります。
長時間使用する場合はファンをあてて冷却するなどした方が良いでしょう。
(Flucardが想定している通常利用時は、そこまで発熱することはありません)

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

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

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

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

基本的な使い方
カメラでいろいろ撮影した後、twitterやfacebookに投稿したいと思う画像だけをスマートフォンにコピーする。
というのが、一番基本となる使い方です。

Flucardを買った状態で↑を行うための手順
1. デジカメにFlucardを入れる
2. 撮影する
3. デジカメを画像閲覧モードにする
4. 「設定・写真閲覧」という画像を見つけ、それを削除する

5. Flucardからビープ音が10回ぐらい鳴る
6. スマフォからWifi AP検索を行うと「Trek_FLUCARD_WiFi」というAPがあるので接続する
7. スマフォのブラウザで「http://192.168.1.1/」もしくは「http://flu.card/」にアクセス
8. 画像を閲覧して欲しい画像を見つけ、ダウンロードする
9. デジカメの電源を切る
10. スマフォで画像を編集して、投稿する

なお、上記手順6~9の間はスマフォからインターネットアクセスができなくなりますので注意してください。
(3G回線接続している場合でも、そうなります)

デジカメで画像を見た時に、もしかすると、画像がちゃんと表示できない、ということがあるかもしれません。
そのような場合は、サポートページにある「FLUCARD NIKON PATCH」を適用します。
パッチといっても、画像を新しいものに置き換えるだけのものです。
(firmwareアップデートでは画像は変更されないので、画像がちゃんと表示できない場合は、こちらのパッチが必要です。)

外部サーバに画像転送
普通の無線(WiFi)APを使用してネットワークに接続し、外部のサーバに画像を転送することもできます。

初期firmwareでは、Flucard Portalしか対応していません。
ただ、初期firmwareが対応しているFlucard Portalはftpでアップロードするものだったらしく、その後Portal側がアップデートして、ftpではなくなったようです。

そんなわけで、現状サポートしているのは以下の3種類
・Flucard Portal(新版)
・ftpサーバ
・Gallery 3 API対応のサービス

Gallery 3 APIというのはEye-Fiでも使っているAPIであるため、Eye-Fi対応を謳っているサービスを転送先として設定することも可能かもしれません。

どういったところに、どうやってアップロードするかについては、Flucardの管理Webから設定を入力します。

設定完了後、実際にアップロードする場合は、「サーバアップロード」の画像を削除すると、アップロードが開始されます。

結構、長々とビープ音が続くので、ほんとにアップロードできてるのかな?と心配になるような感じです。

Gallery 3 APIについて
Gallery 3 APIについて、FAQでは「Gallery3:API:REST」を参照すること、ぐらいの記述しかありません。

上記サイトのトップページは、Gallery Your Photos on your websiteで、タイトルにあるとおり、自分のWebに、自分専用の画像アップローダを作ることが出来るソフトウェアを提供しています。
実際、Linuxのphp/MySQL webサーバ上に簡単に構築できました。

Eye-Fi対応と謳っているサービスで、Flucardが使えるかどうか、という点は、現状はまだ調べていません。

FlashAirっぽく使う
東芝のFlashAirは、Flucardと同じコンセプトで作られている製品です。
FlashAir用にリリースされているアプリケーションをFlucardで利用することもできます。
具体的には当ページで公開している「FlucardにFlashAir互換機能を搭載した 2012/04/19版」です。

簡単に言えば、FlashAirを操作するためのCGIと同じ機能をFlucardに載せて、FlashAir用のアプリケーションを使用できるようにしました。

Linux的な使い方について
ARM Linuxなので、いろいろできますが、いくつか注意が必要な点があります。

・CPUはKeyASIC社のKA ARM9 Reference Platform(mach-ka2000)
・アーキテクチャはARM926EJ-S。旧版ながらARM926EJ-S テクニカルリファレンスマニュアル 日本語版がある
・Linux kernel 2.6.32.28
・組み込み系によくあるようにbusyboxを使って容量削減
・システムパーテーションはinitramfsで作られているため
いろいろ書き換えても電源入れ直すと元の状態に戻る
・書き換えたファイルが残るのは /mnt/mtd/ のみだが、容量が少ない
・書き換えられる設定ファイルは /mnt/mtd/config/config.trek のみ
・「/mnt/sd/」がFlucardをSDカードとして見た場合のディレクトリ
・Flucard起動時に「/mnt/sd/autorun.sh」を必ず実行する

・ストレージモードと、ネットワーク接続モードの2種類がある
・ストレージモードは、普通にアクセスした場合のモード
 デジカメ/SDカードリーダ上は、普通のSDカードとして見えるが、
 Flucard上ではネットワーク接続が無い状態でLinuxが動作している。
 autorun.shは、ストレージモードとして起動した段階で実行されている。

・ネットワーク接続モードは、ストレージモード時に特定のファイルを削除することで移行する
 内部的にはストレージモードで起動すると、「flu_app」という監視アプリが起動し
 特定ファイルの存在チェックを行っているようだ。
 ファイルが削除されたことを検出すると、決められた動作を行いWiFi接続をしたりする。

・telnetdについて
 初期firmwareでは有効になっていたが、途中から無効になった。
 autorun.shを利用してtelnetdを有効にしたbusyboxを起動させることで対応可能。
 autorun.shが存在していると、Flucardの自動WiFi起動が使えないいが、
 autorun.shの中で/usr/bin/w3のスクリプトを動かすと同等の動作をさせることもできる。

・telnetd/sshd経由で/mnt/sd上のファイルを直接編集した場合、「sync」を実行しないと、変更分が消える
 Flucardの仕組み上、明示的なshutdownというものができず、
 毎回、電源ぶちっ!の停止しかないためですね。

改造の例
・とんすけblogのFlucardでプログラムとかCGIとか
 ruby, perl, php, sshdが配布されています。

・当blogのFlucardにFlashAir互換機能を搭載した 2012/04/19版
 とんすけblogのプログラムを流用してFlashAir互換機能を搭載しています。

・当blogのFlucard firmware ver3.65でtelentdを有効にする方法

・とんすけblogのFlucardのコントロール画像をカスタマイズしてみた
 Flucardの動作を制御する画像をカスタマイズする方法についての概論です。

Firmwareの詳細について
Flucard ProはARM Linux搭載でtelnetdを有効にできるなんておもしろそう!
firmware.zipのばらし方と、その中身について解説

Flucardのfirmware変更履歴
ざらっと調べた限りでのFlucard firmwareの変更履歴

Flucard firmware ver3.65でtelentdを有効にする方法
最新firmwareではtelnetdが無効にされているので、有効にする方法
関連としてFlucardのautorun.shを編集

・Flucard上のコマンドを実行したりしたメモ
Flucardでコマンドをいくつか実行してみた
Flucardのbuzzerコマンド
Flucard busyboxの持ってる機能比較

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は独自作成です。

FlucardにFlashAir互換機能をつけてみた(予告)

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

—————————
FlashAir用に出てるAirShowとか使ってみたいなぁ、と思って、FlashAir互換機能を作ってみた。
ただ、FlashAirを持ってないので、適当に推測しているところがあるので、まったく同じ、というわけでは無い。

とりあえず、ポイントとしては、以下の様なことをやっている。

・busyboxのhttpdを改造して/cgi-bin/じゃなくてもCGIが動くように変更
 (具体的には/command.cgi, /thumbnail.cgi, /config.cgiをCGIとして認識させた)
・/command.cgi, /thumbnail.cgiをそれっぽく動作するように作成
・/index.html 中身にFlashAirのindex.htmlにあるようなものを埋め込み
・Flucardは192.168.1.1、FlashAirは192.168.0.1なので、FlashAirに見せかけるため192.168.0.1に設定ファイルを変更
・FlashAirっぽいSSIDに変更(この項目だけ普通の設定画面で設定可能)

Flucardのfirmware変更履歴

いろいろ探していたらFlucardの非公式サポートweb:Firmware archiveというのを発見。

そこにv3.42以降のfirmwareが置かれていた。
そのうち、V3.62以降はリリースノートがついていたので転載と、firmwareファイルを見てわかるレベルの違いについては日本語で追加。

V3.40~V3.52の間に行われた内容(公式より転載)
– WebブラウザーでのRAWファーマット画像(ファイル拡張子 “.DNG”, “.NEF”. 及び “.CR2”)のダウンロードをサポート
– Wi-FiセキュリティーWPA2のサポート
– カメラの電源投入時に「設定・写真閲覧」機能を自動起動する機能を追加(「設定・写真閲覧」Web設定画面のセットアップメニューで本機能を有効にできます)

V3.52~V3.65までの間に行われた内容(公式より転載)
– 「写真閲覧・設定」機能において、ほとんどのRAWファイルの閲覧とダウンロードをサポート
– 「写真閲覧・設定」機能において、カード内全てのファイルのファイル名一覧表示、ダウンロード、アップロードをサポート
– 「サーバアップロード」機能において、ほとんどのRAWファイル、MOV、MP4、AVIファイル拡張子を持つビデオファイルのアップロードをサポート
– 「送信・受信」機能において、セキュリティー無し固定SSIDとセキュリティー有り可変SSIDの設定をサポート
– 動きセンサー(振るカード)機能を無効化

V3.53(firmware.zipから読みとった)
* /mnt/sd/autorun.sh があると、WiFiの自動起動を行わない
* 起動時に読み込むモジュールの変更
* ファイル監視用flu_appの起動順序変更
* test/mtdに残されていたテスト用ファイル削除(消し忘れてた?
* 「送信」モードになる時の動作スクリプト変更
* 管理Web UIの改善

V3.58(firmware.zipから読みとった)
* uAPモードのonスクリプト変更
* 他のAPに接続する際にch13に接続できなかったのを改善
* 動きセンサー(振るカード)機能を無効化

v3.62_100R firmware release notes:(非公式サイトの転載とfirmware.zipから読みとった)
– ftp upload improvement: allow users who disable write to root folder to be able to ftp to its sub directories
– fix use-case bug : when auto on wifi –> delete sender picture –> ssid should change for sender mode
– fix bug private ssid (sender receiver settings) max at only 10 characters
– received files following DCF specification
* telnetd削除

v3.63_100R firmware release notes:(非公式サイトの転載)
– fix buzzer mute (when language is japanese)
– minor bug fix for upload cgi

v3.64_100R firmware release notes:(非公式サイトの転載)
– improve upload cgi
– enable 11n for uAP mode

v3.65_100R firmware release notes:(非公式サイトの転載)
– Fix bug P2P : previously when auto-WIFI is on before deleting receiver mode. The receiver function is faulty.

v3.67_100R(公式より転載)
– 中国語HTMLページの誤記修正
– キヤノン製カメラで物理フォーマットを失敗する問題の修正

で、このフォーラムマスターのjunichiさんですが、「Junichi Yamazaki, Country HEAD of Trek Japan, Co-Chairman of iSDIO Forum」のjunichiさんだと思われます。

iSDIOってのは「iSDIO(Wireless LAN SD)とは?」というSD Associationの解説を見てもらえばわかるようにインテリジェントSDIO規格というkとおで、Wireless LAN SDのことのようです。
東芝FlashAir発表後にEye-Fiとの間で揉めていたアレですね。

いまは消されてしまっているようですが、FlucardはiSDIO対応なんだよ、的なpdfがありますね。