ひとりぶろぐ

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

ポケット無線LANルータの新顔PQI Air Penの著しく間違った使い方

      2016/05/24

ポケット無線LANルータが面白くなってきた!

ひとりぶろぐのmoyashi (@hitoriblog) です。

最近、ホテルなどの有線LANしか無い環境で無線LAN環境を構築するための超小型の無線LANルータが流行してますね。

PLANEXのちびファイ/ちびファイ2が代表的な存在でしょう。

ちびファイをカバンに一つ入れていれば、有線LANしか無い環境であっても、タブレット、スマートフォンなどのような無線LANにしか接続できないデバイスのネットワーク接続を確保できるというわけです。

だがあえてマイナーなPQI Air Penを買う

PQI Air Pen –

とりあえず用を足すだけなら普通にちびファイを買っておけばいいのですが、僕はヒネクレ者なので、PQI Air Penというポケット無線LANルータを買ってみました。

PQI JAPAN Air Pen(ホワイト) 6W41-0000R2
PQI
売り上げランキング: 106,920
インターフェース USB2.0、 IEEE 802.11b/g/n、Ethernet 10/100M
容量 microSD/SDHC メモリカード対応 (最大 32GB)
対応OS iOS / Android ( iOS 4.0 以上 / Android 2.1 以上推奨)
電源 リチウムポリマーバッテリ
サイズ 16.5×91.5×25 mm
重さ 40 g
動作環境 0℃ ~ 40℃
その他情報 1年保証
添付ソフトウェア 専用アプリ”PQI Air Pen+”

ちびファイ同様にポケット無線LANルータとして使えるほか、付加機能がいくつか付いています。そして結構こいつは遊べるのです。(続きは[Read More]から)

PQI Air Penはバッテリ内蔵

PQI Air Penの特徴としてまず挙げておくべきは、リチウムポリマーバッテリが内蔵であるということでしょう。

SDIM1202

ちびファイ/ちびファイ2は動作のためにUSBからの給電が必要ですが、PQI Air Penにはリチウムポリマーバッテリが内蔵されているため、周囲に電源が無い場合でも2時間(カタログ値)単独動作可能です。

PQI Air PenにはmicroSDカードスロットが存在

PQI Air Penには、ちびファイには無いmicroSDカードスロットが存在します。

SDIM1197

PQI Air Penは、ポケット無線LANルータになると同時に、スマートフォンから専用アプリを通じてmicroSD上のファイルのダウンロード、microSDへのファイルのアップロードができます。

IMG 1751

Webブラウザを通じて、PQI Air Penに挿入されたmicroSD上のファイルをダウンロードすることもできます。

いわゆる無線ストレージ、パーソナルクラウドとしての機能も持っているわけです。

microSDカードスロットに大容量のカードを入れ、例えば動画などを置いておけば、スマートフォンなどから、そうした大容量のファイルを利用することができます。

デジカメで撮影した画像を、PQI Air Penを通じて取り込むことも可能です。

IMG 1764

写真タブではサムネイルが表示され、複数の写真にチェックマークを入れてから「Save to Album」でまとめてカメラロールに保存できます。

51MBの転送に24秒かかりました。2MB/sec出てますから、この手のデバイスにしては結構速い方ではないでしょうか。

わりと普通に使え、PQI Air Card用のアプリより、安定性は増している気がします。

普通のmicroSDカードリーダとしても機能

無線LANを使った機能を紹介してきましたが、PQI Air Penは折り畳み式のUSB端子を備えています。

SDIM1195

このUSB端子をPCやモバイルバッテリに接続して本体に内蔵されているリチウムポリマーバッテリに充電することができるほか、同時にUSB接続のmicroSDカードリーダとしても機能します。

これがPQI Air Penの第三の機能です。

アクセスのスピードは結構落ちてしまいますね。microSDHC版のSanDisk Extreme Proを挿入してXbenchで計測したベンチマーク結果が以下です。

最大20MB/secといったところでしょうか。

Results	24.63	
	System Info		
		Xbench Version		1.3
		System Version		10.8.3 (12D78)
		Physical RAM		16384 MB
		Model		MacBookPro10,1
		Drive Type		Generic Storage Device
	Disk Test	24.63	
		Sequential	30.51	
			Uncached Write	31.45	19.31 MB/sec [4K blocks]
			Uncached Write	29.78	16.85 MB/sec [256K blocks]
			Uncached Read	24.34	7.12 MB/sec [4K blocks]
			Uncached Read	40.57	20.39 MB/sec [256K blocks]
		Random	20.65	
			Uncached Write	22.28	2.36 MB/sec [4K blocks]
			Uncached Write	7.30	2.34 MB/sec [256K blocks]
			Uncached Read	484.48	3.43 MB/sec [4K blocks]
			Uncached Read	103.29	19.17 MB/sec [256K blocks]

三つの機能を持ったPQI Air Pen

ここまでで紹介してきた以下の三つの機能を持ち、内蔵バッテリで駆動可能なPQI Air Pen。

なかなかに面白い製品であるといえます。

  • リチウムポリマーバッテリ内蔵
  • ポケット無線LANルータ
  • 無線ストレージ/パーソナルクラウド
  • USB接続microSDカードリーダ

しかし、これだけなら恐らくTAXANのTAXAN MeoBankSDの方がいろいろなメディアを受容できる分、いい製品かもしれません。

TAXAN MeoBankSD ワイヤレスSDカードリーダー&WiFiルーター MBSD-SUR01/W
TAXAN (2012-11-26)
売り上げランキング: 15,567

実のところ、これらのフィーチャーは表層をとらえたにすぎません。僕がPQI Air Penを選んだ理由はほかにあります。

スキだらけのPQI製品……だがそれがいい

PQIの製品はスキだらけです。

ユーザーが割って入る余地、使いこなす工夫を施す余地を残してくれているのがPQI製品のよいところ。

PQI Air Card、PQI Air Driveはスキだらけで、OSとして採用されたLinuxの部分をいじくり倒す楽しみを与えてくれました。

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

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

これに相応する楽しみをPQI Air Penからも見出すことができるのではないか。

そう感じてPQI Air Penを買ったのです。

結論から言うと、PQI Air Penもまた遊べるデバイスでした。

PQI Air Penの普通の使い方

はやる心を抑えて普通の使い方を紹介します。

ポケット無線LANルータとして使う

PQI Air Penをポケット無線LANルータとして使う場合は、Ethernet端子にEthernetケーブルを接続。本体の電源ボタンを押すだけです。

SDIM1187

もちろん、Ethernetケーブルのもう片側は壁のネットワークコンセントなどに挿しておく必要があります。

SDIM1211

最大5台の端末と同時に無線LAN接続が可能です。

スマートフォンからPQI Air Penが無線LANルータとして見えるようになるので、接続するとPQI Air Penを通じて有線ネットワークに出ていけます。

IMG 1774

「http://pqi.air/」をWebブラウザで開くと、PQI Air Penの設定画面が出てきます。

Skitched 20130416 033742

デフォルトではオープンネットワークとなっていて、だれでも接続できてしまうので、設定を変更し、セキュリティをかけるべきです。

バッテリ動作させた場合の持続時間は、1時間〜2時間といったところでしょうか。

PQI Air Penの折り畳み式USB端子から充電/給電することができますから、ガッツリ使う場合は、外部バッテリないしはACアダプタを用意しておくべきでしょう。

ネットワークの転送量に応じてバッテリの減り具合が変わるようです。

USBから電源供給しながらPQI Air Penの電源を入れると、内蔵バッテリ充電中はUSB端子に750mA近辺の電流が流れます。充電が落ち着くと200mA〜300mA程度まで電流は減ります。

無線ストレージ、パーソナルクラウドとして使う

無線ストレージ、パーソナルクラウドとして使う場合は、microSDカードをPQI Air Penのスロットに入れ、電源を入れるだけです。

SDIM1197

「ポケット無線LANルータとして使う」のと同様、PQI Air Penの無線LANルータに接続した上で、スマートフォン、タブレット専用のアプリからアクセスすると、PQI Air Pen上のファイルをアップロード、ダウンロードできます。

iOS

PQI Air Pen+ 1.1.5(無料)App
カテゴリ: ユーティリティ, 写真/ビデオ
販売元: Power Quotient International – Power Quotient International Co., Ltd.(サイズ: 4.1 MB)
全てのバージョンの評価: 無し(0件の評価)
+ iPhone/iPadの両方に対応

Android

PQI Air Pen+ 1.0.7
カテゴリ: メディア&動画
販売元: Power Quotient International Co., Ltd.
サイズ: 903k
インストール数: 1,000 – 5,000
更新日: 2013/01/24
対応OS: Android2.1 以上
平均評価: 4.1 (9件の評価)
Google Playで詳細を見る

iOSの場合は、OSの制約から、PQI Air Penにアップロードできるファイルの種類は限られています。

「http://pqi.air/」をWebブラウザで開き、左のカラムにある「File List」を選ぶと、非常に素っ気ない表示ではありますが、PQI Air Penに挿入したmicroSDカード上のファイルの一覧が表示されます。

Skitched 20130416 044432

PQI Air Penにファイルを無線LAN経由でアップロードする手段としては、PQIが用意した公式なもの(非公式な手段は後述)は、スマートフォン/タブレット専用アプリを使うものしかありません。

USB接続のmicroSDカードリーダとして使う

PQI Air Penの電源を落とした状態でPCにUSB端子で接続。

SDIM1228

すると、あたかもメモリカードリーダを接続したかのように機能し、PCからmicroSDカードにアクセスすることができます。

Skitched 20130416 044915

この状態でPQI Air Penの電源を入れると、PCからはmicroSDカードが強制的に切断されてしまいます。

その他の機能

PQI Air Penにはバックアップボタンなるものが付いています。

これを押すと、PQI Air Penに挿入されたmicroSDカードの内容を、姉妹品であるPQI Air Bankにワンタッチでバックアップできます。

6W31-001TR2A [Air Bank 1TB(ホワイト)]
PQI JAPAN
売り上げランキング: 18,596

デジカメ画像をPC無しでHDDに吸い出すのによさそうですね。

既存の無線LANに接続する

PQI Air Penは、自身がアクセスポイントとして機能するほか、既存の無線LANにクライアントとしてぶら下げることもできます。

Skitched 20130416 033440

公式の手順(非公式な手段は後述)としては一度アクセスポイントとして起動し、このWeb設定画面を操作してクライアントモードに切り替える必要があるため、クライアントモード専用で使うつもりの場合は、やや面倒です。

取扱説明書

PQI Air Penについての全貌が知りたければ、取扱説明書がダウンロードできるので、これを参照するといいでしょう。

PQI Air Pen –

PQI Air Penへのログインアカウントを割り出す

一通りを紹介したので、脇道にそれていきますよ。

PQI Air Penをいじくり倒して使えるかどうか。

それは、各種サーバのポートが開いているかどうか。PQI Air Penにログインするための情報を得られる可能性の高いftpサーバが起動しているかどうかにかかっています。

事前情報を @akuzo2k 氏から得ていました。

間をはしょりますが、調べたPQI Air Penへのログインアカウントが以下です。rootユーザですね。

アカウント パスワード
root pqiap

このアカウントで、PQI Air Penで起動しているftpサーバ、telnetサーバにログインできます。

ちなみに、PQI Air Bankへのログインアカウントは多分以下のものです。

アカウント パスワード
root pqiab

恐らく、PQI Air Bankでもftpサーバやtelnetサーバが起動しているものと思われます。

PQI Air Penの中身を調べていたら、先述のバックアップ機能の部分で発見しました。

6W31-001TR2A [Air Bank 1TB(ホワイト)]
PQI JAPAN
売り上げランキング: 18,596


PQI Air Card上で起動しているサーバ

PQI Air Penにポートスキャンをかけた結果が以下です。

PORT     STATE SERVICE
21/tcp   open  ftp
23/tcp   open  telnet
53/tcp   open  domain
80/tcp   open  http
8080/tcp open  http-proxy

Webサーバが二つ起動していて、80番と8080番と別のポートを使っています。

80番が設定ページ。

Skitched 20130416 020147

8080番は、microSDカード上のファイルを公開しています。

domainサーバは、pqi.airというホスト名の名前解決に使われているようです。

PQI Air Penへtelnetでログインと調査

さて、お楽しみtelnet接続です。

PQI Air Penの電源を入れ、PQI Air Penのアクセスポイントに接続。

Skitched 20130416 020634

telnet 192.168.2.1もしくはtelnet pqi.airで接続。

ユーザ名とパスワードは前述。telnet接続し、uname -aをしてみました。

Skitched 20130416 020804

/proc/cpuinfo

CPUはMIPSでした。

/ # cat /proc/cpuinfo
system type             : Atheros AR9330 (Hornet)
processor               : 0
cpu model               : MIPS 24Kc V7.4
BogoMIPS                : 232.96
wait instruction        : yes
microsecond timers      : yes
tlb_entries             : 16
extra interrupt vector  : yes
hardware watchpoint     : yes, count: 4, address/irw mask: [0x0000, 0x0ff8, 0x0ff8, 0x0ffb]
ASEs implemented        : mips16
shadow register sets    : 1
core                    : 0
VCED exceptions         : not available
VCEI exceptions         : not available

/proc/meminfo

搭載RAMは64MBでしょうか。

/ # cat /proc/meminfo
MemTotal:          61696 kB
MemFree:           51764 kB
Buffers:             132 kB
Cached:             2556 kB
SwapCached:            0 kB
Active:             2352 kB
Inactive:           1460 kB
Active(anon):       1124 kB
Inactive(anon):        0 kB
Active(file):       1228 kB
Inactive(file):     1460 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:          1148 kB
Mapped:             1416 kB
Slab:               4232 kB
SReclaimable:        352 kB
SUnreclaim:         3880 kB
PageTables:          152 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:       30848 kB
Committed_AS:       3108 kB
VmallocTotal:    1048404 kB
VmallocUsed:        1404 kB
VmallocChunk:    1044952 kB

/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),1280k(uImage),2560k(rootfs),1280k(uImage2),2560k(rootfs2),64k(CONF) mem=64M

dmesg

dmesgは長いのでテキストファイルとして置いておきます。

pqiairpen_dmesg.txt

mount

microSDは/tmp/www/ftp/sda1としてマウントされています。

ルートファイルシステムはsquashfsでリードオンリー。

httpサーバで公開されている/tmpはramfsで読み書き可能。ramfsなので、加えた変更は再起動で消えてしまいます。

/dev/mtdblock5 on / type squashfs (ro,relatime)
/proc on /proc type proc (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
none on /tmp type ramfs (rw,relatime)
/sys on /sys type sysfs (rw,relatime)
udev on /dev type ramfs (rw,relatime)
/dev/pts on /dev/pts type devpts (rw,relatime,mode=600)
/dev/sda1 on /tmp/www/ftp/sda1 type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=cp437,iocharset=utf8,errors=remount-ro)

env

設定されている環境変数。

USER=root
OLDPWD=/root
HOME=/root
LOGNAME=root
TERM=vt102
PATH=/usr/sbin:/bin:/usr/bin:/sbin:/usr/local/sbin:/tmp/tools:/etc/ath
SHELL=/bin/sh
PWD=/tmp/www/ftp/sda1

ps

プロセス一覧。/proc/cmdlineにもありましたが、/dev/ttyS0、115200bpsでシリアルコンソールが動いているようですね。中を開けたら基板上にTX/RXが出ていそうです。

  PID  Uid     VmSize Stat Command
    1 root        192 S   init
    2 root            SW< [kthreadd]
    3 root            SW< [ksoftirqd/0]
    4 root            SW< [events/0]
    5 root            SW< [khelper]
    8 root            SW< [async/mgr]
   83 root            SW< [kblockd/0]
   92 root            SW< [khubd]
  111 root            SW  [pdflush]
  112 root            SW  [pdflush]
  113 root            SW< [kswapd0]
  142 root            SW< [mtdblockd]
  182 root            SW< [unlzma/0]
  199 root        412 S   rc init
  200 root        216 S   wdog
  202 root        196 S   /sbin/getty ttyS0 115200
  205 root            SW< [scsi_eh_0]
  206 root            SW< [usb-storage]
  253 root        376 S < /sbin/udevd -d
  382 root        432 S   hostapd -B /tmp/secbr0
  386 root        168 S   udhcpd /etc/udhcpd_br0.conf
  410 root        584 S   shttpd -root /tmp/www/ftp -ports 8080
  412 root        356 S   /sbin/vsftpd
  416 root        132 S   /usr/sbin/telnetd
  422 nobody      432 S   /sbin/dnsmasq
  434 root        128 S   /usr/sbin/httpd -h /tmp/www/
  687 root        500 S   /sbin/wpa_supplicant -i ath1 -c /tmp/wpa.conf -B
 1381 root        372 S   -sh
 2351 root        192 R   ps aux

Mem: 10256K used, 51440K free, 0K shrd, 124K buff, 2800K cached

バイナリの種別

母艦にPQI Air Pen上のバイナリをコピーしてfileコマンドで調べるとこのような感じ。

 MacBook-Pro:bin $ file busybox
busybox: EL 32-bit MSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), statically linked, corrupted section header size

【重要】起動時の自動実行スクリプト

PQI Air Penが起動するとき、microSD上のルートディレクトリに置いたthisisautorunというシェルスクリプトが自動実行されます。

Skitched 20130416 055004

microSDカードは、PQI Air PenのOSから見ると、前述の通り /tmp/www/ftp/sda1 というパスにマウントされていますので、 thisisautorun へのフルパスは即ち /tmp/www/ftp/sda1/thisisautorun となります。

PQI Air Penのカスタマイズ

前述の通り、PQI Air Penが起動するとき、microSD上のルートディレクトリに置いたthisisautorunというファイルが、シェルスクリプトとして自動的に実行されます。

root権限を持った状態で実行されるので、シェルスクリプトからできないことはありません。

この働きを利用して、PQI Air Penの動作をカスタマイズしたいと思います。この辺は、PQI Air Cardとほぼいっしょですが、PQI Air Cardはルートファイルシステムがramfs、読み書き可能で、自由に書き換えられたのに対し、PQI Air Penはルートファイルシステムがsquashfsで読み出し専用となっている点が異なります。

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

この点でPQI Air Cardより制約はあるのですが、ルートファイルシステムがsquashfsで読み出し専用かつ、起動時の自動実行シェルスクリプトが無いPQI Air Driveよりは随分と面白味があります。しかも、PQI Air Penには有線、無線とネットワークインターフェースが二つ付いていますから、いろいろと使い方は模索できるでしょう。

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

ftpサーバの公開ディレクトリ変更

まずはftpサーバの公開ディレクトリを変更してみましょう。

ただ、これをやると専用アプリの使用に支障が出るのでご注意を。

デフォルトでは/tmp/www/ftp/が見えるようになっているので、ルートディレクトリを公開するようにします。

Skitched 20130416 072839

/etc/vsftpd.confを/tmp/www/ftp/sda1、すなわちmicroSDのルートディレクトリにコピーします。そして、vsftpd.confの末尾3カ所にある「/tmp/www/ftp」を、全部「/」に書き換え。

anon_root=/tmp/www/ftp
ftp_username=nobody
secure_chroot_dir=/tmp/www/ftp
local_root=/tmp/www/ftp

thisisautorunの内容は以下のようにします。

#!/bin/sh

killall vsftpd
/sbin/vsftpd /tmp/www/ftp/sda1/vsftpd.conf &

そして、一度PQI Air Penの電源を切って入れ直すか、telnetでログインした状態でrebootコマンドを実行。しかる後に、PQI Air Penに再度ftpクライアントで接続します。

こんなことをしなくともディレクトリを上がっていけるのですが、接続直後からルートディレクトリが見えるようになりました。

Skitched 20130416 072939

起動時から既存の無線LANにクライアントとして参加

PQI Air Penは無線LANのアクセスポイントとして機能します。既存の無線LANにクライアントとして参加するためには、アクセスポイントとして機能するPQI Air Penに接続し、Webの設定画面から操作して動作モードを切り替えないとなりません。

専らスマートフォンのテザリング子機として機能させようという場合などは、いちいち操作しないとならず面倒です。

起動直後から既存の無線LANにクライアントとして参加させてみましょう。

microSDのルートディレクトリに、thisisautorunとconnectという二つのシェルスクリプトを作成します。

Skitched 20130416 073604

thisisautorunからは、もう一つのシェルスクリプト、connectをバックグラウンド(末尾の&がバックグラウンド実行指定)で実行開始します。

▼シェルスクリプト thisisautorun

#!/bin/sh

/tmp/www/ftp/sda1/connect &

もう一つのシェルスクリプトconnectでは、Web設定画面を操作して既存の無線LANに接続開始します。

スクリプトの中で使っているwgetアプレットは、標準のbusyboxには入っていないのでwget入りのbusyboxを以下から調達します。「busybox-mips」というファイル名のものがPQI Air Penで動きます。

http://busybox.net/downloads/binaries/latest/

このbusyboxに入っているアプレットのリストは以下。

busybox-mips.txt

これを /tmp/www/ftp/sda1/bin/ 、即ちmicroSDのルートディレクトリに作ったbinというディレクトリの下にコピーしました。

シェルスクリプトconnectには8秒のウエイトを入れたので、分かりやすくconnect実行中は同期用の緑色のLEDを点灯するようにしています。

「ssid=YourSSID」「pass=YourPassword」の部分を自分の環境に合わせて書き換えてください。それぞれ、SSID、パスワードはURLエンコードしたものを書く必要があります。

▼シェルスクリプト connect

#!/bin/sh

echo 1 > /proc/gpio/gpio23_out

sleep 8

ssid=YourSSID
pass=YourPassword

wget="/tmp/www/ftp/sda1/bin/busybox-mips wget -O -"
prefix="http://127.0.0.1/cgi-bin/cmd"

$wget "${prefix}%3fset%3dSTASSID%26STASSID_VALUE%3d${ssid}"
$wget "${prefix}%3fset%3dSTAWPA%26STAWPA_VALUE%3dWPA%2dPSK"
$wget "${prefix}%3fset%3dSTAPASS%26STAPASS_VALUE%3d${pass}"
$wget "${prefix}%3fcmd%3dCONNECT"

echo 0 > /proc/gpio/gpio23_out

無線LANのセキュリティがWEPの場合は、次のように変わります。

$wget "${prefix}%3fset%3dSTAWPA%26STAWPA_VALUE%3dWPA%2dPSK"
↓
$wget "${prefix}%3fset%3dSTAWPA%26STAWPA_VALUE%3dWEP"

無線LANがオープンネットワークの場合は次のようになります。

$wget "${prefix}%3fset%3dSTAWPA%26STAWPA_VALUE%3dWPA%2dPSK"
↓
$wget "${prefix}%3fset%3dSTAWPA%26STAWPA_VALUE%3dNONE"

無線LANがオープンネットワークの場合は次の行が必要ありません。

$wget "${prefix}%3fset%3dSTAPASS%26STAPASS_VALUE%3d${pass}"

なぜシェルスクリプトが二つに分かれているかというと、thisisautorunの実行が終わってからネットワークの設定を始めるようで、thisisautorunの中から動作を切り替えることができないからです。

cgiの実行

PQI Air Pen上で動いているWebサーバで動かすcgiは、自前で用意することができます。

Webサーバで公開されているのは/tmp/www/以下。

/tmp/以下はramfsで書き換え可能。なので、Webサーバで公開されているページは自由にいじることができます。

/tmp/www/cgi-bin/というディレクトリもありますが、別にどこにあってもcgiという拡張子であればcgiとして実行されます。

ただし、既存のcgiは、スピードの関係か、ほとんどがバイナリです。

自前で用意するcgiは、別にシェルスクリプトでもOKです。前述のbusybox-mipsをインストールしておけば、cgiの記述にsedやawkを利用可能です。

microSDのルートディレクトリは、ブラウザから見た場合「http://pqi.air:8080/sda1/」となります。microSDのルートディレクトリに置いたtest.cgiというcgiは「http://pqi.air:8080/sda1/test.cgi」でアクセスできます。

例えば、次のようなファイル、test.cgiをmicroSDのルートに置いて「http://pqi.air:8080/sda1/test.cgi」にブラウザからアクセスしてみます。

#!/bin/sh

echo "Content-Type: text/html"
echo ""
echo "<h1>Hoge</h1>"
echo "<p>Hello, World!<p>"

すると、上記の内容がcgiとして実行され表示されるはずです。

Skitched 20130416 080220

追加のソフトウェアの用意

元からあるコマンドと追加のbusybox-mipsだけでは物足りないということで、追加のソフトウェアを用意しましょう。

Open-WRT、DD-WRTのパッケージが流用できるかと思いきや、PQI Air Penの/libにあるライブラリでは動きませんでした。

busybox-mipsがすんなり動いたのは、必要なライブラリがスタティックリンクされたバイナリだからです。

ここで注意すべきは、ルートファイルシステムが読み取り専用であるということです。

新しく用意するソフトウェアは、/libにあるライブラリにリンクする形でコンパイルするか、busybox-mips同様ライブラリをスタティックリンクするか、/tmp/www/ftp/sda1以下、即ちmicroSD上に置いたライブラリにダイナミックリンクする必要があります。

今のところ、僕のところではスタティックリンクする方法しかうまくいっていませんが、PQI Air Penの問題でなく、僕が無知であることに起因した問題でしょう。

何でもかんでもスタティックリンクすればいいかというと、そういうわけではありません。スタティックリンクしようとするとコンパイルできないもの、うまく動かないものもあります。

コンパイルに使ったtoolchainは、Sourcery CodeBench Lite Editionです。

Sourcery CodeBench Lite Edition – Mentor Graphics

「Sourcery CodeBench Lite Edition>MIPS processors>Download the GNU/Linux release>Sourcery CodeBench Lite 2012.09-99>IA32 GNU/Linux Installer」と辿り、 mips-2012.09-99-mips-linux-gnu.bin をダウンロードします。

ターミナルから実行するとインストールが開始されます。

ホームディレクトリにインストールしたので、以下を~/.bashrcに追記し、パスを通しました。

export PATH=$HOME/CodeSourcery/Sourcery_CodeBench_Lite_for_MIPS_GNU_Linux/bin:$PATH

toolchainのプレフィックスは mips-linux-gnu。gccであるならば、mips-linux-gnu-gcc になります。

試しにnkfをコンパイルしてみました。

nkf Network Kanji Filter プロジェクト日本語トップページ – SourceForge.JP

CC = mips-linux-gnu-gcc
CFLAGS = -g -O2 -Wall -pedantic -static -march=24kc

Makefileの冒頭を上記のように書き換え、make。PQI Air Penで動くnkfが出来ました。

ubuntu@ubuntu:~/Downloads/nkf-2.1.2$ file nkf
nkf: ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1, statically linked, for GNU/Linux 2.6.12, with unknown capability 0x41000000 = 0xf676e75, with unknown capability 0x10000 = 0x70401, not stripped

バイナリを一応置いておきます。

ダウンロード: nkf-2.1.2-mips.zip

PQI Air Pen用に何かコンパイル出来たら、ぜひ教えてください。

ruby 1.8.7

意外と興味を持つ人が多いみたいなので、socket.soがどうにも出来なくてネットにつながらない中途半端なものですが、一応ruby 1.8.7を置いておきます。

/tmp/www/ftp/sda1/bin # ./ruby -v

ruby 1.8.7 (2012-10-12 patchlevel 371) [mips-linux]

ダウンロード: ruby-1.8.7-mips.zip

手練れの方、完璧なやつをよろしくお願いします。

ただ、専用アプリがmicroSDカード内にある全ファイルを再帰的にたどる作りになっているため、rubyを置いておくと専用アプリが大分もっさりするようになってしまうという不都合があります。

なかなか便利で楽しめるPQI Air Pen

ポケット無線LANルータ、無線ストレージ/パーソナルクラウド、USB接続microSDカードリーダの三役をこなし、なおかつシステムをカスタマイズして楽しむこともできるPQI Air Pen。

僕はこういう製品に目が無く、とても気に入りました。

PQI JAPAN Air Pen(ホワイト) 6W41-0000R2
PQI
売り上げランキング: 108,074

 - Android, iPad, iPhone, ガジェット

Furusato nouzei banner