PT1/PT2 であればPortsのドライバを導入、PT3であれば、githubで公開されているものを導入してみる。
2024-1-21
FreeBSD 14.0でPT3な方がいらっしゃってた。
FreeBSD 14.0でPT3を動かす
FreeBSD 13.1 で 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
PT1/PT2ドライバを導入すると、Perlで記述されたコマンド /usr/local/bin/recptx.pl が導入されるが、 この中からスクランブル解除を実行する b25 コマンドが呼び出しされるので、導入しておく。以下を実行。
cd /usr/ports/multimedia/ab25 make install
USB接続スマートカードリーダのドライバを導入する。
recpt1コマンドやb25コマンドはスマートカードリーダに差し込まれたB-CASカードにアクセスできる必要がある。 また、後述する pcsc-lite の導入時にインストールするよう求められるので、先に導入しておく。 以下を実行。
cd /usr/ports/devel/libccid make install
スマートカードのAPIを操作するためのライブラリを導入する。ライブラリと言いつつデーモンとしてメモリに常駐する。以下を実行。
cd /usr/ports/devel/pcsc-lite make install
使っているカードリーダーによっては以下のインストールがいるかもしれないよ?とメッセージが出る。
既に 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
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枚刺しにしか対応していない。複数枚で動作させたいなら修正も複数枚対応させる必要がある。