Help us understand the problem. What is going on with this article?

Raspberry Pi 4+PX-Q1UDの地デジ録画サーバをPX-Q3U4に換装する

はじめに

中古の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

インストールされたカーネルヘッダのバージョンを確認しておきます。
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の番組も表示されるようになります。

image.png

参考サイト

RaspberryPi 3B+ + PX-Q3U4 + EPGStation @tatsuya_info
MirakurunクローンをRustで実装しました @masnagam

おまけ

MirakurunをRustで実装したmirakcが気になる。
MirakurunクローンをRustで実装しました @masnagam
Raspberry pi 4はリソースに大分余裕があるので現状のままでも問題ないんですが、そのうち試してみたいと思う。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした