PT2 がいまだに現役でいられるのは、地デジ 2 本と BS/CS 2 本を 1 枚でまかなう素直な設計と、枯れきったドライバのおかげです。一方 PX-Q3U4 は、USB 1 本で 8 チューナーを追加できる、現在もっとも手軽な増設手段。この 2 枚を同じマシンに載せると、地上デジタル 6 本・BS/CS 6 本、合計 12 チューナーという、家庭用としては過剰なくらいの録画環境ができあがります。
問題は「同居させると設定が二重になる」ことです。デバイスファイルの命名規則が違い、ドライバの入れ方も違い、カーネルが上がるたびにどちらかが黙って死ぬ。この記事では、その面倒をまとめて片付けます。Docker は使わず、すべてホストに直接インストールしていく構成です。
- STEP 00|完成する環境と機材
- STEP 01|ハードウェア構成と配線
- STEP 02|Ubuntu 24.04 の初期設定
- STEP 03|SCR3310-NTTCom を認識させる
- STEP 04|libarib25 のビルド
- STEP 05|recpt1 のビルド
- STEP 06|PT2 ドライバを DKMS 化する
- STEP 07|px4_drv で PX-Q3U4 を動かす
- STEP 08|デバイス確認と録画テスト
- STEP 09|Node.js のインストール
- STEP 10|Mirakurun のセットアップ
- STEP 11|12 チューナーの定義とスキャン
- STEP 12|EPGStation のセットアップ
- STEP 13|自動起動と運用設定
- トラブルシューティング
- 安定運用のためのチューニング
- まとめ
STEP 00|完成する環境と機材
最初にゴールを固定します。この手順を最後まで通すと、ブラウザから番組表を開いて予約でき、キーワードでの自動録画が回り、スマートフォンからも視聴できる状態になります。
| 役割 | 採用するもの | 備考 |
|---|---|---|
| OS | Ubuntu Server 24.04 LTS (amd64) | カーネル 6.8 系 |
| チューナー A | アースソフト PT2 | PCI 接続。地デジ×2 / BS・CS×2 |
| チューナー B | PLEX PX-Q3U4 | USB 接続。地デジ×4 / BS・CS×4 |
| カードリーダー | SCR3310-NTTCom | PC/SC (CCID) 対応 |
| PT2 ドライバ | pt1_drv(chardev 版) | 自前で DKMS 化して自動再ビルド |
| PX-Q3U4 ドライバ | tsukumijima/px4_drv | DKMS 標準対応 |
| デコードライブラリ | libarib25 | tsukumijima 版(CMake) |
| 録画コマンド | recpt1 | stz2012 版 |
| チューナーサーバー | Mirakurun 3.9 系 | ポート 40772 |
| 録画管理 | EPGStation v2 | ポート 8888 |
| Node.js | 20.x LTS | NodeSource から導入 |
STEP 01|ハードウェア構成と配線
ソフトの前に、ここでつまずく人がいちばん多いポイントを潰しておきます。
PT2 は PCI であって PCI Express ではない
2010 年前後のカードなので、接続は旧来の PCI スロットです。最近のマザーボードにはまず載っていません。PCI スロットを持つ中古ワークステーション向けボードを選ぶか、PCIe→PCI 変換ブリッジ(ASMedia ASM1083 / ITE IT8892 系)を挟むことになります。ブリッジ経由は「動く個体」と「延々とドロップする個体」があるため、可能なら PCI スロット直挿しを強く推奨します。
PX-Q3U4 は付属 AC アダプタが必須
USB バスパワーだけでは 8 チューナー分の電力が足りません。付属の AC アダプタを必ず接続してください。ここを省略すると、録画中に突然ドロップが増える・デバイスが消えるという、再現性が低くて最も厄介な種類の不具合に一晩溶かすことになります。
アンテナ分配
PT2 に 2 系統(地デジ・BS/CS)、PX-Q3U4 に 2 系統。合計 4 本の入力が必要です。分配器は全端子通電型を選び、BS/CS の LNB 電源をどこから供給するかを決めておきます。ブースターや分配器側から給電しているなら、後述する --lnb 15 は付けません。
アンテナ(UHF / BS・CS)
↓
分配器(全端子通電)
↓
PT2 / PX-Q3U4(計 12 チューナー)
↓
recpt1 + libarib25(カードリーダー SCR3310)
↓
Mirakurun(ポート 40772)
↓
EPGStation(ポート 8888)
STEP 02|Ubuntu 24.04 の初期設定
Ubuntu Server 24.04 LTS を最小構成でインストールした直後から始めます。デスクトップ版でも手順は同じです。
sudo apt update && sudo apt full-upgrade -y sudo apt install -y \ build-essential git curl wget unzip cmake pkg-config \ autoconf automake libtool \ dkms linux-headers-$(uname -r) \ pcscd pcsc-tools libpcsclite-dev libccid \ libudev-dev mercurial
時刻がずれていると EPG の取得と予約がまとめて狂います。systemd-timesyncd が動いていることを確認しておきましょう。
sudo timedatectl set-timezone Asia/Tokyo # System clock synchronized: yes を確認 timedatectl status
STEP 03|SCR3310-NTTCom を認識させる
SCR3310-NTTCom は CCID 準拠なので、Ubuntu 24.04 では追加ドライバなしで動きます。pcscd を起動し、B-CAS カードを正しい向き(金色の接点面を上、矢印の向きに奥まで)で挿してから確認します。
sudo systemctl enable --now pcscd pcscd.socket # SCM Microsystems ... と出れば認識OK lsusb | grep -i -e scm -e scr pcsc_scan
pcsc_scan の出力に Japanese Chijou Digital B-CAS Card のような ATR 解析結果が出れば成功です。Ctrl+C で抜けてください。Waiting for the first reader... のまま止まる場合は、USB ポートを変える・USB ハブを外して直挿しにする・sudo systemctl restart pcscd を試します。
STEP 04|libarib25 のビルド
arib25ライブラリです。メンテナンスが続いている CMake ベースの tsukumijima 版を使います。
mkdir -p ~/src && cd ~/src git clone https://github.com/tsukumijima/libarib25.git cd libarib25 cmake . make -j"$(nproc)" sudo make install sudo ldconfig # /usr/local/bin/arib-b25-stream-test と出れば成功 which arib-b25-stream-test
/usr/local/bin/arib-b25-stream-test と /usr/local/lib/libarib25.so が入ります。この arib-b25-stream-test は、あとで Mirakurun の decoder として使います。
STEP 05|recpt1 のビルド
実際にチューナーを叩く録画コマンドです。PT2 の /dev/pt1video* と PX-Q3U4 の /dev/px4video* は、どちらもこの 1 本の recpt1 で扱えます。ここが「2 枚を同居させても設定が破綻しない」最大の理由です。
cd ~/src git clone https://github.com/stz2012/recpt1.git cd recpt1/recpt1 ./autogen.sh ./configure --enable-b25 make -j"$(nproc)" sudo make install recpt1 --version
STEP 06|PT2 ドライバを DKMS 化する
ここが PT2 側の山場です。Ubuntu のカーネルには earth-pt1 という DVB 版の PT1/PT2 ドライバが最初から入っており、放っておくとこれがカードを掴んでしまいます。recpt1 が使う chardev 版 pt1_drv と競合するので、先にブラックリストへ登録します。
sudo tee /etc/modprobe.d/blacklist-earth-pt1.conf >/dev/null <<'EOF' blacklist earth-pt1 blacklist earth-pt3 EOF sudo update-initramfs -u
ソースの取得
PT1/PT2 の chardev ドライバの原典は honeyplanet の Mercurial リポジトリです。近年は GitHub 上のミラー/フォークを使うのが一般的になっています。
cd ~/src # 原典(Mercurial) hg clone http://hg.honeyplanet.jp/pt1/ # 上記が落ちている場合は GitHub 上のミラー/フォークを利用する # 例: git clone https://github.com/stz2012/pt1.git
まず手動ビルドで通す
DKMS 化する前に、素の状態でビルドが通るか確かめます。ここで失敗するなら DKMS でも失敗します。
cd ~/src/pt1/driver make sudo make install sudo modprobe pt1_drv # /dev/pt1video0 〜 /dev/pt1video3 の 4 本が出れば成功 ls -l /dev/pt1video*
DKMS に登録してカーネル更新に備える
PT2 のドライバは DKMS に対応していないため、dkms.conf を自分で書きます。プロジェクト側 Makefile の変数名に依存しないよう、kbuild を直接呼ぶ形にしておくのが安全です。
PT1_VER=1.0
sudo mkdir -p /usr/src/pt1_drv-${PT1_VER}
sudo cp -a ~/src/pt1/driver/. /usr/src/pt1_drv-${PT1_VER}/
sudo tee /usr/src/pt1_drv-${PT1_VER}/dkms.conf >/dev/null <<EOF
PACKAGE_NAME="pt1_drv"
PACKAGE_VERSION="${PT1_VER}"
BUILT_MODULE_NAME[0]="pt1_drv"
DEST_MODULE_LOCATION[0]="/kernel/drivers/misc"
MAKE[0]="make -C /lib/modules/\${kernelver}/build M=\${dkms_tree}/\${PACKAGE_NAME}/\${PACKAGE_VERSION}/build modules"
CLEAN="make -C /lib/modules/\${kernelver}/build M=\${dkms_tree}/\${PACKAGE_NAME}/\${PACKAGE_VERSION}/build clean"
AUTOINSTALL="yes"
EOF
sudo dkms add pt1_drv/${PT1_VER}
sudo dkms build pt1_drv/${PT1_VER}
sudo dkms install pt1_drv/${PT1_VER}
sudo dkms status
dkms status に pt1_drv/1.0, 6.8.x-xx-generic, x86_64: installed と表示されれば、以後カーネルが更新されても自動で再ビルドされます。
最後に、root 以外のユーザーからも叩けるよう udev ルールを入れておきます。
sudo tee /etc/udev/rules.d/99-pt1.rules >/dev/null <<'EOF' KERNEL=="pt1video*", GROUP="video", MODE="0660" EOF sudo usermod -aG video "$USER" sudo udevadm control --reload && sudo udevadm trigger
STEP 07|px4_drv で PX-Q3U4 を動かす
PLEX 公式ドライバは使いません。tsukumijima/px4_drv は、非公式ながら新しいカーネルへの追従が続いており、DKMS に最初から対応しているのが最大の利点です。カーネルが上がっても手動で入れ直す必要がありません。
ファームウェアの抽出
PX-Q3U4 は起動時に IT9305E 用ファームウェアを必要とします。これは Windows 用公式ドライバから抜き出します(PX-W3U4 用の配布物に同じものが入っています)。
cd ~/src git clone https://github.com/tsukumijima/px4_drv.git cd px4_drv/fwtool wget http://plex-net.co.jp/plex/pxw3u4/pxw3u4_BDA_ver1x64.zip -O pxw3u4_BDA_ver1x64.zip unzip -oj pxw3u4_BDA_ver1x64.zip pxw3u4_BDA_ver1x64/x64/PXW3U4.sys make ./fwtool PXW3U4.sys it930x-firmware.bin sudo mkdir -p /lib/firmware sudo cp it930x-firmware.bin /lib/firmware/
DKMS でインストール
リポジトリ直下に dkms.conf が同梱されています。バージョン番号を直書きすると更新時にズレるので、dkms.conf から読み取る形にしておくと事故がありません。
cd ~/src/px4_drv
PX4_VER=$(grep -oP 'PACKAGE_VERSION="\K[^"]+' dkms.conf)
echo "px4_drv version: ${PX4_VER}"
sudo cp -a ~/src/px4_drv /usr/src/px4_drv-${PX4_VER}
sudo dkms add px4_drv/${PX4_VER}
sudo dkms install px4_drv/${PX4_VER}
sudo modprobe px4_drv
sudo dkms status
USB を挿し直すか再起動すると、デバイスファイルが生えます。
ls -l /dev/px4video* dmesg | grep -i px4 | tail -n 20
STEP 08|デバイス確認と録画テスト
Mirakurun を入れる前に、コマンドラインで 12 本すべてが録れることを確認します。ここを飛ばすと、後で「Mirakurun の設定ミスなのかハードの問題なのか」が切り分けられなくなります。
デバイス割り当て表(想定)
| デバイスファイル | カード | 種別 |
|---|---|---|
/dev/pt1video0 | PT2 | ISDB-S(BS・CS) |
/dev/pt1video1 | PT2 | ISDB-S(BS・CS) |
/dev/pt1video2 | PT2 | ISDB-T(地デジ) |
/dev/pt1video3 | PT2 | ISDB-T(地デジ) |
/dev/px4video0 | PX-Q3U4 | ISDB-S(BS・CS) |
/dev/px4video1 | PX-Q3U4 | ISDB-S(BS・CS) |
/dev/px4video2 | PX-Q3U4 | ISDB-T(地デジ) |
/dev/px4video3 | PX-Q3U4 | ISDB-T(地デジ) |
/dev/px4video4 | PX-Q3U4 | ISDB-S(BS・CS) |
/dev/px4video5 | PX-Q3U4 | ISDB-S(BS・CS) |
/dev/px4video6 | PX-Q3U4 | ISDB-T(地デジ) |
/dev/px4video7 | PX-Q3U4 | ISDB-T(地デジ) |
単体テスト
地デジは物理チャンネル番号(例: 東京の NHK 総合なら 27)、BS は BS15_0 のような論理指定で叩きます。10 秒録って、ファイルサイズが数十 MB になっていれば成功です。
# PT2 地デジ(物理ch 27 を 10 秒) recpt1 --device /dev/pt1video2 --b25 --strip 27 10 /tmp/t_pt2.ts # PT2 BS(分配器側から給電しているなら --lnb 15 は外す) recpt1 --device /dev/pt1video0 --lnb 15 --b25 --strip BS15_0 10 /tmp/s_pt2.ts # PX-Q3U4 地デジ recpt1 --device /dev/px4video2 --b25 --strip 27 10 /tmp/t_px4.ts # PX-Q3U4 BS recpt1 --device /dev/px4video0 --lnb 15 --b25 --strip BS15_0 10 /tmp/s_px4.ts ls -lh /tmp/*.ts
実行中に Recording... と受信レベル(dB)が表示されます。地デジで 20dB 以上、BS で 10dB 以上あれば実用範囲です。数 KB のファイルしかできない場合はチャンネル指定かアンテナ、b25 decode failed が出る場合はカードリーダー側の問題です。
全 12 本を一気に確かめるなら、次のワンライナーが便利です。
for d in /dev/pt1video2 /dev/pt1video3 /dev/px4video2 /dev/px4video3 \
/dev/px4video6 /dev/px4video7; do
echo "=== $d (GR) ==="
recpt1 --device $d --b25 --strip 27 5 /tmp/chk.ts >/dev/null 2>&1
ls -l /tmp/chk.ts | awk '{print $5" bytes"}'
done
STEP 09|Node.js のインストール
Mirakurun と EPGStation はどちらも Node.js アプリです。Ubuntu 標準リポジトリのものではバージョンが古いことがあるため、NodeSource から 20.x LTS を入れます。
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt install -y nodejs node -v # v20.x.x npm -v
STEP 10|Mirakurun のセットアップ
Mirakurun は 12 本のチューナーを 1 つの HTTP API に束ねてくれるサーバーです。「どの番組をどのチューナーで受けるか」の排他制御を全部引き受けてくれるので、EPGStation 側はチューナーの存在を意識しなくて済みます。
sudo npm install pm2 -g sudo pm2 startup sudo npm install mirakurun -g --unsafe-perm --production sudo mirakurun status
設定ファイルは /usr/local/etc/mirakurun/ に置かれます。
| ファイル | 役割 |
|---|---|
server.yml | 待ち受けポート・ログレベルなどサーバー設定 |
tuners.yml | チューナーの定義(今回いちばん重要) |
channels.yml | チャンネル定義。スキャンで自動生成できる |
LAN 内の他端末から EPGStation 経由でアクセスする構成なら、Mirakurun 自体は localhost だけで十分です。必要に応じて server.yml を編集します。
port: 40772 logLevel: 2 highWaterMark: 25165824 overflowTimeLimit: 30000 maxBufferBytesBeforeReady: 8388608 eventEndTimeout: 1000
STEP 11|12 チューナーの定義とスキャン
tuners.yml に 12 本すべてを書き下します。PT2 と PX-Q3U4 が同じ recpt1 で扱えるので、--device の値が違うだけの、ほぼコピペで済む定義になります。
編集は sudo mirakurun config tuners、または直接エディタで開きます。
# ============ PT2 (PCI) ============ - name: PT2-S0 types: [BS, CS] command: recpt1 --device /dev/pt1video0 --lnb 15 <channel> - - decoder: arib-b25-stream-test -v 0 isDisabled: false - name: PT2-S1 types: [BS, CS] command: recpt1 --device /dev/pt1video1 --lnb 15 <channel> - - decoder: arib-b25-stream-test -v 0 isDisabled: false - name: PT2-T0 types: [GR] command: recpt1 --device /dev/pt1video2 <channel> - - decoder: arib-b25-stream-test -v 0 isDisabled: false - name: PT2-T1 types: [GR] command: recpt1 --device /dev/pt1video3 <channel> - - decoder: arib-b25-stream-test -v 0 isDisabled: false # ============ PX-Q3U4 (USB) ============ - name: Q3U4-S0 types: [BS, CS] command: recpt1 --device /dev/px4video0 <channel> - - decoder: arib-b25-stream-test -v 0 isDisabled: false - name: Q3U4-S1 types: [BS, CS] command: recpt1 --device /dev/px4video1 <channel> - - decoder: arib-b25-stream-test -v 0 isDisabled: false - name: Q3U4-S2 types: [BS, CS] command: recpt1 --device /dev/px4video4 <channel> - - decoder: arib-b25-stream-test -v 0 isDisabled: false - name: Q3U4-S3 types: [BS, CS] command: recpt1 --device /dev/px4video5 <channel> - - decoder: arib-b25-stream-test -v 0 isDisabled: false - name: Q3U4-T0 types: [GR] command: recpt1 --device /dev/px4video2 <channel> - - decoder: arib-b25-stream-test -v 0 isDisabled: false - name: Q3U4-T1 types: [GR] command: recpt1 --device /dev/px4video3 <channel> - - decoder: arib-b25-stream-test -v 0 isDisabled: false - name: Q3U4-T2 types: [GR] command: recpt1 --device /dev/px4video6 <channel> - - decoder: arib-b25-stream-test -v 0 isDisabled: false - name: Q3U4-T3 types: [GR] command: recpt1 --device /dev/px4video7 <channel> - - decoder: arib-b25-stream-test -v 0 isDisabled: false
チャンネルスキャン
channels.yml は手書きせず、Mirakurun のスキャン API に作らせます。地デジは全物理チャンネルを順に試すため 10〜20 分かかります。
sudo mirakurun restart sleep 10 # 地上デジタル curl -X PUT "http://localhost:40772/api/config/channels/scan?type=GR" # BS(既存定義を残したまま追記する場合) curl -X PUT "http://localhost:40772/api/config/channels/scan?type=BS&refresh=false" # CS curl -X PUT "http://localhost:40772/api/config/channels/scan?type=CS&refresh=false" sudo mirakurun restart
完了したら、サービス一覧が取れるか確認します。
curl -s http://localhost:40772/api/status | head -n 40 curl -s http://localhost:40772/api/services | grep -o '"name":"[^"]*"' | head -n 30 curl -s http://localhost:40772/api/tuners | grep -o '"name":"[^"]*"'
/api/tuners に 12 本すべての名前が並べば、チューナー側の作業は完了です。
STEP 12|EPGStation のセットアップ
番組表・予約・ルール録画・視聴を担当する Web アプリです。root で動かす必要はないので、通常ユーザーのホームに置きます。
cd ~ git clone https://github.com/l3tnun/EPGStation.git cd EPGStation npm run all-install npm run build
ビルドには数分かかります。続いて設定ファイルをテンプレートから作成します。
cp config/config.yml.template config/config.yml cp config/operatorLogConfig.sample.yml config/operatorLogConfig.yml cp config/epgUpdaterLogConfig.sample.yml config/epgUpdaterLogConfig.yml cp config/serviceLogConfig.sample.yml config/serviceLogConfig.yml
録画先ディレクトリを用意します。システムディスクとは別の HDD を割り当てるのが定石です。
sudo mkdir -p /mnt/recorded /mnt/recorded/tmp sudo chown -R "$USER":"$USER" /mnt/recorded df -h /mnt/recorded
config/config.yml の要点だけ書き換えます。まずは SQLite で動かし、必要になってから MySQL に移行するのが無難です。
port: 8888
socketioPort: 8888
clientSocketioPort: 8888
mirakurunPath: http://localhost:40772
dbtype: sqlite
epgUpdateIntervalTime: 10
conflictPriority: 1
recPriority: 2
isEnabledDropCheck: true
recorded:
- name: recorded
path: '/mnt/recorded'
recordedTmp: '/mnt/recorded/tmp'
recordedFormat: '%YEAR%%MONTH%%DAY%_%HOUR%%MIN%-%TITLE%'
cd ~/EPGStation npm start
エラーが出なければ、別の端末から http://<サーバーのIP>:8888/ を開きます。番組表が空でも慌てないでください。EPG は取得に時間がかかるため、しばらく(放送波の EPG 周期に依存して数分〜数十分)待つと埋まります。Ctrl+C で一度止めます。
STEP 13|自動起動と運用設定
Mirakurun は PM2 の管理下に入っているので、sudo pm2 save で起動時復帰します。EPGStation は systemd ユニットにしておくと、依存関係とログの扱いが素直になります。
sudo pm2 save sudo pm2 list
sudo tee /etc/systemd/system/epgstation.service >/dev/null <<EOF
[Unit]
Description=EPGStation
After=network-online.target pm2-root.service
Wants=network-online.target
[Service]
Type=simple
User=${USER}
WorkingDirectory=${HOME}/EPGStation
ExecStart=/usr/bin/npm start
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now epgstation
systemctl status epgstation --no-pager
ログの確認は次のとおりです。
# EPGStation journalctl -u epgstation -f # Mirakurun sudo mirakurun log server sudo tail -f /usr/local/var/log/mirakurun.stdout.log
トラブルシューティング
再起動したらチューナーが 1 本も見えなくなった
まず sudo dkms status。 カーネル更新後にビルドが失敗していると、ここに added のまま残ります。sudo dkms autoinstall で再ビルドし、失敗するなら sudo apt install linux-headers-$(uname -r) でヘッダが入っているか確認してください。Secure Boot を有効にしたまま UEFI 設定を触った場合も、この症状になります。
/dev/px4video* が生成されない
dmesg | grep -i px4 を確認します。firmware: failed to load it930x-firmware.bin と出ていれば、STEP 07 のファームウェア配置が漏れています。ls -l /lib/firmware/it930x-firmware.bin で存在を確認し、置いたあとで USB を挿し直してください。
/dev/pt1video* が生成されない
lsmod | grep -e pt1 -e earth を確認します。earth_pt1 がロードされていれば、ブラックリスト(STEP 06)が効いていません。/etc/modprobe.d/ のファイル名は必ず .conf で終わらせ、sudo update-initramfs -u のあと再起動が必要です。
録画はできるが再生すると真っ黒/b25 decode failed
スクランブルが解けていません。pcsc_scan でカードが見えるか、カードの向きが正しいかを確認します。pcscd が落ちていることもあるので systemctl status pcscd も見てください。カードリーダーを USB ハブ経由にしている場合は直挿しに変えると直ることがあります。
BS/CS だけ受信できない
LNB 電源です。分配器やブースターから給電していないなら、recpt1 に --lnb 15 が必要です。逆に、すでに他機器から給電されている状態で複数チューナーから重ねて給電すると不安定になります。給電元は必ず 1 箇所に統一してください。
PX-Q3U4 でだけドロップが多発する
順に潰します。①付属 AC アダプタを接続しているか。②USB 3.0 ポートで不安定なら USB 2.0 ポートに変えてみる(IT9305E は USB 2.0 デバイスです)。③8 本同時録画時は瞬間的な書き込み帯域が問題になるので、録画先を SMR ではない HDD か SSD にする。④それでも残るなら、後述のモジュールパラメータを調整します。
番組表がいつまでも埋まらない
EPG は放送波から少しずつ流れてくるため、初回は時間がかかります。まず curl -s http://localhost:40772/api/status で Mirakurun 側の EPG 取得が進んでいるか確認してください。Mirakurun 側が空なら、原因は EPGStation ではなくチューナーかチャンネル定義です。
EPGStation が起動しない
journalctl -u epgstation -n 50 --no-pager を読みます。config.yml の YAML インデント崩れが最頻出の原因です。次に多いのが、録画先ディレクトリの権限不足(chown 漏れ)と、npm run build の実行忘れです。
安定運用のためのチューニング
px4_drv のモジュールパラメータ
多重録画時のドロップが減らない場合は、転送バッファ関連のパラメータを調整します。値は環境依存なので、README の説明を読んだうえで少しずつ変えてください。
sudo tee /etc/modprobe.d/px4_drv.conf >/dev/null <<'EOF' options px4_drv tsdev_max_packets=2048 EOF sudo update-initramfs -u sudo reboot
録画ディスクの選び方
- 地デジ 1 番組で約 7〜8GB/時、BS で 11〜13GB/時。12 本フル稼働は現実的でなくても、4〜6 本同時は普通に起こります。
- SMR 方式の HDD は避ける。連続書き込み中にキャッシュが尽きると数秒間ストールし、そのままドロップになります。CMR を選んでください。
/mnt/recordedはext4で十分です。fstabにはnoatimeを付けておくと無駄な書き込みが減ります。
設定のバックアップ
再構築が必要になったとき、この 2 つが残っていれば復旧は一瞬です。
mkdir -p ~/backup sudo tar czf ~/backup/mirakurun-conf-$(date +%F).tar.gz /usr/local/etc/mirakurun/ tar czf ~/backup/epgstation-conf-$(date +%F).tar.gz -C ~/EPGStation config data
電源とネットワーク
録画中の停電は、ファイル破損だけでなくファイルシステム自体を痛めます。小容量でよいので UPS を挟み、nut で自動シャットダウンさせておくと安心です。またサーバーの IP は DHCP 固定割り当てにしておくと、スマートフォンからのアクセス先が変わりません。
まとめ
PT2 と PX-Q3U4 という世代もインターフェースも違う 2 枚を、recpt1 という共通の入口に揃えてしまえば、Mirakurun から先はまったく同じ扱いになります。そして両方のドライバを DKMS に載せておけば、「カーネルが上がった翌朝に録画が全滅していた」という、この趣味で最も萎える事故を防げます。
組み上がってしまえば、あとは EPGStation のルール録画にキーワードを登録していくだけです。12 チューナーあると、同時間帯の裏番組を気にする必要がなくなり、録画予約という行為そのものを忘れられるようになります。そこまで来て初めて、この構成の本当の価値がわかります。
コメント