はじめに

Ingo Diekmann 氏によって運営されている Web サイトには、IR-2-serial、IR-2-usb の IrDA モジュールが紹介されています。
IR-2-serial モジュールは、シリアル接続の IrDA (Infrared Data Association) レシーバーです。
ここでは、IR-2-serial と LIRC (Linux Infrared Remote Control) を使って xmms をリモートコントローラで操作してみます。

ir2serial-s ir2serial-nocase-s
IR-2-serial ケース付き IR-2-serial ケースなし


インストール環境とリモートコントローラ

メインボードは VIA EPIA-ML8000A で OS は Debian テスト版( Sarge )です。
IR-2-serial はシリアル・ポートに接続しますが、シリアル延長ケーブルを用い、IR-2-serial 自体の移動が可能なようにします。
IR-2-serial にはメスのコネクタ(D-Sub 9ピン・コネクタ)がついているため、シリアル延長ケーブルはオス・メスのコネクタがついているものを使いますが、メス・メスのシリアル延長ケーブルであれば、オス・オス変換アダプタをつければ同様に使えます。

リモートコントローラは手持ちの ビクター RM-A603 を使いました。RM-A603 は家電量販店などのテレビ・ビデオ売り場で販売しているテレビ/ビデオ用のリーモートコントローラです。

ソフトウェアのインストール

Linux に関するソフトウェアのインストールについては Ingo Diekmann 氏のサイト
説明があります。
IR-2-serial は IRMAN ハードウェアで libirman が必要です。Debian テスト版( Sarge )では libirman-dev がパッケージとして用意されています。

  • libirman-dev のインストール
      # apt-get install libirman-dev
        
  • libirman-dev のサンプルプログラム test_io.c のテスト

      IR-2-serial をシリアルポートに繋いでおきます。

      # cd /usr/share/doc/libirman-dev/examples
      # make
      # ./test_io /dev/ttyS0 <-- IR-2-serial を繋いだシリアルポートを引数に指定
      IR
      OK
        

      test_io が入力待ちになるので、リモートコントローラの任意のボタンを IR-2-serial に向けて押します。
      リモートコントローラのボタンを押す毎に、以下のような表示が現れれば IR-2-serial は Linux 上で動いています。

      [90][10][00][00][00][00]
      [90][10][00][00][00][00]
      [88][10][00][00][00][00]
      [88][10][00][00][00][00]
      [98][10][00][00][00][00]
      [98][10][00][00][00][00]
      [84][10][00][00][00][00]
      [94][10][00][00][00][00]
      [8c][10][00][00][00][00]
      [9c][10][00][00][00][00]
      [82][10][00][00][00][00]
      [82][10][00][00][00][00]
        

次に LIRC (Linux Infrared Remote Control) をインストールします。
LIRC は Debian のパッケージは使わずにソースコードをコンパイルしインストールすることにします。

LIRC のソースコードは IR-2-serial の Web サイト からダウンロード可能です。

  • LIRC のインストール

      ダウンロードした lirc-0.6.6.tar を伸張し、ディレクトリ lirc-0.6.6 に移動。

      setup.sh を実行します。

      # tar xvf lirc-0.6.6.tar
      # cd lirc-0.6.6
      # ./setup.sh
        
      • メインメニューが表示されるので、1 Driver Configuration を選びます。
        lirc-setup1s
      • IR-2-serial のデバイスタイプを選択します。 4 Other serial port devices です。
        lirc-setup2s
      • IR-2-serial のデバイスドライバを選択します。6 Irman / UIR です。
        lirc-setup3s
      • IR-2-serial を接続しているシリアルポートを選択します。

        lirc-setup4s

      • メインメニューに戻ります。ここで 3 Save configuration &amp run configure を選ぶと、configure が実行されます。
        lirc-setup5s

LIRC の configure 終了後、make ; make install を実行します。

コンパイルが終了したら、/etc/ld.so.conf に /usr/local/lib の1行をエディタで追加し ldconfig を実行しておきます。

lirc-0.6.6/contrib に lircd の Debian 起動スクリプト lirc.debian があります。これを以下のように修正して /etc/init.d に lirc としてコピーします。

#! /bin/sh
#
# This is an init script for Debian 2.1 Slink distribution.
# Copy it to /etc/init.d/lirc and type
# > update-rc.d lirc defaults 20
#

test -f /usr/local/sbin/lircd || exit 0
##test -f /usr/local/sbin/lircmd || exit 0 <-- lircmd は使わないので、以下同様に lircmd 関連の行はコメントアウトする。

case "$1" in
  start)
    echo -n "Starting lirc daemon: lircd"
    start-stop-daemon --start --quiet --exec /usr/local/sbin/lircd -- --device=/dev/lirc
    ##echo -n " lircmd"
    ##start-stop-daemon --start --quiet --exec /usr/local/sbin/lircmd
    echo "."
    ;;
  stop)
    echo -n "Stopping lirc daemon: "
    ##start-stop-daemon --stop --quiet --exec /usr/local/sbin/lircmd
    echo -n " lircd"
    start-stop-daemon --stop --quiet --exec /usr/local/sbin/lircd
    echo "."
    ;;
  reload|force-reload)
    start-stop-daemon --stop --quiet --signal 1 --exec /usr/local/sbin/lircd
    ##start-stop-daemon --stop --quiet --signal 1 --exec /usr/local/sbin/lircmd
    ;;
  restart)
    echo -n "Stopping lirc daemon: "
    ##start-stop-daemon --stop --quiet --exec /usr/local/sbin/lircmd
    echo " lircd"
    start-stop-daemon --stop --quiet --exec /usr/local/sbin/lircd
    sleep 1
    echo -n "Starting lirc daemon: lircd"
    start-stop-daemon --start --quiet --exec /usr/local/sbin/lircd -- --device=/dev/lirc
    ##echo -n " lircmd"
    ##start-stop-daemon --start --quiet --exec /usr/local/sbin/lircmd
    echo "."
    ;;
  *)
    echo "Usage: /etc/init.d/lircd {start|stop|reload|restart|force-reload}"
    exit 1
esac

exit 0

xmms をリモートコントローラで操作するためのプラグイン xmms-lirc をインストールします。

# apt-get install xmms-lirc

プラグイン xmms-lirc をインストール後、/usr/share/doc/xmms-lirc/examples にある lircrc をホームディレクトリにコピーします。
lircrc には xmms の機能に対応するリーモートコントローラのボタン名が書かれています。このボタン名と実際のリーモートコントローラの
ボタンとの対応付けは、次の『LIRCの設定』で行ないます。

# cp /usr/share/doc/xmms-lirc/examples/lircrc ~/.lircrc

LIRCの設定

lirc daemon を起動します。「/etc/lircd.conf が開けない」とメッセージが表示されますが無視してかまいません。

# /etc/init.d/lirc start

Starting lirc daemon: lircdlircd 0.6.6: could not open config file '/etc/lircd.conf'
lircd 0.6.6: No such file or directory

次に、lirc daemon が読み込む lircd.conf を作ります。以下のように irrecord の引数に lircd.conf を付け実行します。

# irrecord lircd.conf

irrecord -  application for recording IR-codes for usage with lirc

Copyright (C) 1998,1999 Christoph Bartelmus(lirc@bartelmus.de)

This program will record the signals from your remote control
and create a config file for lircd.

A proper config file for lircd is maybe the most vital part of this

... (略)

Please send the finished config files to
 so that I
can make them available to others. Don't forget to put all information
that you can get about the remote control in the header of the file.

Press RETURN to continue. <-- エンターを押します。

Hold down an arbitrary button. <-- リモートコントローラの任意のボタンを押したままにします。
............... <-- ドットが現れます。以下のメッセージが表示されるまで押したままにします。
Found gap length: 229944
Now enter the names for the buttons.
Please enter the name for the next button (press  to finish recording)
play <-- .lircrc の button = XXXXX を入力します。

Now hold down button "play". <-- 実際のリモートコントローラの "play" に相当するキーを押します。

 以下これの繰り返しで、.lircrc のボタン名とリモートコントローラのキーを対応させます。
Please enter the name for the next button (press  to finish recording)<-- ボタン名の入力が終わったら、空でエンターを押します。

Checking for toggle bit.
Please press an arbitrary button repeatedly as fast as possible (don't hold
it down!).
..............................<-- リモートコントローラの任意のボタンを連続して押し続けます。
Toggle bit is 21.
Successfully written config file.

 これで、カレントディレクトリに lircd.conf が作られます。

lircd.conf を /etc にコピーし、lircd を再起動すれば xmms で リモートコントローラが使えるはずです。

最後に、update-rc.d lirc defaults 20 を実行しておきます。


参考 URL