DKMSはカーネルモジュールのソースパッケージを管理するシステム。これを使うとモジュールのビルド、インストールを自動化できる。これをPT2のDVB版ドライバに適用する。

DKMSのインストール

$ sudo aptitude install dkms

ソースのダウンロード・展開

$ wget http://www.linuxtv.org/hg/v4l-dvb/archive/tip.tar.gz
$ tar xvzf tip.tar.gz

ソースのディレクトリは"<パッケージ名>-<バージョン>"という名前にし、/usr/src/以下に配置する。展開された状態で"v4l-dvb-3724e93f7af5"となっているのでそのままコピーした。

/usr/src/以下にソースをコピー

$ sudo cp -r v4l-dvb-3724e93f7af5/ /usr/src/

DKMSにソースパッケージを追加するにはソースディレクトリ内に"dkms.conf"という設定ファイルを作成する必要がある。

dkms.confの作成

$ sudo vi /usr/src/v4l-dvb-3724e93f7af5/dkms.conf
#パッケージの名前
PACKAGE_NAME="v4l-dvb"
#パッケージのバージョン
PACKAGE_VERSION="3724e93f7af5"
#中間ファイルの削除コマンド
CLEAN="make clean"
#ビルドするコマンド
MAKE="make KVER=${kernelver}"
#モジュールが作成される場所(ソースディレクトリからの相対パス)
BUILT_MODULE_LOCATION[0]="v4l"
BUILT_MODULE_LOCATION[1]="v4l"
#作成されるモジュールの名前(拡張子.koは付けない)
BUILT_MODULE_NAME=[0]"dvb_core"
BUILT_MODULE_NAME=[1]"earth-pt1"
#元々のインストール先(/lib/modules/`uname -r`をルートとしたパス)
DEST_MODULE_LOCATION[0]="/kernel/drivers/media/dvb/dvb-core/"
DEST_MODULE_LOCATION[1]="/kernel/drivers/media/dvb/pt1/"
#自動更新の有効化
AUTOINSTALL="YES"

必要なモジュールはearth-pt1のみなのでearth-pt1とdvb-coreのみなので上記のようにした。他のモジュールも入れる場合BUILT_MODULE_LOCATION[2],BUILT_MODULE_NAME[2],DEST_MODULE_LOCATION[2]というようにインデックスを増やして指定する。同じインデックスで組になる。

AUTOINSTALL="YES"としておくとカーネルのアップデート時に自動的にインストールされる。(設定の有無だけを見ているので"NO"としても有効になる)

DEST_MODULE_LOCATIONは元々のモジュールを見つけるためだけに使われ、モジュールはupdates/dkms/以下にインストールされる。Ubuntu10.10以降など新しいディストリビューションでは使われるらしい。

ソースパッケージの追加

$ sudo dkms add -m v4l-dvb -v 3724e93f7af5

モジュールのビルド

$ sudo dkms build -m v4l-dvb -v 3724e93f7af5

モジュールのインストール

$ sudo dkms install -m v4l-dvb -v 3724e93f7af5

インストールされたモジュールの確認

$ sudo modprobe -l |grep earth-pt1.ko
updates/dkms/earth-pt1.ko

モジュールのアンインストール

$ sudo dkms uninstall -m v4l-dvb -v 3724e93f7af5

ソースパッケージの登録削除

$ sudo dkms remove -m v4l-dvb -v 3724e93f7af5 --all

自動インストールの動作を確認するには次のコマンドを使う。

$ sudo /usr/lib/dkms/dkms_autoinstaller start

追記:アンインストールの記述間違いを修正

2012/03/30追記: earth-pt1のモジュールが動作しなかったのでdvb-coreもdkms.confに追加。

2012/05/11追記: 上手く動かなかったのでdkms.confにBUILT_MODULE_LOCATION[1]を追加。(動作確認済み)

2月 4th, 2012

Posted In: ソフトウェア, ハードウェア

タグ: , , , , ,

Leave a Comment

簡易設置したBSのアンテナがずれてBSが受信できなくなっていたので再調整した。

DVB版ドライバで信号レベルを測定する方法が見当たらないので、chardev版ドライバをインストールして測定する。測定にはrecpt1付属のchecksignalを使う。

chardev版ドライバのインストール

ドライバの取得・展開

$ wget http://hg.honeyplanet.jp/pt1/archive/tip.tar.bz2
$ tar xvjf tip.tar.bz2

ドライバのインストール

$ cd pt1-3914cc1b2375/
$ cd driver/
$ make
$ sudo make install

ツールのビルド

recpt1をビルド

$ cd ../recpt1/
$ ./autogen.sh
$ ./configure
$ make

ドライバ付属のもので問題ない。常用しないのでインストールはしない。

ドライバの入れ替え

MythTVの停止

$ sudo /etc/init.d/mythtv-backend stop

fuse_b25のマウント解除

$ sudo umount /dev/dvb/adapter{10,11,12,13}

DVB版のドライバ無効化して、chardev版ドライバを有効化

$ sudo modprobe -r earth_pt1
$ sudo modprobe pt1_drv

信号レベルの確認

DVB版と違って0,1がBS/CS、2,3が地上波になっている。地上波は物理チャンネルを指定、BSは通常のチャンネル。BSは同じ方角なので、チャンネルが古くても問題ない。

使い方

$ ./checksignal --help

Usage:
./checksignal [--device devicefile] [--lnb voltage] [--bell] channel


Options:
--device devicefile: Specify devicefile to use
--lnb voltage:       Specify LNB voltage (0, 11, 15)
--bell:              Notify signal quality by bell
--help:              Show this help
--version:           Show version
--list:              Show channel list

Available Channels:
13-62: Terrestrial Channels
101ch: NHK BS1
102ch: NHK BS2
103ch: NHK BShi
141ch: BS Nittele
151ch: BS Asahi
161ch: BS-TBS
171ch: BS Japan
181ch: BS Fuji
191ch: WOWOW
192ch: WOWOW2
193ch: WOWOW3
200ch: Star Channel
211ch: BS11 Digital
222ch: TwellV
C13-C63: CATV Channels
CS2-CS24: CS Channels

地上波

$ ./checksignal --device /dev/pt1video2 

BS

$ ./checksignal --device /dev/pt1video0 --lnb 15 101

ドライバを元に戻す

モジュールの入れ替え

$ sudo modprobe -r pt1_drv 
$ sudo modprobe earth_pt1

chardev版ドライバの無効化

トラブル防止のためにchardev版ドライバを自動的にロードしないようにする

$ sudo sh -c 'echo "blacklist pt1_drv" >> /etc/modprobe.d/blacklist.conf'

もしくは、ドライバをアンインストールしてしまう

$ sudo rm /lib/modules/`uname -r`/kernel/drivers/video/pt1_drv.ko
$ sudo rm /etc/udev/rules.d/99-pt1.rules

後処理

fuse_b25の再マウント

$ sudo fuse_b25 --target /dev/dvb/adapter0 /dev/dvb/adapter10 -o allow_other
$ sudo fuse_b25 --target /dev/dvb/adapter1 /dev/dvb/adapter11 -o allow_other
$ sudo fuse_b25 --target /dev/dvb/adapter2 /dev/dvb/adapter12 -o allow_other
$ sudo fuse_b25 --target /dev/dvb/adapter3 /dev/dvb/adapter13 -o allow_other

MythTVの起動

$ sudo /etc/init.d/mythtv-backend start

追記:コマンドの間違いを修正

2月 2nd, 2012

Posted In: ソフトウェア, ハードウェア

タグ: , , , , , ,

3 Comments