努力したWiki

推敲の足りないメモ書き多数

ユーザ用ツール

サイト用ツール


documents:freebsd:freebsd-019

FreeBSDでPT2/PT3を使う

2017年05月21日
Mirakurun使えるのでMirakurunからrecpt1操作しませう。FreeBSDでMirakurunを動かす

2017年05月14日
libarib25のビルドができないよー、と連絡があって、Githubのリポジトリ見たらrecpt1共々色々と変わっていたので、改めて対応と説明をやってみる。

2014年05月21日
recpt1ctlコマンドでチャンネル切り替えができないよ?というのでとりあえず適当に修正。妥当な修正かどうかは聞かないでほしい。とりあえず動いているけど心配なら充分な事前テストを行ってください。

2014年05月19日
先日連絡があって、FreeBSDでrecpt1コマンド使いたいんだがどこかにないか、と。久しぶりなので、手元にあるPT2を再セットアップしてrecpt1コマンドを動かすまでやってみた。

今回の環境は、FreeBSD 11.0-RELEASEで、PT2を利用できるPCIスロットがあるマザーを使用。PT3は刺せるPCIeスロットがないので試せていない。

参照情報

ドライバと基本ツール群のセットアップ

PT1/PT2 であればPortsのドライバを導入、PT3であれば、githubで公開されているものを導入してみる。

PT1/PT2/PT3ドライバ

事前に /usr/src へ現在稼動させているOSのソースを展開しておくこと。

PT1/PT2のドライバについてはPortsで公開されている。以下を実行する。

cd /usr/ports/multimedia/ptx-kmod
make install

PT3のドライバについてはGithubで公開されているものを利用する。以下を実行する。

mkdir pt3
cd pt3
git clone https://github.com/Piro77/fbsdpt3.git
cd fbsdpt3
make
make install

インストールできると、/boot/modules/ptx.ko が配置される。

/boot/loader.conf に ptx_load=“YES” を追記してリブートする。

もしPortsからドライバをインストールしていれば、/etc/rc.conf に ptx_enable=“YES” を追記して以下を実行でもいい。

service ptx start

ストリームのスクランブル解除 b25

PT1/PT2ドライバを導入すると、Perlで記述されたコマンド /usr/local/bin/recptx.pl が導入されるが、 この中からスクランブル解除を実行する b25 コマンドが呼び出しされるので、導入しておく。以下を実行。

cd /usr/ports/multimedia/ab25
make install

スマートカードリーダドライバ ccid

USB接続スマートカードリーダのドライバを導入する。

recpt1コマンドやb25コマンドはスマートカードリーダに差し込まれたB-CASカードにアクセスできる必要がある。 また、後述する pcsc-lite の導入時にインストールするよう求められるので、先に導入しておく。 以下を実行。

cd /usr/ports/devel/libccid
make install

スマートカード操作ライブラリ pcsc-lite

スマートカードのAPIを操作するためのライブラリを導入する。ライブラリと言いつつデーモンとしてメモリに常駐する。以下を実行。

cd /usr/ports/devel/pcsc-lite
make install

使っているカードリーダーによっては以下のインストールがいるかもしれないよ?とメッセージが出る。

  • devel/libccid
  • security/ifd-slb_rf60

既に devel/libccid を導入してあるのでパス。

また、USBカードリーダを使っているなら /etc/devd.conf への修正を入れてね、とメッセージが出るので、言われた通り以下を追加しておく。

attach 100 {
        device-name "ugen[0-9]+";
        action "/usr/local/sbin/pcscd -H";
};

detach 100 {
        device-name "ugen[0-9]+";
        action "/usr/local/sbin/pcscd -H";
};

/etc/rc.conf に pcscd_enable=“YES” を追記して以下を実行。

service pcscd start

recptx.plの修正

PortsでPT1/PT2のドライバを導入すると同時に導入される recptx.pl は同時2チャンネルを操作可能。

※PT2/PT3は地上波放送、衛星放送、それぞれ2チャンネル分のチューナー部を持っている。つまり、地上波なら同時に2チャンネルを受信可能ということ。

しかしこちらの環境下では2回目の実行でエラーになる。

$ recptx.pl
no channel
usage: /usr/local/bin/recptx.pl [--b25 [--round N] [--strip] [--emm]] [--lnb V] [--sid X] channel duration filename
$ recptx.pl --b25 --strip 18 180 ch18.ts &
$ recptx.pl --b25 --strip 13 180 ch13.ts
error - failed on _open(/dev/ptx0.t0) [src]

デバイスが使用中かどうかの判定が正しくできず、同じデバイスファイルで処理(空いている /dev/ptx0.t1 ではなく使用中の /dev/ptx0.t0 を使おうとして)しようとして落ちてしまうらしい。

これについては、こちらの記事の対処方法で解決できた。 FreeBSD:日々、浩然之気 PT2での2番組同時録画

デバイスファイルをきちんと認識できているようだ。

$ ps ax
:
:
79195  4  S         0:00.03 /usr/local/bin/perl /usr/local/bin/recptx.pl --b25 --strip 18 180 ch18.ts
79197  4  D         0:01.23 /usr/local/bin/b25 -s 1 -v 0 -p 0 /dev/ptx0.t0 ch18.ts
79198  4  S+        0:00.05 /usr/local/bin/perl /usr/local/bin/recptx.pl --b25 --strip 13 180 ch13.ts
79200  4  D+        0:01.11 /usr/local/bin/b25 -s 1 -v 0 -p 0 /dev/ptx0.t1 ch13.ts
64045  1- S         4:23.86 /usr/local/sbin/pcscd
$ 

なお、recptx.pl はPT2/PT3の1枚刺しにしか対応していない。複数枚で動作させたいなら修正も複数枚対応させる必要がある。

recpt1コマンドの導入

この界隈では、recpt1が事実上の標準録画コマンドおよびインタフェースらしく、録画用フロントエンドはほぼこのコマンドをサポートしている。

recpt1、libarib25ソース入手

ここでは https://github.com/stz2012/ で公開されているものをベースにする事とした。

こちらから recpt1 と libarib25 を取得。好きな方法でチェックアウトすればいいと思う。

libarib25 のインストール

Ports の multimedia/ab25 で導入されたライブラリとヘッダファイルを使えるかと思ったら、どうもうまくない。素直にrecpt1と同じところで公開されている libarib25 を導入する。

stz2012/libarib25の最新版は cmake を使うようになっていた。まずは以下までを実行。

mkdir libarib25
cd libarib25
git clone https://github.com/stz2012/libarib25.git
cd libarib25
cmake .

次に、以下を実行。

ccmake .

次の画面になったら、t キーを押してadvanced mode にする。 最初の画面

CMAKE_CXX_COMPILER、CMAKE_C_COMPILER、CMAKE_LINKER、CMAKE_MAKE_PROGRAM を変更。 advanced mode画面

c キーを押して反映されたことを確認する。 ※反映されていないところは再度入力して c キーを。

反映されたことを確認できたら q キーを押して以下を実行。

gmake
gmake install

recpt1 インストール

FreeBSDで地デジビデオサーバで公開されている recpt1.diff を入手。 これをrecpt1のソースに適用してLinux用の記述を削りFreeBSD専用にした。

なお、このソースについて私は一切責任を取らない。利用は自己責任で。

以下は 2017/05/14版( freebsd-019-recpt1_20170514.tar.gz )を利用する際のインストール手順。

mkdir recpt1
cd recpt1
fetch http://hgotoh.jp/wiki/lib/exe/fetch.php/documents/freebsd/freebsd-019-recpt1_20170514.tar.gz
tar xvfz freebsd-019-recpt1_20170514.tar.gz
cd recpt1
./autogen.sh
./configure --enable-b25
gmake
gmake install

以下は 2014/05/21版( freebsd-019-recpt1_20140521.tar.gz )を利用する際のインストール手順。configureを実行しないので注意。

mkdir recpt1
cd recpt1
fetch http://hgotoh.jp/wiki/lib/exe/fetch.php/documents/freebsd/freebsd-019-recpt1_20140521.tar.gz
tar xvfz freebsd-019-recpt1_20140521.tar.gz
cd recpt1
./autogen.sh
gmake
gmake install

recpt1動作確認

recptx.pl と同じように実行してみる。

$ recpt1 --b25 --strip 18 180 ch18.ts &
$ using B25...
enable B25 strip
pid = 83384
C/N = 31.648641dB
Recording...

$
$ recpt1 --b25 --strip 13 180 ch13.ts
using B25...
enable B25 strip
pid = 83389
C/N = 31.655352dB
Recording...
Recorded 180sec
Recorded 180sec
[1]   Done                    recpt1 --b25 --strip 18 180 ch18.ts
$

出来上がった ch18.ts、ch13.ts を再生して問題ないようならおめでとうございます。

再生クライアント

Windows10Pro の Windows Media Player では再生できないか、ワンセグの再生しかできなかった。

確認では VLC メディアプレイヤーを使った。
ストアアプリにも VLC プレイヤーがあるけど、できればスタンドアロン版導入を推奨。 ストアアプリ版はまだ不安定な印象。そして後述のストリーミングに対応できなかった。

ストリーミング

stz2012版を選んだ理由に、この機能がある。試してみたかったのよ。うん。

# recpt1 --b25 --sid hd --http 8889
using B25...
creating a http daemon
run as a daemon..
pid = 83939
listening at port 8889
# 

recpt1が常駐し、ポート8889で待ち受けを開始する。 ここでVLC Media Player でストリームを開くと….
ストリームを開く

# connect from: NONAME [192.168.1.200] port 61959
request command is GET /18 HTTP/1.1

channel is 18
C/N = 31.797683dB
Recording...
Available sid = 24632 24633 24634 25016
Chosen sid    = 24632
Available PMT = 0x101 0x102 0x103 0x1fc8

ストリーミングが始まる

無事ストリーミングされていることが分かる。URLでチャンネルを変更する。

sidを指定したい時は、http://host:8889/18/25016 のように、チャンネルの後にsidを指定する。ちなみにうちのエリアだとこれはテレビ神奈川のワンセグを指す。フルセグは24632。

でもまぁ

リビングにテレビあるならわざわざPCでテレビ見ることなんてないよね。PCで苦労してみる必要がない。 やっぱりこういうのは趣味。映すまでできればあと(゚⊿゚)シラネ、という…

documents/freebsd/freebsd-019.txt · 最終更新: 2017/05/22 05:22 by k896951

ページ用ツール