アンテナを110度CS対応にしたので、試用期間の残っているB-CASカードを使って検証してみた。MythTVにはBS対応パッチを当ててある。

アンテナとケーブル

アンテナを変える前はBSのほとんどのチャンネルが受信できたが、周波数の高いDlifeなどは受信できなかった。しかし、新しいアンテナに交換してもDlifeとCSの受信状態が悪く、CSの信号レベルが低かった。別の部屋のテレビは正常に受信できていたので、古いケーブルを交換してみると改善した。

受信確認

チャンネル登録スクリプトでチャンネルを登録して、視聴してみる。BSはすべてのチャンネルが正常に視聴することができた。しかし、チャンネルがCSに変わると極端に精度が落ちた。ほとんどが受信状態が悪いチャンネルで全く見れないチャンネルも多かった。正常に視聴できるチャンネルは一握り。

見れないチャンネルから特徴を探ってみるが、特定の周波数でもない。チューニング情報にも誤りはない。mythtvには原因がわかるログが見つからなかったが、syslogには大量のエラーが表示されていた。

failed to poll. errno:0.
poll received an error on the fd for pid:0x0701

MythTVに原因がないか切り分けるためにtuneコマンドとcatで録画する。確認したところ、MythTVでの視聴と大差ない。TvtPlayで確認していて、そこでサービスがいくつもあるのに気がついた。BSはTSIDでチャンネルを分けているのに対して、CSはserviceidでチャンネルを分けている(一つのチャンネルにサービスがいくつもある)。

FUSE_b25でCSは見れない?

CS放送は一つの周波数にいくつもサービスが載っていてその数も多い。FUSE_b25はそのすべてをデコードしようとするので、処理し切れない可能性が出てくる。だとすると、FUSE_b25ではCSを見れないことになる。見れないのは自分の環境だけかもしれないが、見れないという情報がいくつかある。

FUSE_b25の仕組みからしてどうにもならない。MythTV+DVBでのCS録画はMythTVにb25デコード機能を付けない限り難しいだろう。無料放送だけを見るので個人的な影響は小さいだろうが。

7月 18th, 2012

Posted In: ソフトウェア

タグ: , , , , , ,

Leave a Comment

MythTVでBSのチューニングをできるようにするパッチを更新したので、使い方もまとめる。

ダウンロード

mythtv-bs.zip

ファイルの内容は次の通り

  • mythtv-bs-lnb.patch BS対応パッチ(LNB電源ON)
  • mythtv-bs-nolnb.patch BS対応パッチ(LNB電源OFF)
  • channel_add.sh チャンネル登録スクリプト
  • example.txt 使用例

以前のものからの変更点

  • 安定化させる対策を行なっても0Byteで録画されない不具合の対応
  • コード整理
  • LNBON/OFFでパッチを分離
  • channel_add.shにuseonairguideとcallsign/nameの設定機能を追加
  • channel_add.shを4桁以上のチャンネル番号に対応させた

不具合について

0Byteの時にログを確認すると次のようなメッセージがあり、全く別のチャンネルのtsidとPATが出力されていた。

Program #211 not found in PAT!

チューニングが失敗しているか間に合っていないようなので、s2scanに習ってチューニング前にウェイトを挿入するようにした。

パッチの当て方

mythtvのソースに次のように当てる

$ cd mythtv-0.24.1
$ patch -p1 < ../mythtv-bs-lnb.patch
patching file libs/libmythtv/dtvmultiplex.h
patching file libs/libmythtv/dtvmultiplex.cpp
patching file libs/libmythtv/dvbchannel.cpp

通常はmythtv-bs-lnb.patchで問題ないがCATVやブースターなどを使っている場合はmythtv-bs-nolnb.patchを当てる。

対応しているMythTVのバージョンは0.24系

チャンネル登録の方法

MythTVのチャンネルスキャンには対応しないのでスクリプトを使ってデータベースに直接入力する。

channel_add.shの最初の変数を環境に合わせて書き換える。

#!/bin/sh
DBUSER="mythtv"
DBPASSWORD="password"
DATABASE="mythconverg"
$ channel_add.sh
Usage:
 channel_add.sh frequency netid tsid pid source chan_num { airguide { chan_name } }

sourceidは衛星側のビデオソースのもの、chan_numは好みのチャンネル番号を指定する。frequencyはs2scanの結果から、それ以外はTVTestに付いてくるPreset_BS.ch2、Preset_CS.ch2をCSVとして開いて見るとわかりやすい。Preset_BS.ch2(Preset_CS.ch2)のネットワークIDがnetid、TSIDがtsid、サービス IDがpidにあたる。netidはBSが4、CS1ネットワークが6、CS2ネットワークが7となる。sourceidは衛星側のビデオソースのもの、chan_numは好みのチャンネル番号を指定する。airguideに1を指定すると番組表のスキャンが有効になる(0で無効)。chan_nameにはチャンネル名が指定できる。

ただし、CSに関しては受信できるか怪しい。

(さらに…)

7月 18th, 2012

Posted In: ソフトウェア

タグ: , , , , , , ,

Leave a Comment

ソースのダウンロード

$ apt-get source mythtv

パッチを当ててみる

$ cd mythtv-0.25/
$ patch -p1 < ../mythtv-isdb.patch
patching file libs/libmythtv/channelscan/channelscan_sm.cpp
Hunk #1 FAILED at 176.
1 out of 2 hunks FAILED -- saving rejects to file libs/libmythtv/channelscan/channelscan_sm.cpp.rej
patching file libs/libmythtv/channelscan/frequencytablesetting.cpp
Hunk #1 succeeded at 73 (offset 1 line).
patching file libs/libmythtv/eithelper.cpp
Hunk #1 succeeded at 217 (offset -5 lines).
Hunk #2 succeeded at 246 (offset -5 lines).
Hunk #3 succeeded at 260 (offset -5 lines).
Hunk #4 succeeded at 272 (offset -5 lines).
Hunk #5 succeeded at 317 (offset -5 lines).
Hunk #6 succeeded at 364 (offset -1 lines).
Hunk #7 succeeded at 452 (offset 4 lines).
Hunk #8 succeeded at 515 (offset 4 lines).
Hunk #9 succeeded at 524 (offset 4 lines).
patching file libs/libmythtv/frequencytables.cpp
Hunk #1 succeeded at 465 (offset 21 lines).
patching file libs/libmythtv/libmythtv.pro
Hunk #1 succeeded at 231 (offset 12 lines).
Hunk #2 succeeded at 247 (offset 14 lines).
patching file libs/libmythtv/mpeg/dvbdescriptors.cpp
Hunk #2 FAILED at 69.
Hunk #3 succeeded at 155 (offset 4 lines).
Hunk #4 FAILED at 161.
Hunk #5 FAILED at 192.
Hunk #6 succeeded at 226 (offset 6 lines).
Hunk #7 succeeded at 283 (offset 45 lines).
Hunk #8 succeeded at 309 (offset 37 lines).
3 out of 8 hunks FAILED -- saving rejects to file libs/libmythtv/mpeg/dvbdescriptors.cpp.rej
patching file libs/libmythtv/mpeg/dvbdescriptors.h
Hunk #1 succeeded at 9 with fuzz 1 (offset -6 lines).
Hunk #2 succeeded at 36 (offset -6 lines).
Hunk #3 FAILED at 99.
Hunk #4 FAILED at 252.
Hunk #5 FAILED at 561.
Hunk #6 FAILED at 594.
Hunk #7 FAILED at 1023.
Hunk #8 succeeded at 1105 (offset 49 lines).
Hunk #9 FAILED at 1448.
Hunk #10 FAILED at 1565.
7 out of 10 hunks FAILED -- saving rejects to file libs/libmythtv/mpeg/dvbdescriptors.h.rej
patching file libs/libmythtv/mpeg/dvbstreamdata.cpp
patching file libs/libmythtv/mpeg/dvbstreamdata.h
Hunk #1 succeeded at 25 (offset 1 line).
Hunk #2 succeeded at 213 (offset 1 line).
patching file libs/libmythtv/mpeg/dvbtables.cpp
patching file libs/libmythtv/mpeg/dvbtables.h
Hunk #1 FAILED at 8.
Hunk #2 FAILED at 93.
Hunk #3 FAILED at 277.
Hunk #4 succeeded at 326 (offset 2 lines).
Hunk #5 FAILED at 365.
Hunk #6 succeeded at 386 (offset 2 lines).
4 out of 6 hunks FAILED -- saving rejects to file libs/libmythtv/mpeg/dvbtables.h.rej
patching file libs/libmythtv/mpeg/isdb_decode_text.c
patching file libs/libmythtv/mpeg/isdb_decode_text.h
patching file libs/libmythtv/mpeg/mpegdescriptors.cpp
Hunk #1 FAILED at 1.
Hunk #2 FAILED at 78.
Hunk #3 FAILED at 422.
Hunk #4 FAILED at 440.
4 out of 4 hunks FAILED -- saving rejects to file libs/libmythtv/mpeg/mpegdescriptors.cpp.rej
patching file libs/libmythtv/mpeg/mpegdescriptors.h
Hunk #1 succeeded at 197 (offset 44 lines).
Hunk #2 FAILED at 180.
1 out of 2 hunks FAILED -- saving rejects to file libs/libmythtv/mpeg/mpegdescriptors.h.rej
patching file libs/libmythtv/mpeg/scanstreamdata.cpp
Hunk #1 FAILED at 4.
1 out of 1 hunk FAILED -- saving rejects to file libs/libmythtv/mpeg/scanstreamdata.cpp.rej
patching file libs/libmythtv/mpeg/scanstreamdata.h
Hunk #1 FAILED at 12.
1 out of 1 hunk FAILED -- saving rejects to file libs/libmythtv/mpeg/scanstreamdata.h.rej
patching file libs/libmythtv/tv_rec.cpp
Hunk #1 succeeded at 1819 (offset -202 lines).
$ patch -p0 <../mythtv-japanese-cat.patch
patching file libs/libmythtv/mpeg/dvbdescriptors.cpp
Hunk #1 succeeded at 317 (offset -108 lines).
$ patch -p0 < ../mythtv-subtitle.patch
patching file libs/libmythtv/eithelper.cpp
Hunk #1 succeeded at 246 (offset -5 lines).
$ patch -p1 < ../mythtv-bs.patch
patching file libs/libmythtv/dtvmultiplex.cpp
Hunk #1 succeeded at 336 (offset 32 lines).
Hunk #2 FAILED at 327.
1 out of 2 hunks FAILED -- saving rejects to file libs/libmythtv/dtvmultiplex.cpp.rej
patching file libs/libmythtv/dtvmultiplex.h
patching file libs/libmythtv/dvbchannel.cpp
Hunk #1 succeeded at 267 (offset 29 lines).
Hunk #2 FAILED at 754.
Hunk #3 FAILED at 882.
2 out of 3 hunks FAILED -- saving rejects to file libs/libmythtv/dvbchannel.cpp.rej
$ patch -p2 < ../mythtv-tuning.patch
patching file libs/libmythtv/dvbstreamhandler.cpp
Hunk #1 FAILED at 282.
1 out of 1 hunk FAILED -- saving rejects to file libs/libmythtv/dvbstreamhandler.cpp.rej

パッチを何も考えずに当ててもほぼ全滅。成功しているのは単体ではあまり意味のない部分のみ。

ISDB対応版の0.25が出るまで様子を見る他ない。

Debian-Multimediaのmythtv-0.24.2は次の方法で入手できる。

$ wget ftp://ftp.debian-multimedia.org/pool/main/m/mythtv/{mythtv_0.24.2-0.0squeeze1.dsc,mythtv_0.24.2.orig.tar.gz,mythtv_0.24.2-0.0squeeze1.diff.gz}
$ dpkg-source -x mythtv_0.24.2-0.0squeeze1.dsc

このソースはいつまでダウンロードできるんだろう。

5月 19th, 2012

Posted In: ソフトウェア

タグ: , , , , , ,

Leave a Comment

PT2+FUSE_b25+MythTVをDebianで使う上で録画失敗から対策したことを対策箇所ごとにまとめる。

録画マシンへの対策

エンコードなどマシンに負荷をかけすぎると録画中、fuse_b25がsyslogに“Driver Baffar Overflowed"というエラーを出して、以降の部分が録画されなくなる。

エンコードの際は、CPUコア(スレッド)の数より少ないスレッド数を指定する。

#2コア2スレッドの場合
$ ffmpeg -threads 1 [オプション]

更にfuse_b25の優先度は高くし、エンコードの優先度を低くしておく。

/etc/rc.local、fuse_b25のマウント部分

#マウント先の数字を元のデバイスよりいくつ大きくするか
OFFSET=10
for ADAPTER in 0 1 2 3
do
	NEW_ADAPTER=`expr $ADAPTER + $OFFSET`
	/usr/local/sbin/b25dir $NEW_ADAPTER
	nice --4 /usr/local/bin/fuse_b25 --target /dev/dvb/adapter$ADAPTER /dev/dvb/adapter$NEW_ADAPTER -o allow_other
done

ffmpegの優先度を下げる

$ nice -15 ffmpeg [オプション]

また、録画ディスクのI/Oに負荷をかけすぎても同様のことが起こるのでTsSplitterを使う場合は必ずWAITオプションを指定する。

$ wine TsSplitter.exe [オプション] -WAIT2,5

バックエンドへの対策

録画の開始時にMythTVのバックエンドが落ちることがある。PIDファイルが残るのでmythbackendのプロセスがなく、PIDファイルが残っていたら再起動させる。念のためfuse_b25の再マウントも行う。

$ sudo vi /usr/local/sbin/mythtv_check.sh

(さらに…)

4月 16th, 2012

Posted In: ソフトウェア

タグ: , , , , , , , ,

Leave a Comment

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

新しいBSチャンネルをスキャンしようとlinux用 DVBアプリ集ver.0.92に入ってるs2scanを使ってみると新しいチャンネルが出てこず、WOWOWのチャンネル名が変わってる程度だった。なぜ出てこないか調べてみると既存のものとTSIDが全く違っている様子。既存のものより0x400、0x600多いTSIDが振られていることが分かった。

追記 21:13
linux用 DVBアプリ集ver.0.96が出て対応したので、下記の操作は不要。

そこで、0x200ずつTSIDを増やしてスキャンするようにソースを変更した。パッチは以下の通り。

--- s2scan.c.orig	2010-05-17 21:01:46.000000000 +0900
+++ s2scan.c	2011-10-01 19:26:01.228455734 +0900
@@ -34,6 +34,7 @@
 
 
 static int TS_IDX = 0;
+static int TS_IDEX = 0;
 static int CH_IDX = 0;
 static int CH_IDX_END = 0;
 static FILE *INFILE;
@@ -116,12 +117,16 @@
 	case BS:
 		if (TS_IDX > 7) {
 			TS_IDX = 0;
-			CH_IDX+=2;
+			TS_IDEX+=2;
+			if (TS_IDEX > 6 ) {
+				TS_IDEX = 0;
+				CH_IDX+=2;
+			}
 		}
 		if (CH_IDX > CH_IDX_END)
 			return -1;
 		freq = 11727480 + (CH_IDX - 1) * 38360 / 2 - 10678000;
-		ts_id = 0x4000 + (CH_IDX << 4) + TS_IDX;
+		ts_id = 0x4000 + (CH_IDX << 4) + TS_IDX + TS_IDEX * 0x100;
 		TS_IDX++;
 		break;
 	case TER:

ダウンロード

ソースをmake

$ make s2scan
cc     s2scan.c arib_b24_str.c   -o s2scan

作り直したs2scanでチャンネルスキャン

$ ./s2scan -p -b -a 0
trying freq:1049480 (tsid:4010)...locked..BS朝日1:DTV_DELIVERY_SYSTEM=9|DTV_FREQUENCY=1049480|DTV_ISDBS_TS_ID=0x4010:151
BS朝日2:DTV_DELIVERY_SYSTEM=9|DTV_FREQUENCY=1049480|DTV_ISDBS_TS_ID=0x4010:152
BS朝日3:DTV_DELIVERY_SYSTEM=9|DTV_FREQUENCY=1049480|DTV_ISDBS_TS_ID=0x4010:153
ok.
trying freq:1049480 (tsid:4011)...locked..BS−TBS:DTV_DELIVERY_SYSTEM=9|DTV_FREQUENCY=1049480|DTV_ISDBS_TS_ID=0x4011:161
BS−TBS:DTV_DELIVERY_SYSTEM=9|DTV_FREQUENCY=1049480|DTV_ISDBS_TS_ID=0x4011:162
BS−TBS:DTV_DELIVERY_SYSTEM=9|DTV_FREQUENCY=1049480|DTV_ISDBS_TS_ID=0x4011:163
ok.
trying freq:1049480 (tsid:4012)... no lock. skipped.
trying freq:1049480 (tsid:4013)... no lock. skipped.
trying freq:1049480 (tsid:4014)... no lock. skipped.
trying freq:1049480 (tsid:4015)... no lock. skipped.
trying freq:1049480 (tsid:4016)... no lock. skipped.
trying freq:1049480 (tsid:4017)... no lock. skipped.
trying freq:1049480 (tsid:4210)... no lock. skipped.
trying freq:1049480 (tsid:4211)... no lock. skipped.
trying freq:1049480 (tsid:4212)... no lock. skipped.
trying freq:1049480 (tsid:4213)... no lock. skipped.
trying freq:1049480 (tsid:4214)... no lock. skipped.
trying freq:1049480 (tsid:4215)... no lock. skipped.
trying freq:1049480 (tsid:4216)... no lock. skipped.
trying freq:1049480 (tsid:4217)... no lock. skipped.
trying freq:1049480 (tsid:4410)... no lock. skipped.
trying freq:1049480 (tsid:4411)... no lock. skipped.
trying freq:1049480 (tsid:4412)... no lock. skipped.
trying freq:1049480 (tsid:4413)... no lock. skipped.
trying freq:1049480 (tsid:4414)... no lock. skipped.
trying freq:1049480 (tsid:4415)... no lock. skipped.
trying freq:1049480 (tsid:4416)... no lock. skipped.
trying freq:1049480 (tsid:4417)... no lock. skipped.
trying freq:1049480 (tsid:4610)... no lock. skipped.
trying freq:1049480 (tsid:4611)... no lock. skipped.
trying freq:1049480 (tsid:4612)... no lock. skipped.
trying freq:1049480 (tsid:4613)... no lock. skipped.
trying freq:1049480 (tsid:4614)... no lock. skipped.
trying freq:1049480 (tsid:4615)... no lock. skipped.
trying freq:1049480 (tsid:4616)... no lock. skipped.
trying freq:1049480 (tsid:4617)... no lock. skipped.
trying freq:1087840 (tsid:4030)...locked..WOWOWプライム:DTV_DELIVERY_SYSTEM=9|DTV_FREQUENCY=1087840|DTV_ISDBS_TS_ID=0x4030:191
ok.

これでスキャンされるTSIDが増え、新しいチャンネルもスキャンされるようになった。

10月 1st, 2011

Posted In: ソフトウェア

タグ: , , ,

Leave a Comment

家ではテレビにデジタルチューナーを導入しないと決まっていたので、PCで一応見れるようにとリモートでのリアルタイム視聴を視野に入れていた。http版recpt1を候補にしたが、MythTVでもfuse_b25で対応でき、MythTV Playerでリアルタイム視聴できるとわかったので、元々使っていたMythTVを引き続き使うことにした。視聴と予約録画が同じシステムにあるので、MythTVにはチューナーを効率的に活用できる利点がある。

MythTV+FUSE_b25とepgfillでパッチを当てずに常用できるが、BSが見られないなど色々と不具合があるのでパッチ当てたものを使う。ただし、依存関係やらが面倒なのでMythTVはDeb-Multimediaのものをベースにする。セットアップはPT1/PT2のDVBとMythTV @Wikiを参考にして行った。

パッチの準備

MythTVを修正するためのパッチを用意する。

2011.9.29 追記
ISDB対応パッチとカテゴリ日本語化パッチを分離。パッチの形式を変更して再作成。
2011.9.30 追記
サブタイトルの切り直しパッチを更新。("最終回"や"<新>"などの文字列に対応)
2011.11.17
サブタイトルの切り直しパッチを更新
2011.12.11
サブタイトルの切り直しパッチを更新
2011.4.21
サブタイトルの切り直しパッチを更新
2012.5.19
0.25が最新版になったことの対策と自動アップデート防止を追記

ISDB対応パッチ

番組表取得や全チャンネルのフルスキャンに対応したMythTVのISDB対応版がある。Debian-Multimediaのパッケージをベースにするため、これをそのまま使わずパッチとして利用する。

本家のソースとISDB版のソースを持ってきてパッチを作る。

$ sudo aptitude install git #gitが入っていない場合
$ w3m http://www.mythtv.org/download/mythtv/0.24.1 #本家
$ tar xjf mythtv-0.24.1.tar.bz2
$ git clone git://github.com/fukumen/mythtv.git mythtv #ISDB版
$ mv mythtv/mythtv/ isdb-mythtv
$ diff -urN mythtv-0.24.1 isdb-mythtv > mythtv-isdb.patch

ISDB対応パッチ

カテゴリ日本語化パッチ

ISDB版で取得される番組表はepgdumpとは違い、カテゴリが英語になっているので、日本語に修正する。英語でも問題ないように思えるが、カテゴリが日本語になっていないと番組表の色分けが正常に行われない。

カテゴリ日本語化パッチ

サブタイトルの切り直しパッチ

EITで取得した番組表のタイトルが番組名での録画予約に適さないのでサブタイトルを切り直すようにするパッチ。先頭の識別子と後半部分を切り出してサブタイトルの先頭につける。このパッチの正規表現では後半部分の切り出しが少し過剰になるかもしれない。

サブタイトル切り直しパッチ

サブタイトル切り直しパッチ(2011.11.17版)

サブタイトル切り直しパッチ(2011.12.11版)

サブタイトル切り直しパッチ(2012.4.21版)

BS対応パッチ

ISDB版でもBSには対応していないので無理やり対応させる。このレスを参考にデータベースにアクセスする際にTransportIDも一緒に取ってくる処理とDisEqCの無効化してBSをチューニングする処理を追加した。TSIDをつけてチューニングする処理を追加するだけでチャンネルスキャンで設定することはできない。そのため、データベースを直接操作する必要がある。チャンネル登録用スクリプトを用意したので記事の下の方を参照。

BS対応パッチ

新BS対応パッチ

チューニングバグ修正パッチ

録画に失敗しても再試行しないバグがある。それに対応するパッチがwikiのトラブルシューティングにあるので持ってくる。これを当ててからfuse_b25に異常がない限り録画に失敗することはなくなった。

チューニングパッチ

FFmpegのAAC音声切り替え対応パッチ

MythTVに内蔵しているffmpegをAACの音声切り替えに対応させるパッチ。これもwikiからもらってくる。視聴にMythTV Playerを使っていて音声切り替えでエラーが出るので効果は不明。

2011.11.16追記

Debian-Multimediaのmythtv(0.24.1+fixes20111029以降)にはこのパッチを当てられない。

ffmpegパッチ

(さらに…)

9月 10th, 2011

Posted In: ソフトウェア

タグ: , , , , , , , , , ,

12 Comments

先月、アナログ停波に備え、余ったPT2を譲ってもらって録画環境をデジタル化した。地上波だけでは高い買い物に感じたのでBSにも対応させた。ようやく使えるようになってきたのでまとめる。今回はMythTV以外の部分。

用意した機材

  • アースソフト PT2 Rev.A
  • NTT-ME SCR3310-NTTCom
  • B-CASカード
  • YAGI UwPA-UP
  • 富士通のBSアンテナ(十数年前のもの)
  • HORIC アンテナ2分配器 HAT-2SP911NB
  • YAGI 2分配器 CSPDL2(以前買って余ってた)
  • ダイソーのアンテナケーブル1m 315円*5

B-CASカードは電話して再発行してもらった。BSが見られるか聞かれただけでメーカー、機種名は問われなかった。

家にアンテナが立っていないのでブースター付きの室内アンテナを新調。ケーブルが付属していないので2本必要になる。BSアンテナは十年以上使われてなかったものをガラクタで補修して簡単に設置した。アンテナケーブルは一番安く手に入るダイソーのものを購入。

信号レベルはWindowsマシンにカードを挿してSignalTalkerで測った。BSアンテナはBluetoothでSignalTalkerの音を飛ばして調整した。recpt1でも信号レベルは測れるらしいので、もしアンテナがずれたら試してみる。DVB版で測れるツールはないんだろうか。

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となっているのが地上波用になる。

(さらに…)

8月 19th, 2011

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

タグ: , , , , , , , ,

Leave a Comment

« 前ページへ