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]を追加。(動作確認済み)
takaaki 2月 4th, 2012
簡易設置したBSのアンテナがずれてBSが受信できなくなっていたので再調整した。
DVB版ドライバで信号レベルを測定する方法が見当たらないので、chardev版ドライバをインストールして測定する。測定にはrecpt1付属のchecksignalを使う。
ドライバの取得・展開
$ 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版ドライバを自動的にロードしないようにする
$ 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
追記:コマンドの間違いを修正
takaaki 2月 2nd, 2012
先月、アナログ停波に備え、余ったPT2を譲ってもらって録画環境をデジタル化した。地上波だけでは高い買い物に感じたのでBSにも対応させた。ようやく使えるようになってきたのでまとめる。今回はMythTV以外の部分。
用意した機材
B-CASカードは電話して再発行してもらった。BSが見られるか聞かれただけでメーカー、機種名は問われなかった。
家にアンテナが立っていないのでブースター付きの室内アンテナを新調。ケーブルが付属していないので2本必要になる。BSアンテナは十年以上使われてなかったものをガラクタで補修して簡単に設置した。アンテナケーブルは一番安く手に入るダイソーのものを購入。
信号レベルはWindowsマシンにカードを挿してSignalTalkerで測った。BSアンテナはBluetoothでSignalTalkerの音を飛ばして調整した。recpt1でも信号レベルは測れるらしいので、もしアンテナがずれたら試してみる。DVB版で測れるツールはないんだろうか。
まずドライバを導入する。chardev版ではなくDVB版を使う。DVB版はfuse_b25を使えば、アナログ環境で使っていたMythTVで使える。DVB版ドライバは新しいカーネルには標準で入っているが、squeezeのカーネルには入っていないのでインストールする。
PT2が認識しているか確認
$ lspci | grep Multimedia 04:01.0 Multimedia controller: Xilinx Corporation Device 222a (rev 01)
上のように出たらPT2が認識しているのでドライバをインストールする。ドライバのソースはhttp://www.linuxtv.org/hg/v4l-dvbからダウンロードできる。
そのままではビルドできないので必要なパッケージをインストールしておく。
$ sudo aptitude install build-essential linux-header-2.6-amd64
パッケージをインストールしたらドライバをビルドしてインストールする。
$ cd /usr/local/src/ $ wget http://www.linuxtv.org/hg/v4l-dvb/archive/tip.tar.bz2 $ tar xjf tip.tar.bz2 $ cd v4l-dvb-3724e93f7af5/ $ make $ sudo make install $ sudo reboot
インストール後、ドライバモジュールを読み込ませるために再起動する。
ドライバの確認。
$ lsmod | grep pt1 earth_pt1 15748 105 dvb_core 75106 1 earth_pt1 i2c_core 15819 6 i915,drm_kms_helper,earth_pt1,drm,i2c_algo_bit,i2c_i801 $ dmesg | grep DVB [ 7.555975] DVB: registering new adapter (earth-pt1) [ 7.556224] DVB: registering new adapter (earth-pt1) [ 7.556414] DVB: registering new adapter (earth-pt1) [ 7.556632] DVB: registering new adapter (earth-pt1) [ 7.892565] DVB: registering adapter 0 frontend 0 (VA1J5JF8007/VA1J5JF8011 ISDB-S)... [ 7.892655] DVB: registering adapter 1 frontend 0 (VA1J5JF8007/VA1J5JF8011 ISDB-T)... [ 7.892688] DVB: registering adapter 2 frontend 0 (VA1J5JF8007/VA1J5JF8011 ISDB-S)... [ 7.892714] DVB: registering adapter 3 frontend 0 (VA1J5JF8007/VA1J5JF8011 ISDB-T)... $ ls /dev/dvb/ adapter0 adapter1 adapter2 adapter3
ISDB-SとなっているのがBS/CS用、ISDB-Tとなっているのが地上波用になる。
takaaki 8月 19th, 2011
タグ: DVB, Debian, Linux, MythTV, PT2, TV, Windows, fuse_b25, 録画
Debian 6.0(squeeze)のインストール先にWesternDegital WD20EARSを使った。これを2台使って、ソフトウェアRAIDとLVMを構成する。ただし、このディスクには3つ問題がある。
まず、IntelliParkの8秒はやりすぎなので5分程度に設定する。設定にはwdidle3.exeを使う(WDのサポート外なので注意)。
A:\>C:
C:\>wdidle3.exe /s300
次にAFT対策、論理セクタと物理セクタがずれないようにする。MBRパーティションにsqueezeをインストールする場合は最初のパーティションは2048セクタで開始するので対策は不要。2TBのディスクを使うとGPTになり、なぜかずれる。そのため、先にGPartedでパーティションを切っておく。起動用の小さなパーティションと他のパーティションを未フォーマットで切っていく。
起動用パーティションを作る。AlignをMiBにして先頭に最小単位1MiBの未フォーマットパーティションを作り、右クリックメニューの情報で開始セクタが2048セクタになっているのを確認する。ここにGrubがインストールされる。
同様に他のパーティションも切っていく。RAIDを組むので2台に同じように切る。
3つの問題の問題が解決した所でインストールを始める。パーティションは1MB,256MB,残りの3つに切った。HDD以外にドライブを積んでいないのでUSBメモリからインストールする。ここでもUNetbootinを使う。DebianとStable_NetInstall_x64を選択してUSBメモリに書き込む。書き込んだUSBメモリからブートする。インストーラが起動したら、USBメモリを抜きインストール開始(USBメモリがsdaになるのを防ぐ)。
インストールを進めて、ディスクのパーティショニングで手動を選択。あらかじめ切っておいたパーティションを次のようにする。予約済みBIOSブート領域(biosgrub)を作らないとGRUBのインストールに失敗する。(作らなくても警告が出ず、何度やっても失敗するのではまった。ガイドでパーティショニングすると勝手に作られる)
物理パーティションの構成
/dev/sda1(/dev/sdb1) | 1MB | 予約済みBIOSブート領域(biosgrub) |
/dev/sda2(/dev/sdb2) | 256MB | RAIDの物理ボリューム(/dev/md0) |
/dev/sda3(/dev/sdb3) | 2TB | RAIDの物理ボリューム(/dev/md1) |
次にソフトRAIDを設定する。ソフトウェアRAIDの設定から/dev/sda2と/dev/sdb2、/dev/sda3と/dev/sdb3をそれぞれチェックしてRAID1アレイを作成する。小さい方のアレイにext4を指定して、マウントポイントを/bootに指定。大きい方をLVMの物理ボリュームに指定してボリュームグループを作成する。次に、ボリュームグループから必要なだけ論理ボリュームを作成して、完了を選ぶ。切り出した論理ボリュームにそれぞれ利用方法とマウントポイントを指定する。次のような構成にした。後で足りなくなった容量を拡張できるようにボリュームグループを使い切らずに残してある。
パーティションの構成(RAID)
/dev/sda1 | 1MB | biosgrub |
/dev/md0 | 256MB | ext4 |
/dev/md1 | 2TB | LVMの物理ボリューム |
パーティションの構成(LVM)と利用方法
パーティション | 容量 | 利用方法 | マウントポイント |
/dev/sda1 | 1MB | biosgrub | – |
/dev/md0 | 256MB | ext4 | /boot |
論理ボリューム | 20GB | ext4 | / |
論理ボリューム | 200GB | ext4 | /home |
論理ボリューム | 20GB | ext4 | /usr |
論理ボリューム | 1.5TB | ext4 | /usr/local |
論理ボリューム | 20GB | ext4 | /var |
論理ボリューム | 5GB | ext4 | /tmp |
論理ボリューム | 4GB | スワップ領域 | – |
設定し終えたら変更を書き込む。あとは通常通りインストールを進める。ソフトウェアの選択にSSHサーバーが追加されていた。インストール直後からSSHで操作ができて便利。
インストール後は、2つ目のディスクにも起動情報を書き込む。パーティションとして見えるのでbiosgrubパーティションを1つ目のディスクから2つ目のディスクへコピーするだけで済む。
$ sudo dd if=/dev/sda1 of=/dev/sdb1 bs=512
2048+0 records in
2048+0 records out
1048576 bytes (1.0 MB) copied, 0.0783861 s, 13.4 MB/s
$
参考
メモ帳: Ubuntu9.10 で NAS on RAID1(3/6)
takaaki 2月 16th, 2011
[CPU]Intel Pentium Dual-Core E2180 2.0GHz
[M/B]P5K PRO (中古)
[メモリ]バルク S&Mとかいう悪評チップ 2GB*2
[VGA] RH3650-E512HW
[HDD]ST3500320AS 500GB
[FDD]FA404MX
[DVDドライブ]GH20NS10
[ケース]CM690 (展示品)
[電源]KRPW-K500W
[キャプチャ]GV-MVP/RX(中古)
いろいろ情報を集めた上で、ほとんど価格.comの上位で選んだ。オークションと九十九で揃えた。
CPU:
そんなに性能が必要ないと思って安物にした。コストパフォーマンスはいい。低発熱でOCしても安定。廉価版でもPentiumブランドはさすが。FSBやら固定して、電圧上げたら3GHzまでOCできた。後々VTが無効化されてるのに不自由した。リテールファンでもそんなにうるさくなくて十分冷えた。
マザーボード:
P5K-Eが一番売れてた。それで、ASUSの同系統のP5K PRO。なんとなくこっちにしてみたくなった。でも、糞配線。ケースの中央に大蛇ができてる。
メモリ:
なんとなくオークションで入札したら落ちた。落ちてほしくなかった。調べたら2chにスレが立つほどの糞チップ。エラーとかもなく安定してる。
VGA:
PCゲームはやらないので、動画支援付のRADEON。使いまわしできる部品だから、それなりのものをと。デュアルディスプレイを視野に端子が2基のものを選んだ。統一感と将来性を考えて両方DVI。SAPPHIRE製が良さそうだったので買おうと思ったら売り切れ。ちょうど、玄人志向のVGAのセールがやってた。そこからSAPPHIREのと中身が同じものを。
HDD:
最初からSeagateにしようと思ってた。当時コストパフォーマンスが一番よかった500GB。他がキャッシュ16MBに対して32MBだったので購入。九十九の保証もつけた。1ヶ月で認識しなくなった。初期不良の期間が過ぎてたけど初期不良交換。数日前にその原因がわかった。思いっきりその被害者。
(GALACTIC FUNK | seagateがやばい)
修理から帰ってきたのも同じ型。ファームはSD15、これは危ない。
FDD:
カードリーダ内臓。OSバンドルでない。ないと落ち着かない、それだけ。FDDは使わなくてもカードリーダがついてる。
DVDドライブ:
LG電子が良さそうな気がした。その中で売れ筋のもの。
ケース:
当時、価格.comで1位。下置き電源で探した。AntecのSOLOとかP180はちょっと高くて手が出なかった。どちらかと言うと静音より冷却。似た感じのNineHundredは見た目が気に入らなくて、それ以下のThreeHundredは選べない。青いファンを1つ増設。サイドファンがうるさいので底面吸気ファンにした。
電源:
値段の割りにいい電源ということで。電源なら玄人志向でも問題ないはず。サービスコンセントがないのが普通なのは知らなかった。連動OAタップも購入。
キャプチャ:
ゲームのキャプチャ用に低予算で。番組録画で頻繁に使うようになった。唯一64bit非対応のパーツ。32bitOSから離れられない原因になってしまった。
2つ玄人でメモリはバルクで危ない。CPUの予算が異常に低かった。CPUよりメモリ派。ケースファンには換気扇フィルタ。大学で仕入れた中古の15型ディスプレイ×2、サーバに使ってる中古PCについてたキーボード。壊れたマウスの代わりに買ったマウス。黒いのは本体だけ。
九十九がつぶれかけたと思ったら今度はSeagate。
takaaki 1月 21st, 2009
Posted In: ハードウェア