Pogoplug に Arch Linux をインストールして MPD による音楽再生サーバーを構築しましたが、曲の操作にわざわざ PC を使わなければならないのは面倒です。iPod Touch のアプリを使用してリモコン代わりにするという手もありますが、さすがに大げさすぎると思いましたので Amazon で 790 円の USB 赤外線受光部セット RW-PCM37BK を購入してみました。安っぽい外観がいかにもリモコンという感じなので雑に扱うことができそうです。
Linux で動作している例がいくつかありましたので安心して購入に踏み切ったわけですが Pogoplug + Arch Linux は情報がなく、少々苦労しましたのでここに私の手順を掲載しておきたいと思います。
はじめに USB ポートにリモコンの受光部を接続して認識されているかどうかを確認します。
lsusb
一覧に Xenta SE340D PC Remote Control (個体によって違うかもしれませんが) というのが表示されていれば認識されています。Pogoplug Series 4 や Pogoplug Mobile で電流が足りない場合は認識されませんのでセルフパワーの USB ハブを用意する必要があります。
lirc-utils をインストールします。
pacman -S lirc-utils
lircd の自動起動を有効にして設定ファイルをコピーします。
systemctl enable lircd cp /usr/share/lirc/devinput/lircd.conf.devinput /etc/lirc/lircd.conf
リモコンのデバイスの ID を確認し、/etc/lirc/lirc_options.conf を書き換えます。
ls /dev/input/by-id/
vi /etc/lirc/lirc_options.conf
#driver = default driver = devinput #device = /dev/lirc0 device = /dev/input/by-id/usb-1d57_ad02-event-kbd
lirc のサービスを起動します。
systemctl start lircd
リモコンの各ボタンを割り当てるため、キーコードを調べます。
irw
この状態でリモコンのボタンを押すとボタンに対応するキーコードが表示されます。ひとつのボタンで複数のキーコードが割り当てられているものもありますので注意してください。
# POWER 0000000080010074 00 KEY_POWER devinput # E-MAIL 000000008001009b 00 KEY_MAIL devinput # WWW 00000000800100ac 00 KEY_HOMEPAGE devinput #CLOSE 0000000080010038 00 KEY_LEFTALT devinput 000000008001003e 00 KEY_F4 devinput # A 000000008001001d 00 KEY_LEFTCTRL devinput 0000000080010038 00 KEY_LEFTALT devinput 000000008001001e 00 KEY_A devinput 0000000080010002 00 KEY_1 devinput 000000008001003b 00 KEY_F1 devinput # B 000000008001001d 00 KEY_LEFTCTRL devinput 0000000080010038 00 KEY_LEFTALT devinput 0000000080010030 00 KEY_B devinput 0000000080010003 00 KEY_2 devinput 000000008001003c 00 KEY_F2 devinput # C 000000008001001d 00 KEY_LEFTCTRL devinput 0000000080010038 00 KEY_LEFTALT devinput 000000008001002e 00 KEY_C devinput 0000000080010004 00 KEY_3 devinput 000000008001003d 00 KEY_F3 devinput # D 000000008001001d 00 KEY_LEFTCTRL devinput 0000000080010038 00 KEY_LEFTALT devinput 0000000080010020 00 KEY_D devinput 0000000080010005 00 KEY_4 devinput 000000008001003e 00 KEY_F4 devinput # PREVIOUS SONG 00000000800100a5 00 KEY_PREVIOUSSONG devinput # NEXT SONG 00000000800100a3 00 KEY_NEXTSONG devinput # MOUSE NULL # REWIND 0000000080010069 00 KEY_LEFT devinput 000000008001001d 00 KEY_LEFTCTRL devinput 000000008001002a 00 KEY_LEFTSHIFT devinput 0000000080010030 00 KEY_B devinput # FASTFORWARD 000000008001006a 00 KEY_RIGHT devinput 000000008001001d 00 KEY_LEFTCTRL devinput 000000008001002a 00 KEY_LEFTSHIFT devinput 0000000080010021 00 KEY_F devinput # PLAY / PAUSE 00000000800100a4 00 KEY_PLAYPAUSE devinput # STOP 00000000800100a6 00 KEY_STOPCD devinput # L NULL # R NULL # FULLSCREEN 0000000080010038 00 KEY_LEFTALT devinput 000000008001001c 00 KEY_ENTER devinput 000000008001001d 00 KEY_LEFTCTRL devinput 0000000080010004 00 KEY_3 devinput # MUTE 0000000080010071 00 KEY_MUTE devinput # VOLUME DOWN 0000000080010072 00 KEY_VOLUMEDOWN devinput # VOLUME UP 0000000080010073 00 KEY_VOLUMEUP devinput # 1,.? 000000008001000f 00 KEY_TAB devinput # 2ABC 0000000080010067 00 KEY_UP devinput # 3DEF 000000008001007e 00 KEY_RIGHTMETA devinput # BACKSPACE 000000008001000e 00 KEY_BACKSPACE devinput # 4GHI 0000000080010069 00 KEY_LEFT devinput # 5JKL 000000008001001c 00 KEY_ENTER devinput # 6MNO 000000008001006a 00 KEY_RIGHT devinput # PAGE UP 0000000080010068 00 KEY_PAGEUP devinput # 7PQRS 000000008001001d 00 KEY_LEFTCTRL devinput 0000000080010018 00 KEY_O devinput # 8TUV 000000008001006c 00 KEY_DOWN devinput # 9WXYZ 0000000080010001 00 KEY_ESC devinput # PAGE DOWN 000000008001006d 00 KEY_PAGEDOWN devinput # NUMLOCK NULL # 0_@*# 0000000080010039 00 KEY_SPACE devinput # MY PC 000000008001007d 00 KEY_LEFTMETA devinput 0000000080010012 00 KEY_E devinput # DESKTOP 000000008001007d 00 KEY_LEFTMETA devinput 0000000080010020 00 KEY_D devinput
リモコンのボタンに対応するコマンドを設定ファイルに記述します。ひとつのボタンで複数のキーコードが割り当てられている場合は button = を複数記述することで対応できそうですが、巻き戻しボタン、左方向ボタンなどで KEY_LEFT が両方に割り当てられているものなどは誤作動しましたので片方は使用しないようにしました。
vi /etc/lirc/lircrc
# 音符ボタン (データベース更新) begin prog = irexec button = KEY_LEFTCTRL button = KEY_LEFTALT button = KEY_A button = KEY_1 button = KEY_F1 repeat = 0 config = mpc update flags = quit end # 前の曲ボタン (前の曲) begin prog = irexec button = KEY_PREVIOUSSONG repeat = 0 config = mpc prev flags = quit end # 次の曲ボタン (次の曲) begin prog = irexec button = KEY_NEXTSONG repeat = 0 config = mpc next flags = quit end # 巻き戻しボタン (5秒巻き戻し) begin prog = irexec button = KEY_LEFT button = KEY_LEFTCTRL button = KEY_LEFTSHIFT button = KEY_B repeat = 0 config = mpc seek -00:00:05 flags = quit end # 早送りボタン (5秒早送り) begin prog = irexec button = KEY_RIGHT button = KEY_LEFTCTRL button = KEY_LEFTSHIFT button = KEY_F repeat = 0 config = mpc seek +00:00:05 flags = quit end # 再生・一時停止ボタン (再生・一時停止) begin prog = irexec button = KEY_PLAYPAUSE repeat = 0 config = mpc toggle flags = quit end # 停止ボタン (停止) begin prog = irexec button = KEY_STOPCD repeat = 0 config = mpc stop flags = quit end # 音量下げるボタン (音量 5 下げる) begin prog = irexec button = KEY_VOLUMEDOWN repeat = 1 config = mpc volume -5 flags = quit end # 音量上げるボタン (音量 5 上げる) begin prog = irexec button = KEY_VOLUMEUP repeat = 1 config = mpc volume +5 flags = quit end # 1 (プレイリスト 1 を読み込んで再生) begin prog = irexec button = KEY_TAB repeat = 0 config = mpc clear && mpc load playlist1 && mpc play flags = quit end # 2 (プレイリスト 2 を読み込んで再生) begin prog = irexec button = KEY_UP repeat = 0 config = mpc clear && mpc load playlist2 && mpc play flags = quit end # 3 (プレイリスト 3 を読み込んで再生) begin prog = irexec button = KEY_RIGHTMETA repeat = 0 config = mpc clear && mpc load playlist3 && mpc play flags = quit end # PAGE UP ボタン (リピート切り替え) begin prog = irexec button = KEY_PAGEUP repeat = 0 config = mpc repeat flags = quit end # PAGE DOWN ボタン (ランダム切り替え) begin prog = irexec button = KEY_PAGEDOWN repeat = 0 config = mpc random flags = quit end # MY PC ボタン (WOL で PC 起動) begin prog = irexec button = KEY_LEFTMETA button = KEY_E repeat = 0 config = wol xx:xx:xx:xx:xx:xx flags = quit end
irexec の自動起動を有効にして起動します。
systemctl enable irexec systemctl start irexec
ボタン割り当てはまだまだ改善の余地があるかもしれませんが、これだけでもかなり便利になりました。MPD の操作はもちろん、WOL を使用すれば LAN 内の PC もリモコンで電源を入れることができますので、よっこらせと腰をかがめて電源ボタンを押す必要がなくなります。
他にもコマンドで実行できるものであれば何でも割り当て可能ですので、例えば音声合成で天気予報をしゃべらせてみたり、ネットワーク対応の機器を操作してみたりすると面白いかもしれません。いやぁ、リモコンって本当に良いものですね。
私の環境ですと irexec が自動起動に失敗するようなので下記のように "ExecStartPre=/usr/bin/sleep 1" を入れてやると自動起動するようになりました。
vi /usr/lib/systemd/system/irexec.service
[Unit] Description=LIRC command handler After=network.target [Service] Type=forking # 追加 ExecStartPre=/usr/bin/sleep 1 ExecStart=/usr/bin/irexec --daemon [Install] WantedBy=multi-user.target Wants=lircd.service