コントロールS出力端子アダプタが製作できたら、それを制御するドライバを準備します。 *slinkについて slinkは [[http://www.undeadscientist.com/slink/index.html>http://www.undeadscientist.com/slink/index.html]]で公開されています。 最初 Controle-A1/A2, S-Link 端子持った機器をコントロールするためのドライバで 主にSONY製CDチェンジャーをコントロールするために作られたようです。 後年 ハードとともにコントロールS端子対応へ拡張されたようです。 *コントロールSについて コントロールSはSONY独自規格のAV機器間のリンクプロトコルです。 他にもSONYにはコントロールA1,コントロールA2(またの名をS-Link)やLANCなどと言った規格を持っています。 slinkは名前の元になった コントロールA1/A2(S-Link)に対応しているのですが、何が違うかと言えば、 コントロールA1/A2は双方向通信でバス接続が可能であるのに対して、コントロールSは出力側から入力側へのー方向、Point-To-Pointの通信です。 コントロールSのプロトコルフォーマットはSONY製赤外線リモコン(SIRCS)と同じになっています。 「赤外線リモコンをそのままワイヤー接続にしたもの」がコントロールSの実体といっても過言ではないでしょう。 参考⇒[[http://www.boehmel.de/protocl.htm>http://www.boehmel.de/protocl.htm]] 最近はHDMIなどに取って代わられ、民生分野の製品にコントロールS端子は装備されなくなりつつあります。 海外製のSky Parfect TV チューナーには端子があるようなのですが、 [[SONYのサイト>http://www.ecat.sony.co.jp/visual/tuner/index.cfm?B2=42]]で見る限り、国内版にはついていないようです。 SONY製デジタルチューナーでもコントロールS入力端子を持つのは、DST-TX100,300,500,TX1,VGP-DTU1位で 現行製品は DST-TX1だけみたいです。 ---- *ドライバの準備 ドライバは[[S-Link Device Driver Download>http://www.undeadscientist.com/slink/driverdownload.html]]にあるのですが、 そこにあるslink-3.1.4.tar.gz は CentOS 5のkernel2.6.18ではコンパイルに失敗してしまいます。 作者のBrian Behlendorf さんにメールしたら 最新版 slink-3.1.7.tar.gz を送ってくれましたので、このサイトに転載しておきます。 ダウンロード⇒[[slink-3.1.7.tar.gz>http://www42.atwiki.jp/foltia/pub/source/slink-3.1.7.tar.gz]] constユーザでダウンロードしておきます。 [const@foltia ~]$ cd rpmbuild/SOURCES/ [const@foltia SOURCES]$ wget http://www42.atwiki.jp/foltia/pub/source/slink-3.1.7.tar.gz ---- *ソースへのpatch コントロールSは赤外線リモコンとプロトコルフォーマットが同一なので、 13bitまたは8bit、5bitのデバイスコードが必要です。 slinkを使ってデジタルチューナをコントロールするためには、デバイスコードを調べてソースに書き込む必要があります。 デバイスコードの調査にはLIRC付属のmode2使って実機のリモコンから収集しましたが、 その方法はメモにして残してありましすので、興味のある方は[[参考>http://www42.atwiki.jp/foltia/pub/data/slink/howtoget_devicecode_for_slink.txt]]にしてください。 さて、デバイスコードはDST-TX300で0x0B43,DST-TX1で0x0BCEになります。 DST-TX300のリモコンの型番はRM-J326D、DST-TX1はRM-J322Dなので、同じリモコンを使うチューナなら同じデバイスコードになると思います。 これを src/driver/slink.h に書き込みます。 その他、手直しをする必要がありますが、patchは[[こちら>http://www42.atwiki.jp/foltia/pub/source/slink.patch]]になります。 slinkのソースコードと同じディレクトリにdownloadしておきます。 [const@foltia ~]$ cd rpmbuild/SOURCES/ [const@foltia SOURCES]$ wget http://www42.atwiki.jp/foltia/pub/source/slink.patch BUILDディレクトリに移動した上でソースを展開。patchを適用します。 [const@foltia SOURCES]$ cd ~/rpmbuild/BUILD/ [const@foltia BUILD]$ tar zxf ../SOURCES/slink-3.1.7.tar.gz [const@foltia BUILD]$ patch -p0 <../SOURCES/slink.patch patching file ./slink-3.1.7/src/driver/slink.h patching file ./slink-3.1.7/scripts/slink patching file ./slink-3.1.7/src/utils/slink_cmd.c [const@foltia BUILD]$ ---- *make 本来であればソースに含まれるSPECファイルを使ってrpmを作成すべきところですが、 CentOS5ではうまくbuildできないので、通常のmakeで対応します。 READMEに従って、以下のコマンドでmakeします。 BUILD/slink-3.1.7にcdしてautogen.shスクリプトを実行します。 [const@foltia BUILD]$ cd ./slink-3.1.7 [const@foltia slink-3.1.7]$ ./autogen.sh configure.in: installing `./install-sh' configure.in: installing `./missing' configure.in:2: installing `./config.guess' configure.in:2: installing `./config.sub' [const@foltia slink-3.1.7]$ 次にconfigureスクリプトを実行しますが、--with-linux= 引数で linux srcディレクトリを指定します。 kernel-headers-2.6.18-8.1.14.el5 をインストールしている場合は以下のようにします。 [const@foltia slink-3.1.7]$ ./configure --with-linux=/usr/src/kernels/2.6.18-8.1.14.el5-i686/ checking build system type... i686-pc-linux-gnu checking host system type... i686-pc-linux-gnu (中略) config.status: creating Makefile config.status: creating src/Makefile config.status: creating src/utils/Makefile config.status: creating scripts/Makefile config.status: creating man/Makefile config.status: creating html/Makefile config.status: creating src/driver/config.h config.status: executing depfiles commands [const@foltia slink-3.1.7]$ うまくいけば、エラーなく終了します。 configureが通ったら、makeします。 [const@foltia slink-3.1.7]$ make make[2]: ディレクトリ `/home/const/rpmbuild/BUILD/slink-3.1.7/src/utils' から出ます make[2]: ディレクトリ `/home/const/rpmbuild/BUILD/slink-3.1.7/src' に入ります make[2]: `all-am' に対して行うべき事はありません. make[2]: ディレクトリ `/home/const/rpmbuild/BUILD/slink-3.1.7/src' から出ます make[1]: ディレクトリ `/home/const/rpmbuild/BUILD/slink-3.1.7/src' から出ます Making all in scripts make[1]: ディレクトリ `/home/const/rpmbuild/BUILD/slink-3.1.7/scripts' に入ります make[1]: `all' に対して行うべき事はありません. make[1]: ディレクトリ `/home/const/rpmbuild/BUILD/slink-3.1.7/scripts' から出ます Making all in man make[1]: ディレクトリ `/home/const/rpmbuild/BUILD/slink-3.1.7/man' に入ります make[1]: `all' に対して行うべき事はありません. make[1]: ディレクトリ `/home/const/rpmbuild/BUILD/slink-3.1.7/man' から出ます Making all in html make[1]: ディレクトリ `/home/const/rpmbuild/BUILD/slink-3.1.7/html' に入ります make[1]: `all' に対して行うべき事はありません. make[1]: ディレクトリ `/home/const/rpmbuild/BUILD/slink-3.1.7/html' から出ます make[1]: ディレクトリ `/home/const/rpmbuild/BUILD/slink-3.1.7' に入ります make[1]: `all-am' に対して行うべき事はありません. make[1]: ディレクトリ `/home/const/rpmbuild/BUILD/slink-3.1.7' から出ます [const@foltia slink-3.1.7]$ 上記のようなメッセージが表示されれば正常にmakeできています。 ---- *インストール makeが正常に終了したら、以下のようにしてインストールします。 [root@foltia slink-3.1.7]# make install (中略) make[1]: ディレクトリ `/home/const/rpmbuild/BUILD/slink-3.1.7/html' に入ります make[2]: ディレクトリ `/home/const/rpmbuild/BUILD/slink-3.1.7/html' に入ります make[2]: `install-exec-am' に対して行うべき事はありません. make[2]: `install-data-am' に対して行うべき事はありません. make[2]: ディレクトリ `/home/const/rpmbuild/BUILD/slink-3.1.7/html' から出ます make[1]: ディレクトリ `/home/const/rpmbuild/BUILD/slink-3.1.7/html' から出ます make[1]: ディレクトリ `/home/const/rpmbuild/BUILD/slink-3.1.7' に入ります make[2]: ディレクトリ `/home/const/rpmbuild/BUILD/slink-3.1.7' に入ります make[2]: `install-exec-am' に対して行うべき事はありません. make[2]: `install-data-am' に対して行うべき事はありません. make[2]: ディレクトリ `/home/const/rpmbuild/BUILD/slink-3.1.7' から出ます make[1]: ディレクトリ `/home/const/rpmbuild/BUILD/slink-3.1.7' から出ます [root@foltia slink-3.1.7]# *動作確認