「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(,コメント)