DVB PT1 ドライバ用tuneプログラム(rec10用改変版)

2012-01-08版

このプログラムはDVB PT1付属のtuneプログラムを、
rec10にて使いやすいように改変を行った物です。

変更点
チャンネルリストを無効化、周波数およびtsIDの指定で動作するようにしました。

使い方
$ ./tune <DVBアダプタ番号> <周波数> [tsid(省略可)]

ライセンス
>7. 使用上の注意
>
>このソフトウェアは、 sourceforge.jp で開発されている独自仕様のドライバ
>を改竄し v4l-dvb の仕様に合わせようとしているものです。これは単に AS
>IS で提供しているもので、開発途上であり、完全に無保証です。テストプログ
>ラムは MIT ライセンスで提供します。

gn64_jp(gn64@rec10.org)

DVB PT1 ドライバ

2009-03-07 版

1. このドキュメントについて

このドキュメントは DVB ベース の PT1 ドライバのチェックアウト、コンパイ
ル、インストールおよびテスト方法を説明するものです。


2. ドライバのチェックアウト

DVB ベースの PT1 ドライバのソースコードは現在 mercurial で管理されてい
ます。開発マシンに mercurial をインストールした上で、次のコマンドでチェッ
クアウトしてください。

	$ hg clone http://bitbucket.org/hiranotaka/dvb-pt1/

一度チェックアウトを行うと二度めからは dvb-pt1 ディレクトリにて次のコマ
ンドを実行することで更新することができます。ただし次の更新は 3 月下旬以
降の予定です。

    	       $ hg pull && hg update

詳しくは mercurial のマニュアルや bitbucket.org のマニュアルを参照して
ください。


3. ドライバのコンパイル

ターゲットとなるカーネルと同じバージョンのカーネルヘッダまたはソースが
必要です。 linux-headers-$(uname -r) パッケージなどで入手してください。
準備ができたら、v4l ディレクトリ下に .config という名前のファイルを作成
し、

	CONFIG_DVB_CORE=m
	CONFIG_DVB_PT1=m

のように記述します。後は、 /lib/modules/$(uname -r)/source または
/lib/modules/$(uname -r)/build にカーネルヘッダまたはソースが展開されて
いる場合、同じ v4l ディレクトリにて、

$ make

するだけで OK です。うまくいけば dvb-core.ko と pt1_drv.ko という二つの
モジュールができるはずです。

なお、カーネルヘッダやソースが違うディレクトリに展開されている場合は、
SRCDIR オプションが必要です。


4. ドライバのロード

コンパイルでできた 2 つのモジュールを順にロードします。

	$ sudo insmod dvb-core.ko
	$ sudo insmod pt1_drv.ko

無事ロードされると次のようになるはずです。

	$ dmesg
	...
	DVB: registering new adapter (pt1-pci)
	DVB: registering adapter 0 frontend 0 (VA1J5JF8007 ISDB-S)...
	DVB: registering new adapter (pt1-pci)
	DVB: registering adapter 1 frontend 0 (VA1J5JF8007 ISDB-T)...
	DVB: registering new adapter (pt1-pci)
	DVB: registering adapter 2 frontend 0 (VA1J5JF8007 ISDB-S)...
	DVB: registering new adapter (pt1-pci)
	DVB: registering adapter 3 frontend 0 (VA1J5JF8007 ISDB-T)...
	pt1_thread run

現在、一部のマシンで DMA 領域の確保に失敗する事象が確認されています。こ
の場合、デバッグ用のスタックトレースなどとともに、次のように表示されま
す。

	$ dmesg
	...
	PT1:DMA ALLOC ERROR
	pt1-pci: probe of 0000:01:0a.0 failed with error -5

これは特に 32 ビットマシンにおいて貴重な LOWMEM 領域(DMA 可能な領域で、
最大でも 756 MB)にその 1/6 にあたる 128 MB もの巨大な領域を確保している
ためと考えられます。うまい対処方法があれば教えて下さい。


5. テストプログラムのビルド

簡単なテストプログラムを用意しました。先ほどチェックアウトした dvb-pt1
と同じ階層にこの README.ja を含むディレクトリを移動します。別の言い方を
すると、このディレクトリから見てドライバが ../dvb-pt1 の位置に来るよう
にします。その状態で

	$ make

してください。


6. テストプログラムの実行

チャンネルを設定するには、

	$ ./tune <DVBアダプタ番号> <リモコンキーID>

とします。設定がうまくいけば

	Successfully tuned to NHK東京 総合 .

などと表示されます。

	Failed to tune to NHK BS-1 (status 03).

などと表示された場合は、ステータスによって次の原因が考えられます。

	00: PLL に問題がある
	01: 指定された周波数に信号がない
	03: 他の TS-ID の信号はあるが、指定された TS-ID のものはない

DVB アダプタ番号は、他にアダプタが無い場合、チューナ 0 の ISDB-S が 0
、チューナ 0 の ISDB-T が 1 、チューナ 1 の ISDB-S が 2 、チューナ 1 の
ISDB-T が 3 になります。 アダプタが ISDB-T か ISDB-S かは自動判定され、
ISDB-T であればリモコンキー ID は地上波のものと、 ISDB-S であれば衛星の
ものと解釈されます。

リモコンキー ID と周波数の対応表は、東京都のものになっています。東京都
以外では、 tune.c の上部にある対応表の書き換えが必要になります。

テストプログラムを実行したままの状態で、

	$ cat /dev/dvb/adapter1/dvr > dump.ts

などとすれば録画できます(例はアダプタ番号 1 の場合)。また同様に

	$ b25 -v 0 /dev/dvb/adapter1/dvr /dev/stdout | \
		mplayer -cache 8192 -

とすればリアルタイムで視聴できると思います。ただしリアルタイム視聴には
それなりの CPU 性能が求められます。


7. 使用上の注意

このソフトウェアは、 sourceforge.jp で開発されている独自仕様のドライバ
を改竄し v4l-dvb の仕様に合わせようとしているものです。これは単に AS
IS で提供しているもので、開発途上であり、完全に無保証です。テストプログ
ラムは MIT ライセンスで提供します。
