はじめに
中古のPX-Q3U4をお安く手に入れたので今使っているPX-Q1UDから換装しました。
変更点としては以下の通り。
Before - PX-Q1UD
- 地上波 4ch
After - PX-Q3U4
- 地上波 4ch
- BS/CS 4ch
使用するB-CASカードはもちろんBS/CS対応(赤い方)である必要があります。
PX-Q3U4にB-CASカードリーダーついてますがrecpt1経由でデコードするのでこいつは使いません。
手順
以下のモジュールは導入済みの状態で初めます。
- カードリーダードライバ pcsc-tools
- B25ライブラリ libarib25
- mirakurun
- chinachu
構築については以前の記事を参照して下さい。
ffmpeg
に関してはraspbian fullのOSならデフォルトで入っています(ありがたい)。
必要なモジュールのインストール
$ sudo apt install raspberrypi-kernel-headers build-essential dkms autoconf
インストールされたカーネルヘッダのバージョンを確認しておきます。
2020/2/15時点では4.19.97のカーネルヘッダがインストールされます。
$ ls /usr/src/ | grep linux-headers
linux-headers-4.19.97+
linux-headers-4.19.97-v7+
linux-headers-4.19.97-v7l+
raspbianのバージョン確認
driver(px4_drv)のインストールの際に前段階でインストールしたカーネルヘッダが必要なのですが
raspbianのバージョンとインストールするカーネルヘッダのバージョンがズレているとインストールに失敗します。
$ uname -r
4.19.97-v7+
ここでインストールされたカーネルヘッダとカーネルのバージョンが同じなら問題ないです。
バージョンが古い場合は次のカーネルバージョンアップの手順が必要です。
raspbianバージョンアップ
※**raspbianのLinuxカーネルのバージョンアップは非推奨な行為になっています。**上げる場合はバックアップ等取ってから行うのが良いでしょう。
前述の通り、カーネルヘッダとカーネルのバージョンを合わせておく必要があるので
カーネルヘッダとカーネルのバージョンが違うならバージョンアップを行います。
特定のバージョンに上げる場合は事前にコミットハッシュを調べておく必要があります。
FirmwareのRepositoryを「kernel: Bump」で検索するとハッシュを調べることが出来ます。
4.19.97の場合のハッシュは「993f47507f287f5da56495f718c2d0cd05ccbc19」になります。
$ sudo rpi-update 993f47507f287f5da56495f718c2d0cd05ccbc19
バージョンアップが終了したら再起動してバージョンを確認。
$ uname -r
4.19.97-v7+
driverのインストール
PLEX PX-W3U4/Q3U4/W3PE4/Q3PE4の非公式driverのpx4_driverをインストールします。
基本的にカーネルのバージョンさえ合っていればREADME通りにやれば上手く行くんですが、手順多くて面倒くさいので今回はインストールスクリプトを使います。
$ curl -fsSL https://raw.githubusercontent.com/masnagam/sbc-scripts/master/install-px4-drv \
| sh -s -- --dkms install
失敗する場合はカーネルヘッダが上手くインストールされていないかもしれません。
カーネルヘッダを再度インストールして
$ sudo apt install raspberrypi-kernel-headers
以下のbuildファイルがカーネルヘッダにリンクされているか確認して下さい。
$ ls -la /lib/modules/4.19.97-v7l+/
lrwxrwxrwx 1 root root 35 2月 12 22:33 build -> /usr/src/linux-headers-4.19.97-v7l+
ドライバーのインストールをやり直す場合はアンインストールしておかないとエラーになります。
ドライバーインストール確認
正常にインストールが成功していればlsmodでpx4_drv
ドライバが表示されるはず。
$ sudo modprobe px4_drv
$ lsmod | grep px4
px4_drv
PX-Q3U4を接続してデバイスファイルがチューナー分(8個)作成されることを確認します。
この時B-CASカードはPX-Q3U4のカードリーダーじゃなくて別途用意しているカードリーダーの方に差しましょう。
$ ls /dev/px4video*
/dev/px4video0 /dev/px4video1 /dev/px4video2 /dev/px4video3 /dev/px4video4 /dev/px4video5 /dev/px4video6 /dev/px4video7
recpt1のインストール
今まで録画で使っていたrecdvb
はデバイスファイルの名称が異なるのでそのままでは使えないため、新たに録画用のツールをインストールします。
px4_drv
はPLEX公式のrecpt1
でなくても動作するので
STZ版のrecpt1
をこちらを参考にしてインストールしました。
$ git clone https://github.com/stz2012/recpt1.git
$ cd recpt1/recpt1
$ sed -i -e "/^char \*bsdev\[NUM_BSDEV\] = {$/a \ \ \ \ \"/dev/px4video1\",\n\ \ \ \ \"/dev/px4video0\",\n\ \ \ \ \"/dev/px4video4\",\n\ \ \ \ \"/dev/px4video5\"," pt1_dev.h
$ sed -i -e "/^char \*isdb_t_dev\[NUM_ISDB_T_DEV\] = {$/a \ \ \ \ \"/dev/px4video2\",\n\ \ \ \ \"/dev/px4video3\",\n\ \ \ \ \"/dev/px4video6\",\n\ \ \ \ \"/dev/px4video7\"," pt1_dev.h
$ ./autogen.sh
$ ./configure --enable-b25
$ make -j 4
$ sudo make install
正常に録画できるか動作確認してみます。
各地域のチャンネルはマスプロで確認して下さい。
$ cd /mnt/hdd1
$ recpt1 --device /dev/px4video0 --lnb 15 --b25 --strip BS09_0 10 bs0.m2ts
$ recpt1 --device /dev/px4video1 --lnb 15 --b25 --strip BS09_0 10 bs1.m2ts
$ recpt1 --device /dev/px4video2 --b25 --strip 16 10 gr0.m2ts
$ recpt1 --device /dev/px4video3 --b25 --strip 16 10 gr1.m2ts
Mirakurunチューナー設定
PX-Q3U4用のチューナー設定を行います。
PX-Q1UDをもう使わないのであれば、元々あったPX-Q1UD用チューナー設定は isDisabled: true
で無効化しておきます。
$ sudo EDITOR=nano mirakurun config tuners
- name: PX4-S1
types:
- BS
- CS
command: recpt1 --b25 --device /dev/px4video0 <channel> - -
isDisabled: false
- name: PX4-S2
types:
- BS
- CS
command: recpt1 --b25 --device /dev/px4video1 <channel> - -
isDisabled: false
- name: PX4-S3
types:
- BS
- CS
command: recpt1 --b25 --device /dev/px4video4 <channel> - -
isDisabled: false
- name: PX4-S4
types:
- BS
- CS
command: recpt1 --b25 --device /dev/px4video5 <channel> - -
isDisabled: false
- name: PX4-T1
types:
- GR
command: recpt1 --b25 --device /dev/px4video2 <channel> - -
isDisabled: false
- name: PX4-T2
types:
- GR
command: recpt1 --b25 --device /dev/px4video3 <channel> - -
isDisabled: false
- name: PX4-T3
types:
- GR
command: recpt1 --b25 --device /dev/px4video6 <channel> - -
isDisabled: false
- name: PX4-T4
types:
- GR
command: recpt1 --b25 --device /dev/px4video7 <channel> - -
isDisabled: false
設定を反映させるためMirakurunを再起動します。
$ sudo mirakurun restart
チャンネルスキャン
ここからは前回の記事と同じ流れです。
チャンネルスキャンして地上波のチャンネル一覧を更新します。
時間がかかるのでまったり待ちましょう。
$ sudo curl -X PUT "http://localhost:40772/api/config/channels/scan"
チャンネルスキャン後、EPGに反映されるのには暫く時間がかかります。
時間を置いてからChinachu
の表示を更新してみます。
cd [Chinachuのディレクトリ]
$ ./chinachu update
問題なくEPGが取得できていれば番組表にBS/CSの番組も表示されるようになります。
参考サイト
RaspberryPi 3B+ + PX-Q3U4 + EPGStation @tatsuya_info
MirakurunクローンをRustで実装しました @masnagam
おまけ
MirakurunをRustで実装したmirakcが気になる。
MirakurunクローンをRustで実装しました @masnagam
Raspberry pi 4はリソースに大分余裕があるので現状のままでも問題ないんですが、そのうち試してみたいと思う。