ひとりぶろぐ

価値ある情報をユーザー視点で発信するブログ

ハックで遊べる!名刺ケースサイズの無線LAN内蔵SDカードリーダーPQI Air Driveが熱い

      2016/03/16

iPhone/iPadへSDカードからファイルを転送したい

iPhone/iPadへSDカードからファイルを転送したい。そうしたニーズは根強くあるでしょう。

(PQI Air DriveもSDカード上の画像を全部転送する用途においては工夫が必要なので、画像全部転送指向者には、新型のEye-Fi Pro X2 16GB Class10をお勧めします)

DSC01297

それにこたえようとして登場したのがPQI Air Drive。名刺ケースサイズのガジェットです。サイズは85mm x 54mm。無線LANのアクセスポイントとして機能し、無線LAN経由でスマートフォンとの連携が可能です。一度にクライアントを5台まで接続可能です。

DSC01309

薄さ8mm。無印で売っているアルミ製の名刺ケースぐらい。

DSC01317

SDカードを挿入するスロットが付いています。SD/SDHCカード、最大32GBまでサポートしています。

DSC01351

SDカードは本体内に完全に収まります。

DSC01357

本体内に格納されているUSB端子を引き出してPC等に接続すると、有線のSDカードリーダーとして使えます。また、同時にPQI Air Drive本体のバッテリーへの充電も、USB端子からできます。USB2.0に対応。(続きは[Read More]から)

DSC01331

PQI Air CardとPQI Air Drive

先日、SDカードアダプタに無線LANを内蔵した姉妹品のPQI Air Cardを紹介しました。

ひとりぶろぐ » 遅いWiFi内蔵SDカードにサヨナラ!デジタル一眼レフのWiFi化なら絶対コレ!PQI Air Card

ひとりぶろぐ » デジカメ内部でRubyを動かす狂気!無線LAN内蔵SDカードアダプタPQI Air Cardの間違った使い方

「PQI Air Drive」とは別に、「PQI Air Card」という製品があるわけです。

  • 無線LAN内蔵SDカードアダプタ PQI Air Card
  • 無線LAN内蔵SDカードリーダー PQI Air Drive

にわかには違いがピンと来ないでしょう。

左右に並べてみました。

DSC01594

右がPQI Air Drive、左がPQI Air Cardです。

DSC00649

  • PQI Air Card:
    • 主にデジカメの中に入れて、デジカメからスマートフォンに画像を転送する目的で使うもの。デジカメの中に入れて使うために、すべての機能がSDカードアダプタサイズの中に納められています。動作のための電源は、デジカメから供給されます。

DSC01335

  • PQI Air Drive:
    • SDカードの中に入った任意のファイルを、スマートフォンで利用するために使うもの。PQI Air Cardのように、電源をデジカメから供給してもらうわけにいきませんから、単独で動作するための電源、リチウムポリマーバッテリーを本体内に内蔵しています。

PQI Air Driveの実際の利用

PQI Air CardののSDカードスロットに、32GBまでのSD/SDHCカードを挿入。しかる後に電源スイッチをオンに。

DSC01597

本体の緑色のLEDが点灯。青色のLEDが一瞬点った後に、しばらく緑のみのLEDが点灯する時間が続きます。

DSC01601

青いLEDが点滅するようになったら準備万端。

DSC01602

iPhone/iPadでPQI Air DriveのSSIDを探します。見つかったら接続。

IMG 0595

App StoreからダウンロードしてきたPQI Air Drive専用アプリS+ Flashを起動。iPhone / iPadの両方に対応したユニバーサルアプリです。ただし、iPhone 5の4インチディスプレイには対応していません。

S+ Flash 1.3.3(無料)

カテゴリ: ユーティリティ, エンターテインメント
現在の価格: 無料(サイズ: 7 MB)
販売元: Power Quotient International – Power Quotient International Co., Ltd.
リリース日: 2011/11/21

App + iPhone/iPadの両方に対応

現在のバージョンの評価: (5件の評価)
全てのバージョンの評価: (17件の評価)

ss1 ss2

ちなみに、Android用もあります。Android機にはSDカードスロットが付いているものが多いですから、いまいち燃えないかもしれませんね。

S+ Flash 1.1.5 (無料)
カテゴリ: ツール
販売元: Power Quotient International Co., Ltd.
サイズ: 1.1M
インストール数: 10,000 – 50,000
更新日: 2012/10/19
対応OS: Android2.1 以上
平均評価: 4.0 (43件の評価)


S+ Flashを起動すると、PQI Air Driveに挿したSDカードの中身が見られます。

IMG 0596

ファイルの右端のチェックボックスにチェックを入れて。

IMG 0599

まとめてダウンロードする機能もあります。

IMG 0600

ダウンロードしたファイルは「マイ フォルダ」という、その他タブの中から参照できるS+ Flashアプリ内のDocumentsフォルダに保存されます。ただ、問題は、「マイ フォルダ」にダウンロードしたところで、それ以上の活用ができないことです。

S+ Flashアプリは、Open Inなどの機能に対応しておらず、ファイルをほかのアプリに渡せません。センスを疑う一面です。

IMG 0601

写真タブからだと、SDカード内の画像をサムネイルで閲覧できます。ナビゲーションバー左のスパナアイコンをタップすると、画像のサムネイルにチェックボックスが表示されます。それをチェック、画面下にある「Save to Album」ボタンを押すとカメラロールに保存が可能です。

IMG 0603

デジカメで使ったSDカードからの画像転送に使えますね。高速SDカードで最大速度で連続撮影する必要がある人などは、遅かったり容量に制限のある無線LAN内蔵SDカードの利用を避けて、こうしたタイプの製品を使うとよさそうです。7MB〜10MBあるSIGMA DP2 MerrillのJPEGも、そこそこのスピードで転送できます。

IMG 0609

ファイルの削除、フォルダの作成、iPhoneからのファイルのアップロード(ただし、Open Inに対応していないため、アップロードするためのファイルを持ってきようがなく、アップロードできるファイルは非常に限られる)といったファイル操作も可能です。

IMG 0610

S+ Flashアプリから、デフォルトではオープンネットワークとなっているPQI Air Driveの無線LANにパスワードをかけることもできます。

IMG 0602

Webサーバとしても機能

PQI Air Cardには、IPアドレス192.168.2.1が振られます。

Safari(Webブラウザ)でhttp://192.168.2.1/を見に行くと、index.htmlを置き忘れたサイトのような表示でSDカードの中身が見られます。

IMG 0618

SafariはOpen Inに対応していますから、各種のファイルを他のアプリに渡すことができます。S+ Flashアプリでのフラストレーションを、Safariで晴らすことができます。

IMG 0619

Webページでも設定変更が可能

さきほどS+ FlashアプリからPQI Air Driveの設定変更が可能と紹介しましたが、Webページからも設定変更が可能です。ポート番号8080でもWebサーバが起動しており、「http://192.168.2.1:8080/」で設定変更のためのページが見られます。

IMG 0621

Sambaサーバとしても動作

(Mac)OS XのFinderからCommand+Kでサーバへ接続するダイアログを出し、「smb://192.168.2.1」へゲストとして接続すると、ボリュームとしてマウントできます。

Skitched 20121113 044746

Finderからファイルのアップロード、ダウンロードが自由にできます。出先でのコラボに便利かもしれないですね。

Skitched 20121113 044652

驚愕!SDカード上のcgiファイルを実行可能

何と、SDカード上に置いたcgiを実行可能です。cgiに書いた任意のコマンドを、しかもroot権限で実行できてしまいます。

これは胸が熱くなります。

WebブラウザでcgiへのURLをたたくのでもいいですし、S+ Flashアプリでcgiをタップするのでも構いません。

IMG 0598

以下は、cgiの中でftpサーバであるvsftpdを一度終了させ、ルートディレクトリから見えるようにして再起動した例。S+ Flashアプリから/bin、/devなどが見えています。いろいろな応用が可能でしょう。

IMG 0611

PQI Air Card上で開いているポートを調査

nmapでポートスキャンをかけ、開いているポートを調査します。

いろいろと面白いポートが開いています。


macbook-pro:~ $ nmap 192.168.2.1

Starting Nmap 6.01 ( http://nmap.org ) at 2012-11-09 06:42 JST
Nmap scan report for 192.168.2.1
Host is up (0.013s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
23/tcp   open  telnet
80/tcp   open  http
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
8080/tcp open  http-proxy

Nmap done: 1 IP address (1 host up) scanned in 13.22 seconds

しかし、user名、passwordが分からずtelnet、ftpでログインできません。

サポートに聞いても教えてくれないそうです。

loginのためのuser名とpasswordを調査

折角いろいろ使えそうなのに、user名とpasswordが分からないのではもったいない、ということで、僕の方でuser名とpasswordを調査しました。

ftpのポートが開いているということは、S+ Flashアプリがftpクライアントとして機能していると推察され、ftpですから通信は平文。後は自明の理です。

実際はS+ Flashアプリをリバースエンジニアリングしていたら発見しました。

user名 password
root 5up

これで、telnetと、ftpのloginが可能です。

telnetは、loginプロンプトが表示されるまでちょっと時間がかかると思うので、辛抱強く待っていてください。

ftpが使えると自由度が高まる

IMG 0612

ftpが使えると、GoodReader、Textasticなどのftpクライアント機能を持ったアプリからPQI Air Card上のファイルをダウンロード、アップロードでき、自由度が高まります。

GoodReaderはOpen Inに対応していますから、他のアプリにファイルを渡すこともできますし、別のサーバにアップロードすることもできます。

GoodReader for iPhone 3.18.7(¥450)App
カテゴリ: 仕事効率化, ユーティリティ
販売元: Good.iWare Ltd. – Yuri Selukoff(サイズ: 28.4 MB)
全てのバージョンの評価: (5,638件の評価)

Textasticは多種多様な文法に対応したシンタックスカラーリング機能を持つエディタですから、ハッキングをするのに便利です。

Textastic Code Editor 4.2.2(¥800)App
カテゴリ: 仕事効率化, ビジネス
販売元: Alexander Blach – Alexander Blach(サイズ: 6.4 MB)
全てのバージョンの評価: (69件の評価)

Textastic Code Editor for iPhone 4.2.2(¥800)App
カテゴリ: 仕事効率化, ビジネス
販売元: Alexander Blach – Alexander Blach(サイズ: 8.3 MB)
全てのバージョンの評価: (2件の評価)

iPadなら、Diet Codaもいいですね。

Diet Coda 1.1(¥1,700)App
カテゴリ: 仕事効率化, ユーティリティ
販売元: Panic, Inc. – Panic, Inc.(サイズ: 17.9 MB)
全てのバージョンの評価: (31件の評価)

PQI Air Driveのプラットフォーム

Skitched 20121113 045750

CPUはAtheros AR9330 (Hornet)。MIPS。OpenWRTが載るルータは、このCPUを使っていますね。

TP-Linkと互換性あるかもね、とのこと。

# uname -a

Linux (none) 2.6.31–LSDK-9.2.0_U9.915 #79 Wed Feb 15 12:44:04 CST 2012 mips unknown

# cat /proc/cpuinfo

system type : Atheros AR9330 (Hornet)

processor : 0

cpu model : MIPS 24Kc V7.4

BogoMIPS : 266.24

wait instruction : yes

microsecond timers : yes

tlb_entries : 16

extra interrupt vector : yes

hardware watchpoint : yes, count: 4, address/irw mask: [0x0000, 0x0ff8, 0x06bb, 0x0820]

ASEs implemented : mips16

shadow register sets : 1

core : 0

VCED exceptions : not available

VCEI exceptions : not available

# cat /proc/version

Linux version 2.6.31–LSDK-9.2.0_U9.915 (root@james-VM1104-64) (gcc version 4.3.3 (GCC) ) #79 Wed Feb 15 12:44:04 CST 2012

ftpで取ってきたbusyboxのバイナリをfileコマンドで調べてみます。

# file busybox

busybox: ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), statically linked, corrupted section header size

恐らくOpenWRTをビルドするtoolchainが使えるのではないでしょうか。rubyやらnkfが欲しいですね。

OpenWrt Buildroot – インストール – OpenWrt Wiki

ファイルシステムはroとramfsでとりつく島がありません。

# df

Filesystem 1k-blocks Used Available Use% Mounted on

/dev/mtdblock5 5424 5424 0 100% /

/dev/sda1 1930880 45760 1885120 2% /tmp/mnt/usbfd

# mount

/dev/mtdblock5 on / type squashfs (ro,relatime)

/proc on /proc type proc (rw,relatime)

none on /tmp type ramfs (rw,relatime)

none on /var type ramfs (rw,relatime)

sysfs on /sys type sysfs (rw,relatime)

udev on /dev type ramfs (rw,relatime)

/dev/sda1 on /tmp/mnt/usbfd type vfat (rw,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=cp437,iocharset=utf8,errors=remount-ro)

/dev/pts on /dev/pts type devpts (rw,relatime,mode=600)

RAMは28MB搭載(でいいんですよね?)

# cat /proc/meminfo

MemTotal: 28688 kB

MemFree: 15616 kB

Buffers: 108 kB

Cached: 5152 kB

SwapCached: 0 kB

Active: 3756 kB

Inactive: 3488 kB

Active(anon): 2008 kB

Inactive(anon): 0 kB

Active(file): 1748 kB

Inactive(file): 3488 kB

Unevictable: 0 kB

Mlocked: 0 kB

SwapTotal: 0 kB

SwapFree: 0 kB

Dirty: 0 kB

Writeback: 0 kB

AnonPages: 2036 kB

Mapped: 3124 kB

Slab: 4020 kB

SReclaimable: 308 kB

SUnreclaim: 3712 kB

PageTables: 168 kB

NFS_Unstable: 0 kB

Bounce: 0 kB

WritebackTmp: 0 kB

CommitLimit: 14344 kB

Committed_AS: 5044 kB

VmallocTotal: 1048404 kB

VmallocUsed: 1284 kB

VmallocChunk: 1045384 kB

シリアルコンソールがありそうですね。115,200bpsだそうです。

# cat /proc/cmdline

console=ttyS0,115200 root=31:05 rootfstype=squashfs init=/sbin/init mtdparts=ar7240-nor0:256k(u-boot),64k(u-boot-env),64k(ART),64k(NVRAM),1536k(uImage),6208k(rootfs) mem=32M

SDカードは、「/mnt/usbfd」にマウントされます。

PQI Air Card、Flucard Proと違ってエントリポイントが無い

PQI Air Card、Flucard Proは、ファームウェアアップデートのために、SDカード側のルートディレクトリにautorun.shというシェルスクリプトがあると、それを実行する作りになっていたため、そこに任意の処理を書いておけば、それを起動時に自動的に実行してくれました。

ひとりぶろぐ » デジカメ内部でRubyを動かす狂気!無線LAN内蔵SDカードアダプタPQI Air Cardの間違った使い方

これによって無類の自由度を得ることができたわけですが、その点、PQI Air Driveは難しそう。

/mnt/usbfdを参照しているコマンドは、恐らく/bin/autoupdateだけ。

起動処理中に/etc/rc.d/rcSから/bin/autoupdateが実行され、このコマンドによってSDカード上の「AirDriveFW.bin」というファイルの存在が調べられます。

これは、カーネルとファイルシステムの集合体で、ファイルの構造がチェックされ、正しいファームウェアであることが確認されたら、/tmp/kernel.binと/tmp/filesystem.binに展開され、以下のようなコマンドでフラッシュ領域に書き込まれるようです。

/sbin/flashcp -v /tmp/kernel.bin /dev/kernel

/sbin/flashcp -v /tmp/filesystem.bin /dev/filesystem

試しにAirDriveFW.binの中にシェルスクリプトを書いておきましたが、autoupdateにハネられるだけでした。

無線LANの設定は、不揮発領域に書き込まれるはずだと調査してみたところ、/dev/nvramにバイナリとして設定値が書き込まれるだけのようです。

ルートファイルシステムを書き換えて、起動処理の途中ないしは最後にSDカード上のシェルスクリプトを実行するようにしたいですね。僕にはどうすればいいか、見当もつきませんが。

@utaani さんからハックのヒントをいただきました。

これは進展が期待できそうですが、レンガも怖いですねw

ハッキングにはcgiを使う

このような状況ですが、ハックにはさきほど紹介したcgiが使えます。

SDカード上にやりたい処理を書いたcgiを置いて、Webサーバ経由でそれを実行するのです。

以下はswitch.cgiというファイル名のcgiだと思ってください。gist.githubにはシンタックスカラーリングのためにswitch.shとして登録してありますが、実際にはswitch.cgiとしてください。

これは、Sambaサーバとftpサーバのコンフィグファイルを/mnt/usbfd/から読み取るようにした上で、それぞれのサーバを再起動するものです。

/mnt/usbfd/にコピーされたコンフィグファイルsmb.conf、vsftpd.confを書き換えれば、公開ディレクトリをルートディレクトリに変えることもできます。

これをSDカードのルートに置いた場合、「http://192.168.2.1/switch.cgi」というURLを踏めば実行できます。

操作無しに自動的に何かをする、というのは難しいですが、URLを踏みさえすればいいので、iPhone/iPadであれば、cgiへのURLをブックマークし、それをHome画面に置いておき、すぐ実行できるようにしておくというのでいいかと思います。

cgiで遊ぶ

さて、cgiで何して遊びましょうか?

DSC01605

hp 200LXのようなネット環境を持たないガジェットとiPhone/iPadとの連携を便利にするcgiを考えてみました。DM10、DM20などのポメラを想定してもいいでしょう。

SDカードのルートに作ったTEXTというフォルダに、iPhone/iPad側に持っていきたいテキストをためておくルールとします。

SDカードのルートディレクトリに二つのcgi、awkスクリプトを保存。gist.githubにはシンタックスカラーリングのためにtext2clip.shとして登録してありますが、実際にはtext2clip.cgiとしてください。

MyScriptsには以下のリンクをタップしてText2Clipというスクリプトを登録しておきます。

Text2ClipをMyScriptsに登録

MyScripts 2.4(¥350)App
カテゴリ: 仕事効率化, ユーティリティ
販売元: Takeyoshi Nakayama – Takeyoshi Nakayama(サイズ: 2.3 MB)
全てのバージョンの評価: (15件の評価)
+ iPhone/iPadの両方に対応

MyScripts LE 2.4(無料)App
カテゴリ: 仕事効率化, ユーティリティ
販売元: Takeyoshi Nakayama – Takeyoshi Nakayama(サイズ: 2.3 MB)
全てのバージョンの評価: (3件の評価)
+ iPhone/iPadの両方に対応

PQI Air Driveに接続した状態でWebブラウザにて「http://192.168.2.1/text2clip.cgi」にアクセスするとSDカードのルートディレクトリに作ったTEXTフォルダの中にあるテキストファイルが一覧されます。

IMG 0623

タップするとMyScripsが起動して、テキストファイルの中身がクリップボードにコピーされます。

UTF-8じゃないとうまくいかないので実用度は微妙ですが、PQI Air Drive用のnkfが用意できたらいいでしょう。

URL Schemeを工夫すると、特定のテキストエディタなどにテキストの中身を直接送信することもできるでしょう。

どうですか? 何か作りたくなってきませんか。PQI Air Driveもまた、やや詰めの甘いところがありますが、一方で突っ込んで使いたくなる大変面白いガジェットだといえます。SIGMA DP2 MerrillでPQI Air Cardが使えなかった僕は、SIGMA DP2 MerrillとiPhoneとの連携用として気に入りました。

 - Android, iPad, iPhone, Linux