ハックで遊べる!名刺ケースサイズの無線LAN内蔵SDカードリーダーPQI Air Driveが熱い
2016/03/16
価値ある情報をユーザー視点で発信するブログ
2016/03/16
iPhone/iPadへSDカードからファイルを転送したい。そうしたニーズは根強くあるでしょう。
(PQI Air DriveもSDカード上の画像を全部転送する用途においては工夫が必要なので、画像全部転送指向者には、新型のEye-Fi Pro X2 16GB Class10をお勧めします)
それにこたえようとして登場したのがPQI Air Drive。名刺ケースサイズのガジェットです。サイズは85mm x 54mm。無線LANのアクセスポイントとして機能し、無線LAN経由でスマートフォンとの連携が可能です。一度にクライアントを5台まで接続可能です。
薄さ8mm。無印で売っているアルミ製の名刺ケースぐらい。
SDカードを挿入するスロットが付いています。SD/SDHCカード、最大32GBまでサポートしています。
SDカードは本体内に完全に収まります。
本体内に格納されているUSB端子を引き出してPC等に接続すると、有線のSDカードリーダーとして使えます。また、同時にPQI Air Drive本体のバッテリーへの充電も、USB端子からできます。USB2.0に対応。(続きは[Read More]から)
先日、SDカードアダプタに無線LANを内蔵した姉妹品のPQI Air Cardを紹介しました。
ひとりぶろぐ » 遅いWiFi内蔵SDカードにサヨナラ!デジタル一眼レフのWiFi化なら絶対コレ!PQI Air Card
ひとりぶろぐ » デジカメ内部でRubyを動かす狂気!無線LAN内蔵SDカードアダプタPQI Air Cardの間違った使い方
「PQI Air Drive」とは別に、「PQI Air Card」という製品があるわけです。
にわかには違いがピンと来ないでしょう。
左右に並べてみました。
右がPQI Air Drive、左がPQI Air Cardです。
PQI Air CardののSDカードスロットに、32GBまでのSD/SDHCカードを挿入。しかる後に電源スイッチをオンに。
本体の緑色のLEDが点灯。青色のLEDが一瞬点った後に、しばらく緑のみのLEDが点灯する時間が続きます。
青いLEDが点滅するようになったら準備万端。
iPhone/iPadでPQI Air DriveのSSIDを探します。見つかったら接続。
App StoreからダウンロードしてきたPQI Air Drive専用アプリS+ Flashを起動。iPhone / iPadの両方に対応したユニバーサルアプリです。ただし、iPhone 5の4インチディスプレイには対応していません。
カテゴリ: ユーティリティ, エンターテインメント
現在の価格: 無料(サイズ: 7 MB)
販売元: Power Quotient International – Power Quotient International Co., Ltd.
リリース日: 2011/11/21
iPhone/iPadの両方に対応
現在のバージョンの評価: (5件の評価)
全てのバージョンの評価: (17件の評価)
ちなみに、Android用もあります。Android機にはSDカードスロットが付いているものが多いですから、いまいち燃えないかもしれませんね。
S+ Flashを起動すると、PQI Air Driveに挿したSDカードの中身が見られます。
ファイルの右端のチェックボックスにチェックを入れて。
まとめてダウンロードする機能もあります。
ダウンロードしたファイルは「マイ フォルダ」という、その他タブの中から参照できるS+ Flashアプリ内のDocumentsフォルダに保存されます。ただ、問題は、「マイ フォルダ」にダウンロードしたところで、それ以上の活用ができないことです。
S+ Flashアプリは、Open Inなどの機能に対応しておらず、ファイルをほかのアプリに渡せません。センスを疑う一面です。
写真タブからだと、SDカード内の画像をサムネイルで閲覧できます。ナビゲーションバー左のスパナアイコンをタップすると、画像のサムネイルにチェックボックスが表示されます。それをチェック、画面下にある「Save to Album」ボタンを押すとカメラロールに保存が可能です。
デジカメで使ったSDカードからの画像転送に使えますね。高速SDカードで最大速度で連続撮影する必要がある人などは、遅かったり容量に制限のある無線LAN内蔵SDカードの利用を避けて、こうしたタイプの製品を使うとよさそうです。7MB〜10MBあるSIGMA DP2 MerrillのJPEGも、そこそこのスピードで転送できます。
ファイルの削除、フォルダの作成、iPhoneからのファイルのアップロード(ただし、Open Inに対応していないため、アップロードするためのファイルを持ってきようがなく、アップロードできるファイルは非常に限られる)といったファイル操作も可能です。
S+ Flashアプリから、デフォルトではオープンネットワークとなっているPQI Air Driveの無線LANにパスワードをかけることもできます。
PQI Air Cardには、IPアドレス192.168.2.1が振られます。
Safari(Webブラウザ)でhttp://192.168.2.1/を見に行くと、index.htmlを置き忘れたサイトのような表示でSDカードの中身が見られます。
SafariはOpen Inに対応していますから、各種のファイルを他のアプリに渡すことができます。S+ Flashアプリでのフラストレーションを、Safariで晴らすことができます。
さきほどS+ FlashアプリからPQI Air Driveの設定変更が可能と紹介しましたが、Webページからも設定変更が可能です。ポート番号8080でもWebサーバが起動しており、「http://192.168.2.1:8080/」で設定変更のためのページが見られます。
(Mac)OS XのFinderからCommand+Kでサーバへ接続するダイアログを出し、「smb://192.168.2.1」へゲストとして接続すると、ボリュームとしてマウントできます。
Finderからファイルのアップロード、ダウンロードが自由にできます。出先でのコラボに便利かもしれないですね。
何と、SDカード上に置いたcgiを実行可能です。cgiに書いた任意のコマンドを、しかもroot権限で実行できてしまいます。
これは胸が熱くなります。
WebブラウザでcgiへのURLをたたくのでもいいですし、S+ Flashアプリでcgiをタップするのでも構いません。
以下は、cgiの中でftpサーバであるvsftpdを一度終了させ、ルートディレクトリから見えるようにして再起動した例。S+ Flashアプリから/bin、/devなどが見えています。いろいろな応用が可能でしょう。
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でログインできません。
サポートに聞いても教えてくれないそうです。
折角いろいろ使えそうなのに、user名とpasswordが分からないのではもったいない、ということで、僕の方でuser名とpasswordを調査しました。
ftpのポートが開いているということは、S+ Flashアプリがftpクライアントとして機能していると推察され、ftpですから通信は平文。後は自明の理です。
実際はS+ Flashアプリをリバースエンジニアリングしていたら発見しました。
user名 | password |
---|---|
root | 5up |
これで、telnetと、ftpのloginが可能です。
telnetは、loginプロンプトが表示されるまでちょっと時間がかかると思うので、辛抱強く待っていてください。
ftpが使えると、GoodReader、Textasticなどのftpクライアント機能を持ったアプリからPQI Air Card上のファイルをダウンロード、アップロードでき、自由度が高まります。
GoodReaderはOpen Inに対応していますから、他のアプリにファイルを渡すこともできますし、別のサーバにアップロードすることもできます。
GoodReader for iPhone 3.18.7(¥450)
カテゴリ: 仕事効率化, ユーティリティ
販売元: Good.iWare Ltd. – Yuri Selukoff(サイズ: 28.4 MB)
全てのバージョンの評価: (5,638件の評価)
Textasticは多種多様な文法に対応したシンタックスカラーリング機能を持つエディタですから、ハッキングをするのに便利です。
Textastic Code Editor 4.2.2(¥800)
カテゴリ: 仕事効率化, ビジネス
販売元: Alexander Blach – Alexander Blach(サイズ: 6.4 MB)
全てのバージョンの評価: (69件の評価)
Textastic Code Editor for iPhone 4.2.2(¥800)
カテゴリ: 仕事効率化, ビジネス
販売元: Alexander Blach – Alexander Blach(サイズ: 8.3 MB)
全てのバージョンの評価: (2件の評価)
iPadなら、Diet Codaもいいですね。
Diet Coda 1.1(¥1,700)
カテゴリ: 仕事効率化, ユーティリティ
販売元: Panic, Inc. – Panic, Inc.(サイズ: 17.9 MB)
全てのバージョンの評価: (31件の評価)
CPUはAtheros AR9330 (Hornet)。MIPS。OpenWRTが載るルータは、このCPUを使っていますね。
TP-Linkと互換性あるかもね、とのこと。
@hitoriblog あと、わかってみればTP-Linkのルータのデフォルトパスワードと同じでしたね。ファームも互換性あるかも? http://t.co/5VtHtH8h
— utaani (@utaani) November 13, 2012
# 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は、ファームウェアアップデートのために、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
@hitoriblog /sbin/mtd_debugを/dev/mtd5に使ってdumpがとれましたので、これをsquashfsマウントしてゴニョってから書き戻すことができれば/etc/rc.d/rcSとかを書き換えられそうです。 (ブログの方にコメントかけないのでこちらに)
— utaani (@utaani) November 15, 2012
このような状況ですが、ハックにはさきほど紹介した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で何して遊びましょうか?
hp 200LXのようなネット環境を持たないガジェットとiPhone/iPadとの連携を便利にするcgiを考えてみました。DM10、DM20などのポメラを想定してもいいでしょう。
SDカードのルートに作ったTEXTというフォルダに、iPhone/iPad側に持っていきたいテキストをためておくルールとします。
SDカードのルートディレクトリに二つのcgi、awkスクリプトを保存。gist.githubにはシンタックスカラーリングのためにtext2clip.shとして登録してありますが、実際にはtext2clip.cgiとしてください。
MyScriptsには以下のリンクをタップしてText2Clipというスクリプトを登録しておきます。
MyScripts 2.4(¥350)
カテゴリ: 仕事効率化, ユーティリティ
販売元: Takeyoshi Nakayama – Takeyoshi Nakayama(サイズ: 2.3 MB)
全てのバージョンの評価: (15件の評価)
iPhone/iPadの両方に対応
MyScripts LE 2.4(無料)
カテゴリ: 仕事効率化, ユーティリティ
販売元: Takeyoshi Nakayama – Takeyoshi Nakayama(サイズ: 2.3 MB)
全てのバージョンの評価: (3件の評価)
iPhone/iPadの両方に対応
PQI Air Driveに接続した状態でWebブラウザにて「http://192.168.2.1/text2clip.cgi」にアクセスするとSDカードのルートディレクトリに作ったTEXTフォルダの中にあるテキストファイルが一覧されます。
タップするとMyScripsが起動して、テキストファイルの中身がクリップボードにコピーされます。
UTF-8じゃないとうまくいかないので実用度は微妙ですが、PQI Air Drive用のnkfが用意できたらいいでしょう。
URL Schemeを工夫すると、特定のテキストエディタなどにテキストの中身を直接送信することもできるでしょう。
どうですか? 何か作りたくなってきませんか。PQI Air Driveもまた、やや詰めの甘いところがありますが、一方で突っ込んで使いたくなる大変面白いガジェットだといえます。SIGMA DP2 MerrillでPQI Air Cardが使えなかった僕は、SIGMA DP2 MerrillとiPhoneとの連携用として気に入りました。