DVB PT1 ドライバ用tuneプログラム(rec10用改変版) 2012-01-08版 このプログラムはDVB PT1付属のtuneプログラムを、 rec10にて使いやすいように改変を行った物です。 変更点 チャンネルリストを無効化、周波数およびtsIDの指定で動作するようにしました。 使い方 $ ./tune <周波数> [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 <リモコンキー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 ライセンスで提供します。