4.slinkインストール


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

コントロールS出力端子アダプタが製作できたら、それを制御するドライバを準備します。

なお、ivtvと同様、slinkドライバもカーネルモジュールドライバになるので、
kernel更新の際には再コンパイル+インストールが必要になります。

slinkについて

slinkは 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の実体といっても過言ではないでしょう。


最近はHDMIなどに取って代わられ、民生分野の製品にコントロールS端子は装備されなくなりつつあります。
海外製のSky Parfect TV チューナーには端子があるようなのですが、
SONYのサイトで見る限り、国内版にはついていないようです。
SONY製デジタルチューナーでもコントロールS入力端子を持つのは、DST-TX100,300,500,TX1,VGP-DTU1位で
現行製品は DST-TX1だけみたいです。


ドライバの準備

ドライバはS-Link Device Driver Downloadにあるのですが、
そこにある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


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使って実機のリモコンから収集しましたが、
その方法はメモにして残してありましすので、興味のある方は参考にしてください。

さて、デバイスコードはDST-TX300で0x0B43,DST-TX1で0x0BCEになります。
DST-TX300のリモコンの型番はRM-J326D、DST-TX1はRM-J322Dなので、同じリモコンを使うチューナなら同じデバイスコードになると思います。
これを src/driver/slink.h に書き込みます。

その他、手直しをする必要がありますが、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 --------------

うまくコントロールできたでしょうか?
うまくいかない場合、接続ポートとデバイスコードを見直してください。
接続ポートが合っていてもデバイスコードが違うと機器側で信号を無視します。(赤外線リモコンと同様)


累計: - 今日: - 昨日: -

コメント
  • 携帯動画変換君ってffmpegのフロントエンドじゃないでしたっけ? - Koshian 2007-10-09 15:16:59
  • フロントエンドですが、ATOMヘッダなどを書き換える処理もしているんですよね。 - 管理人 2007-10-10 00:13:51
  • yum --enablerepo=epelはyum list --enablerepo=epelでは? - とりまん 2007-11-12 00:59:21
  • とりまんさん、ご指摘ありがとうございました。 - 管理人 2007-11-15 22:51:24
名前:
ツールボックス

下から選んでください:

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