2013年3月13日水曜日

AirCardのIPアドレスを知る - その1 サーバ側の準備

AirCardは無線LANのアクセスポイントにつないで
インターネットに出て行くことは可能なのですが、
如何せん自らが無線LANのアクセスポイントとなることが前提となる
応用方法しか準備されていません。
無線LANのアクセスポイントにつないだときにはDHCPでIPアドレスを取得できますが、
外部からアクセスするためには
AirCard自身のそのIPアドレスがあらかじめわからないと面倒です。
そこでIPアドレスを画像として作成してSDカード内に保存し、
デジカメからその画像を閲覧することでIPアドレスがわかるようにしてみました。
ただしAirCard内部で処理するのはつらいので、外部サーバの手助けを借ります。
今回はそのサーバ側の話です。
サーバにはServersMan@VPS(debian-32bit)を使いますが、
この機能を不特定多数に公開するつもりはないので、
個人で勝手に準備してください。

まずjpeg画像の生成ツールを以下でインストールします。
# apt-get install imagemagick
その後
$ convert -geometry <横のピクセル数>x<縦のピクセル数>! -fill <文字の色> -font <TrueTypeフォントのファイル名(フルパス)> -pointsize <文字の大きさ(ポイント)> label:<画像に埋め込む文字列> <生成するJPEGファイル名前(拡張子は".jpg")>
を実行して閲覧可能なjpegファイルが生成できることを確認します。
TrueTypeフォントのファイルは"/usr/share/fonts/truetype"ディレクトリの下に
拡張子が".ttf"なファイルがあると思うので適当に選んでください。
私の場合、画像の大きさはAirCardの制御用画像に倣って640×480とし、
文字の大きさは100ポイントとしました。
また文字の色は"blue"(青)にしています。
最初文字の色を明示的に設定せず黒にしていたのですが、
LUMIX GF1で表示できない画像とか言われたので、
# apt-get install jhead
# exit
$ jhead <生成したJPEGファイル>
で調べてみたところ
Color/bw     : Black and white
が含まれており、これが悪さをしているようでした。
で、とりあえず文字の色を変えてみたら問題なくなったのでそうしています。

それではこれまでの成果をウェブアプリケーションに落とし込みます。
以下を実行します。
# cd /var/www/html
# mkdir ip
# chmod 777 ip
# cd ip
# touch index.php
# chmod 644 index.php
なお"/var/www/html/p/index.php"の内容は以下のようにします。
私の環境に合わせているので適当に変更してください。
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
</style>
</head>
<body>
<?
$ip=$_GET["ip"];
system("convert -geometry 640x480! -fill blue -font /usr/share/fonts/truetype/kochi/kochi-gothic.ttf -pointsize 100 label:$ip ./ip.jpg");
?>
</body>
</html>
これで、ウェブブラウザから
http://<サーバ名>/p/index.php?ip=<IPアドレス>
にアクセスした後で
http://<サーバ名>/p/ip.jpg
にアクセスすることでIPアドレスを書き込んだ画像が取得できます。
ちなみにわざわざIPアドレスを引数で渡しているのは
NATを挟む場合を想定しているからです。

2013年3月12日火曜日

BD-REにダビング

先日からDIGA BZT710に録画した
SUPERBPWL XLVIIをDVDに書き出したりしていますが、
BD-RE(ビデオ用)ディスクを購入したので早速ダビングしてみることにしました。

最初にメディアをフォーマットする必要がありました。
ディスクを入れたままリモコンの[BD/DVD]ボタンを押し、
[BD管理]-[BD-REのフォーマット]を実行することで使えるようになります。
あとはDVD-RAMへの書き出しと同様の操作によりダビングが可能です。

今回はサイズ的に1層では足りず2倍(HG)にトランスコードしたため
時間はたっぷりかかってしまいました。
そのBD-REはそのままではPS3で認識できませんが、
DVD-RWのときと同様にファイナライズすれば、PS3でHD画質で再生できました。

やっぱりこれからの時代はBDですね。

2013年3月11日月曜日

ワンセグ受信アダプタ DSテレビ

何年も前から安くなったらほしいなと思っていたワンセグ受信アダプタ DSテレビをとうとう購入しました。
実は数年前から近くの中古ゲーム屋さんの同じ場所にずーっと置いてあって、
時間の経過とともに少しずつ安くなっていき、
ようやく買ってもいいかなという価格になりました。

早速動作確認してみたところ、Nintendo3DSNintendoDSi
NintendoDS Lite、NintendoDS(初代)のすべててテレビが見られました。
ただし、LiteとDSiでは感度がいまいちでした。
なお、附属の外部アンテナ(ワイヤーアンテナ)は使わずに、
DSテレビ本体のロッドアンテナ×2での状況での話になります。

で、今さらなぜこんなものを購入したのかというと、非常用です。
どうせ使っていないDS本体があるので、一緒に避難袋にでも放り込んでおけば
いざというとき役に立つかもしれません。
今の世の中スマートフォンで情報は集められますが、
大規模災害が起こったときにはワンセグテレビやラジオのほうがあてになります。
DSの丈夫さは折り紙つきですし、電池も昨今のスマートフォンより持ちますし、
もう使わなくなっている本体があるならこういう使い方もありではないでしょうか。
東日本大震災からちょうど2年。備えあれば憂いなしです。

2013年3月7日木曜日

クラブニンテンドーの2012年度プラチナ特典が届いた

ここ数年毎年プラチナ会員になっている任天堂の
会員制サイト"クラブニンテンドー"の2012年度プラチナ特典が届きました。
私は"マリオトランプ"と"ピクミントートバック"をチョイスし、
前者は先月、後者は今週に届きました。

"マリオトランプ"はプラスチック製で透けて見える部分が多く
見た目は豪華なのですが、遊ぶには使いにくい印象です。
私だけかもしれませんが、見たときと触ったときのサイズ感が違い、
なんだかシャッフルするのもやり辛いです。
無駄に豪華なケースが付いているあたり
コレクターズアイテム的なものなのでまあしょうがないでしょう。
派手なので小さい子供には受けそうです。

"ピクミントートバック"は実用的です。
派手さはないのでショッピングバッグ(エコバッグ?)に使っています。
特に不自由さはありませんが、個人的にはもうちょっと深いほうがよかったかな。

さて、2013年度はWiiUも購入しましたし、すでにプラチナ会員になっています。
来年は何がもらえるのか微妙に楽しみにしています。

2013年3月6日水曜日

Asteriskとe164.org

先日VPS上にAsteriskを入れて内線網を作りましたが、
せっかくなのでe164.orgにつないでみます。

実は大昔にe164.orgを使っていたことがあって(こことかこことか)、
そのときのアカウントがまだ生きており、
今回つないでみることにしました。

ところでE.164というのは国際的な電話番号の体系を定めたもので、
日本の国番号が"81"とかいうのもここでの定義によります。
このE.164をインターネットに透過的に浸透させようと
DNS引きできるようにしたのがENUMというもので、
e164.arpaドメインの下にすべての電話番号のレコードがぶら下がるようになっています。
ただしアナログ回線がまだまだ幅を利かせ、
IP電話も各社の囲い込みが激しい中、
これが実用になるには恐ろしく時間がかかりそうです。

そんな状況を打破しようとしてかどうかは分かりませんが、
ずいぶん前からe164.orgが活動していて
勝手に電話番号を割り振っています。
勝手とはいっても現状システムを完全無視しているわけではなく、
E.164で国際ネットワーク用として定義されている国番号"882"に
多分勝手に決定した"99"の事業者識別番号をくっつけて、
その元で6桁の組織識別番号をほしい人たちに配っています。
各組織に割り当てられるのは4桁の電話番号で1万番号運用できます。
何しろ勝手にやっていることなので、
e164.orgを使っている者同士しかつながらないのですが、
Asteriskには標準でe164.org関連の設定が埋め込まれていたりします。
このあたりが参考になります。

では設定してみましょう。
なお、e164.orgでの接続方法設定にIAX2に設定していることを前提とします。
まずは着信です。
"88-299-<組織識別番号(6桁)>-<内線番号(4桁,最初の2桁は'10')>"
にかかってきた電話を各内線番号に着信させます。
設定ファイル"/etc/asterisk/enum.conf"の[general]セクションにある
;search => e164.org
のコメントアウトを解除(行の先頭の';'を削除)し、
設定ファイル"/etc/asterisk/iax.conf"の[guest]セクションの内容を
type=user
context=mainmenu-iax
に変更し、設定ファイル"/etc/asterisk/extensions.conf"の最後に
[mainmenu-iax]
exten => _88299<組織識別番号(6桁)>10XX,1,Dial(SIP/${EXTEN:11},,tT)
exten => _88299<組織識別番号(6桁)>10XX,n,Hangup
を追加します。
次に発信です。
設定ファイル"/etc/asterisk/extensions.conf"の[default]セクションに
exten => _88299.,1,Macro(enum-call,${EXTEN})
exten => _88299.,n,Congestion
を追加し、設定ファイル"/etc/asterisk/extensions.conf"の最後に
[macro-enum-call]
exten => s,1,Set(cidnum=88299<組織識別番号(6桁)>)
exten => s,n,Set(cidnum=${cidnum}${CALLERID(num)})
exten => s,n,Set(CALLERID(num)=${cidnum})
exten => s,n,Set(counter=0)
exten => s,n,Set(DS=0)
exten => s,n,Set(count=${ENUMLOOKUP(+${ARG1},ALL,c,,e164.org)})
exten => s,n(start),GotoIf($["${counter}" >= "${count}"]?end)
exten => s,n,Set(counter=$[${counter}+1])
exten => s,n,Set(ENUM=${ENUMLOOKUP(+${ARG1},ALL,,${counter},e164.org)})
exten => s,n,GotoIf($["${LEN(${ENUM})}" = "0" ]?start)
exten => s,n,GotoIf($["${ENUM:0:3}"="sip"]?sip)
exten => s,n,GotoIf($["${ENUM:0:6}"="guest@"]?iax:start)
exten => s,n(sip),Set(DS=$[${DS}+1])
exten => s,n,Set(DIALSTR${DS}=SIP/${ENUM:4})
exten => s,n,Goto(start)
exten => s,n(iax),Set(DS=$[${DS}+1])
exten => s,n,Set(iaxhostext=${CUT(ENUM,@,3)})
exten => s,n,Set(DIALSTR${DS}=IAX2/guest@${iaxhostext})
exten => s,n,Goto(start)
exten => s,n(end),Set(counter=0)
exten => s,n(start2),GotoIf($["${counter}" >= "${DS}"]?end2)
exten => s,n,Set(counter=$[${counter}+1])
exten => s,n,Set(DIALSTRING=${DIALSTR${counter}})
exten => s,n,Dial(${DIALSTRING},120)
exten => s,n,GotoIf($[$["${DIALSTATUS}"="CHANUNAVAIL"]|$["${DIALSTATUS}"="CONGESTION"]]?start2:hangup)
exten => s,n(end2),NoOp
exten => s,n(hangup),Hangup
を追加します。
その後
# /etc/init.d/asterisk restart
を実行して設定を反映させます。

通話テストは上記に準じた設定にしているのであれば
組織内の他の電話に88299で始まる外線経由でかけることで可能です。
例えば、内線番号1001の電話機から1002に電話をかけると、
当然1002の電話機には1001から着信した旨が表示され通話も可能ですが、
内線番号1001の電話機から"88-299-<組織識別番号>-1002"に電話をかけると、
1002の電話機には"88-299-<組織識別番号>-1001"から着信した旨が表示され
通話も可能となります。
ちなみに私の知り合いでe164.orgを使っている人を知らないので、
他の組織識別番号との発着信テストについては行っていませんが、
多分大丈夫でしょう。

実はこの設定、特に発信設定にたどり着くまでに結構な時間と試行錯誤が必要でした。
# asterisk -rvvv
を実行して立ち上がっているAsteriskにログインしデバッグ情報を確認したり、
# dig <内線番号(逆文字列、'.'区切り)>.<組織識別番号(逆文字列、'.'区切り)>.9.9.2.8.8.e164.org NAPTR
でDNS引きした結果を確認して行く過程で、
e164.orgでは接続設定をIAXにしている場合通話先を
guest@<電話番号>@<サーバ名>/<電話番号>
と返し、SIPの場合は
guest@<電話番号>@<サーバ名>/<電話番号>
sip:<電話番号>@<サーバ名>
と返していることが分かりました。
SIPのほうは多分問題ない(試してはいない)として
IAXのときは本来
guest@<サーバ名>/<電話番号>
の形式で返すべきと思われ、
e164.orgの単なるバグのような気がしないでもないのですが、
しょうがないので文字列操作で期待される形式に直すようにしました。

このe164.org、実際に役に立つかどうかは分かりませんが、
今回の件でよりAsteriskに詳しくなったので、
そちらのほうが何かの役に立つかもしれません。

2013年3月5日火曜日

ブルーレイディスク

先日録画したSUPERBPWL XLVIIをDVDに書き出しましたが、
あまり実用的でないことがわかったので
今度はブルーレイディスクに書き出してみることにしました。
その前にブルーレイディスクについての勉強です。
何しろ今までまったく使う気がなかったので大した知識を持っていません。

書き込み可能なブルーレイディスクにはDVDと同様に
ライトワンスのBD-Rと削除も可能なBD-REがあります。
BDの場合BD-REが先に策定されてその派生としてBD-Rが作られた記憶があるので、
多分中身にはそれほど差がなく、性能的にどちらが有利ということはない
(後述のLTHを除く)と思いますし、実際値段もそんなに違いません。
間違って消したくないようなものをBD-Rに書くのが正解なのかもしれません。
あとBD-REならコピーワンスなコンテンツのムーブバックにも
対応できる可能性があるでしょう。

記憶容量については1層25GB2層50GBをよく見かけますが、
BD-XL規格では3層100GBと4層128GB(Rのみ)もあるようです。

BD-Rについては素材によって元からある相変化金属系(HTL: High to Low)と、
後に登場した有機色素系のBD-R LTH(Low to High)の2種類があり、
当初は後者のほうがコストが安くなるという触れ込みでしたが、
今見るとどちらも値段はほとんど変わりません。
メーカーによってはLTHしか出していなかったり、ブランドで分けていたりするようです。
LTHのほうが耐久性が低いなどといわれているようですが、
普通の保存の仕方であればそんなには変わらないのではないでしょうか。
HDDのようにメカ部分の磨耗がありませんし、NANDメモリよりはるかに信頼できますが、
物理的ダメージを考えれば、
超大事なデータは2枚焼いて地理的に別々に保管するのがいいでしょう。

またBD-R/REについて市販されているものにはデータ用とかビデオ用とか書かれており、
後者には私的録画補償金が含まれている関係で価格がちょっとだけ高く、
同一メーカーの同一スペック品で比べる(データ用ビデオ用)と、やはり一枚あたり数円高いようです。
どうやら中身は同じものらしいのでどちらを使ってもいいようですが、
データ用を1枚買ってきて試してみようと思ったものの、
店頭ではデータ用をあまり見かけず選択肢も少なく、かえって高かったりします。
そうなるとPCでデータを焼くためもビデオ用を使えばいいわけで、
わざわざデータ用を選択する必要はなさそうです。
自分が信頼を置く製品(メーカー、ブランド)の安いものを
50枚セットでまとめ買いするのが正解のようです。

ここまで調べていて気づいたのは、
この数年でビット単価はDVDよりBDのほうがはるかに安価になったということで、
BDはデータバックアップの有力な媒体になります。
仮想マシンのディスクイメージなどはDVD(1層)に収まらないサイズの
ファイルやディレクトリも多く、小分けするのもめんどうですし、
2重にバックアップするにしてもコストも手間も少なく済みます。
最近はPC用のBDドライブもBD-U6XLのように安くなっていますし、
何かのついでに買ってもいいかな、という気分になってきました。

2013年3月4日月曜日

AirCardのちょっとした情報

そういえばPQI AirCardについての情報でまだ書いていなかったことがあるので、
ここでまとめてご紹介します。

# cat /proc/cpuinfo
Processor       : ARM926EJ-S rev 5 (v5l)
BogoMIPS        : 421.06
Features        : swp half fastmult edsp java
CPU implementer : 0x41
CPU architecture: 5TEJ
CPU variant     : 0x0
CPU part        : 0x926
CPU revision    : 5

Hardware        : KeyASIC Ka2000 EVM
Revision        : 0000
Serial          : 0000000000000000

バージョン138のとき
# cat /proc/version
Linux version 2.6.32.28 (root@ubuntu-desktop) (gcc version 4.5.2 (Sourcery G++ Lite 2011.03-42) ) #244 PREEMPT Mon Jun 11 11:39:31 CST 2012

バージョン147のとき
# cat /proc/version
Linux version 2.6.32.28 (root@ubuntu-desktop) (gcc version 4.5.2 (Sourcery G++ Lite 2011.03-42) ) #125 PREEMPT Fri Dec 14 14:40:11 CST 2012

# cat /proc/cmdline
root=/dev/ram0 rw console=ttyS0,38400n8 mem=32M initrd=0x500000,3M

マイクロSDカード(/dev/mmcblk0p1)が丸ごと/mnt/sdにマウントされており、
ftpでアクセスすると/sdとして見える。