努力したWiki

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

ユーザ用ツール

サイト用ツール


サイドバー

メニュー

インデックス

documents:freebsd:ptx:ptx-000

FreeBSDでPT2/PT1を使う

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枚刺しにしか対応していない。複数枚で動作させたいなら修正も複数枚対応させる必要がある。

documents/freebsd/ptx/ptx-000.txt · 最終更新: 2019/01/28 11:36 by k896951

ページ用ツール