CuBox-i には赤外の入力機能がついています。これはユニークなファンクションです。他の小型コンピュータについているのを見たことがないからです。わざわざ着けているというからには、赤外リモコンを使うようなアプリケーションが想定されているということですね。それだったら使わない手はない。
リモコンの一番のターゲットはやっぱりメディアプレーヤーでしょう。XBMCのGeeXboXを使っているTVのリモコンで操作できると、なんか嬉しいです。
では、早速にやってみましょう。元ネタは、下記のCuBox-i オフィシャルサイトです。
http://imx.solid-run.com/wiki/index.php?title=GeeXboX
ここで動いたものを他のアプリで使えるようにする方法であるとか、赤外の出力を使って他の機器を間接的に制御することに使うなどの応用編は調査後に別途企画したいと思います。なお、CuBox-i4だと赤外の入力ばかりじゃなく出力もできるようになっています。狙っているのは、CuBox-i赤外出力を使って家の中の家電機器を操作する、というあたりでしょうか。一旦やりだすとあれもこれも、と夢が膨らんできます。
さて、今回はGeeXboxを、手持ちのTV用のリモコンで入力操作をしようというのがお題です。
何をやろうとしているのかをざっと見て行きましょう。
1.GeeXboxが走っている状態で、SSH, Telnet, シリアルなどのコンソールからコマンドを入力できる環境を準備します。(今回の操作はすべてコンソールから行います)
2.使用したいTVリモコンを準備します。テレビの操作で使用しているのとぶつからないようにできるのかを確認します。例えばリモコンの方でTV1/TV2のように切替があると、TV2でのボタン操作をGeeXboXに割り当てが可能です。GeeXboX専用に使えるリモコンを別途用意する(使わなくなった昔のビデオのリモコンを再利用する)というのもアリでしょう。
3.コマンドを使って、使いたいリモコンのボタンをおして発信される赤外のパターンを読み込みます。
4.読込んだパターンをファイルに書込み、そのパターンをGeeXboxにセットし、リモコンの信号が受けとれているかをチェックします。
5.うまくいっているようであれば、覚えさせたいボタンを全て登録する。そのファイルを所定の場所に置き、設定ファイルを直して終了。あとは実際に使えることを確認します。
実際にリモコンの設定に入る前に、リモコンについて少しおさらいをしておきます。
リモコンフォーマットは、日本では3種類が使われています。それぞれの主要なメーカーは以下の通り。
NECフォーマット 日立・東芝・三洋・NECなど
家製協フォーマット パナソニック・シャープ・ヤマハなど
SONYフォーマット SONY
今回使うリモコンがどれにあたるのかをチェックしておいてください。これが分からないと、やってみて実際に思い通りに動くかチェックを繰り返しやらなければなりません。主流はNECフォーマットです。
さて、具体的な作業に入りましょう。
以降の作業はTV画面は操作にはつかいません。すべて、GeeXboXにシリアル接続したコンソールか、ether経由で接続したSSHコンソールからコマンドを打込んで行います。(「基本のシリアル通信環境を整えておく」参照)ログインIDはrootでloginするパスワード初期設定はrootです。(GeeXboXのプロンプトは#しか表示されないので、多少違和感がありますが、今どこのフォルダにいるのかを気にしながら気をつけて作業を進めます。rootで作業をするので間違うと致命的なこともあり得ます。注意深く確認しながら手を進めましょう)
まず最初にすることは、/etc/modules-load.d/の下にremote.conf
というファイルを作成します。
このファイルには、 /lib/modules/3.10.30/kernel/drivers/media/rc ("3.10.30"は、バージョン次第で適宜変更する)のフォルダ内に準備されたモジュールの名前を入れます。例えばこんな風です。すでに使用するものが1種類でNECフォーマットなら1つを記述すればそれでOK。
ir-nec-decoder
ir-sony-decoder
ir-jvc-decoder
ir-rc5-decoder
ir-rc6-decoder
作成したファイルは /etc/modules-load.d/remote.conf
にします。必ずcatして確かめながら進めましょう。これが確認できたら一旦モジュールをカーネルに組込むためにコマンドからrebootします。
systemctl stop eventlircd.service
systemctl stop xbmc.service
ir-keytable -t
event MSC: scancode = 72cd5c
# table mycustomremote, type: NEC
0x72cd5c KEY_ENTER
0x72cd1c KEY_LEFT
0x72cd48 KEY_RIGHT
0x72cd44 KEY_UP
0x72cd1d KEY_DOWN
ir-keytable -c
ir-keytable -w /etc/rc_keymaps/mycustomremote
ir-keytable -t
event MSC: scancode = 72cd5c
event key down: KEY_ENTER (0x001c)
#KEYMAPS="hauppauge"
となっている部分を自分でつけたファイル名に書き換えます。行頭の#も取ります。(すべて確認後に再度キーの追加をするときにはここに再度#をつけて前のステップへ戻り、キーをスキャンし直します。)
KEYMAPS="mycustomremote"
systemctl start eventlircd.service
systemctl start xbmc.service