4.slinkインストール

「4.slinkインストール」の編集履歴(バックアップ)一覧はこちら

4.slinkインストール - (2007/10/21 (日) 13:06:36) の最新版との変更点

追加された行は緑色になります。

削除された行は赤色になります。

コントロールS出力端子アダプタが製作できたら、それを制御するドライバを準備します。 *ドライバの準備 ドライバは[[S-Link Parallel Device for Linux>http://www.undeadscientist.com/slink/index.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/_pub/foltia/source/slink-3.1.7.tar.gz]] constユーザでダウンロードしておきます。 [const@foltia SOURCES]$ cd [const@foltia ~]$ cd rpmbuild/SOURCES/ [const@foltia SOURCES]$ wget http://www42.atwiki.jp/_pub/foltia/source/slink-3.1.7.tar.gz
コントロールS出力端子アダプタが製作できたら、それを制御するドライバを準備します。 なお、ivtvと同様、slinkドライバもカーネルモジュールドライバになるので、 kernel更新の際には再コンパイル+インストールが必要になります。 *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します。 繰り返しになりますが、slinkドライバはカーネルモジュールドライバになるので、 kernel更新の際には再コンパイル+インストールが必要になります。 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]# 一応、depmpd -a でモジュールを認識させます。 |[root@foltia ~]# depmpd -a| ---- *動作確認 **接続 コントロールS出力端子アダプタをPCのパラレルポートに取り付け、ピンプラグをデジタルチューナーのコントロールS入力端子につなぎます。 今回は1番(D-Sub25ピンの9番側)にDST-TX300を、2番(D-Sub25ピンの8番側)にDST-TX1をつなげます。 前にも書きましたが保護回路を入れてないので、通電中に抜き差しするのはできるだけ控えたほうがいいでしょう。 **ドライバの起動 rootで以下のスクリプトを実行します。 [root@foltia ~]# /etc/init.d/slink start Starting slink: [ OK ] 正常に起動したら、OKのメッセージが表示されます。 一応、lsmod で確認しておきます。 カーネルのメッセージをdmesgで確認します。 [root@foltia ~]# dmesg | tail S-Link: v3.1.7 S-Link: Parport 0 at 0x378 irq 7; adaptor found [root@foltia ~]# adaptor foundとなっていればOKです。 もしもadaptor not found が表示された場合、ハードウェアの配線が間違っている可能性があるので、 PCの電源を切った上で取り外し、テスターを使って回路を再確認してみてください。 (製作編で述べたように、コネクタカバーのメッキでショートして、ハードウェアが認識されなかったことがありました。。。) **slink_cmd コマンドの実行 コントロールには/sbin/slink_cmd コマンドを使います。 書式は slink_cmd <デバイスコード> <ポート番号> <コントロールコマンド> <ウェイト秒数>になります。 <デバイスコード>は 先にドライバにpatchしたように、0xF1でDST-TX300、0xF2でDST-TX1になります。 <ポート番号>は1番が0xE7、2番が0xE6(3番以降7番まで0xE5...0xE1になります)です。 <コントロールコマンド>は0x00~0x7Fまでの値です。0x54で電源ON/OFF(トグル)になります。 <ウェイト秒数>はコマンド実行してからの待ち時間です。 まず、1番ポートに繋いだDST-TX300の電源をOFF/ONしてみます。 デジタルチューナの起動は10秒ほどかかるはずですので、ウェイト後、コマンド入力に戻るくらいまでで画面表示があるはずです。 [root@foltia ~]# slink_cmd 0xF1 0xE6 0x54 10 --------------- Sending --------------- [3] - 0xF1 0xE6 0x54   -------------- Listening -------------- [root@foltia ~]# Listeningが表示されないのは、コントロールSが一方向通信でレスポンスがないためですので、問題ありません。 また、dmesgに以下のようなメッセージが表示されますが、ひとまず無視してしまって問題ありません。 S-Link: Packet Write Error; Send Time 236934, Expected Time 138000 次に2番ポートに繋いだDST-TX1の電源OFF/ONしてみます。 [root@foltia ~]# slink_cmd 0xF2 0xE6 0x54 10 --------------- Sending --------------- [3] - 0xF2 0xE6 0x54   -------------- Listening -------------- うまくコントロールできたでしょうか? うまくいかない場合、接続ポートとデバイスコードを見直してください。 接続ポートが合っていてもデバイスコードが違うと機器側で信号を無視します。(赤外線リモコンと同様) ---- 累計:&counter(total) 今日:&counter(today) 昨日:&counter(yesterday) ---- コメント #pcomment(,コメント)

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。