- 現在稼働中の TV 録画サーバー(Ubutu16.04-LTS, PT3 x2, EPGREC) が陳腐化、特に OS のバージョンが古くなりすぎた
- この機会に現在((購入/導入)可能)で/(メンテナンスされている)ものを組み合わせてシステムを更新する
HW 環境†
Ubuntu バージョン更新(to Ubuntu 22.04 LTS)†
- do-release-upgrade コマンドを利用して段階的にローリングアップデート
- 既存の環境設定(SSH、Samba、Network 設定などを引き継げるので)
- 但し、この方法を使った場合 以前のバージョンに戻ることはできない 点には覚悟が必要
チューナーボード( PLEX 8ch 同時録画 )†
- PLEX MLT8PE
- PCIx x1 (電源供給用)
- USB オンボードヘッダー(データ用、USB2.0 でも OK)
- カードリーダー内蔵
| Function | Decice |
| USB Bridge | ITE IT9305E |
| ISDB-T/S Demodulator | Sony CXD2856ER (x3) |
| Terrestrial/Satellite Tuner | Sony CXD2858ER (x3) |
ボード認識(PCI デバイスではなく、USB として認識される)†
- 以下では PLEX のボードと カードリーダーが認識されている
[MUMIT] munakata:~$ lsusb
Bus 002 Device 002: ID 152d:9561 JMicron Technology Corp. / JMicron USA Technology Corp. JMS56x Series
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 04e6:5116 SCM Microsystems, Inc. SCR331-LC1 / SCR3310 SmartCard Reader
Bus 001 Device 003: ID 0511:0252 N'Able (DataBook) Technologies, Inc. PXML͔8PE
Bus 001 Device 002: ID 0511:0253 N'Able (DataBook) Technologies, Inc. PXML͔8PE
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
SW 環境†
Ubuntu 22.04-LTS Desktop 版を利用†
開発環境†
アプリ†
ARIB ライブラリー (libarib25)†
- ライブラリーが認識されていることを確認
[MUMIT] munakata:~$ ldconfig -p | grep arib
libarib25.so.0 (libc6,x86-64) => /usr/local/lib/libarib25.so.0
libarib25.so (libc6,x86-64) => /usr/local/lib/libarib25.so
libaribb24.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libaribb24.so.0
B-CASカード認識†
- B-CAS カードの面に注意( 赤い面が下 になる)
[MUMIT] munakata:~$ pcsc_scan
Using reader plug'n play mechanism
Scanning present readers...
0: SCM Microsystems Inc. SCR 3310 [CCID Interface] (53312218261543) 00 00
Sat Jan 28 11:52:57 2023
Reader 0: SCM Microsystems Inc. SCR 3310 [CCID Interface] (53312218261543) 00 00
Event number: 2
Card state: Card inserted,
ATR: 3B F0 12 00 FF 91 81 B1 7C 45 1F 03 99
ATR: 3B F0 12 00 FF 91 81 B1 7C 45 1F 03 99
+ TS = 3B --> Direct Convention
+ T0 = F0, Y(1): 1111, K: 0 (historical bytes)
TA(1) = 12 --> Fi=372, Di=2, 186 cycles/ETU
21505 bits/s at 4 MHz, fMax for Fi = 5 MHz => 26881 bits/s
TB(1) = 00 --> VPP is not electrically connected
TC(1) = FF --> Extra guard time: 255 (special value)
TD(1) = 91 --> Y(i+1) = 1001, Protocol T = 1
-----
TA(2) = 81 --> Protocol to be used in spec mode: T=1 - Unable to change - defined by interface bytes
TD(2) = B1 --> Y(i+1) = 1011, Protocol T = 1
-----
TA(3) = 7C --> IFSC: 124
TB(3) = 45 --> Block Waiting Integer: 4 - Character Waiting Integer: 5
TD(3) = 1F --> Y(i+1) = 0001, Protocol T = 15 - Global interface bytes following
-----
TA(4) = 03 --> Clock stop: not supported - Class accepted by the card: (3G) A 5V B 3V
+ Historical bytes:
+ TCK = 99 (correct checksum)
Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
3B F0 12 00 FF 91 81 B1 7C 45 1F 03 99
Japanese Chijou Digital B-CAS Card (pay TV)
チューナーカードのドライバー†
- PLEX サイト で配布されている公式ドライバーからファームウエアを wget で入手し unzip で解凍
- fwtool コマンドを使って PXW3U4.sys ファイルから it930x-firmware.bin という名前でファームウエアを分離
- Linux ホスト上の /lib/firmware ディレクトリーに配置(直接ボードに書き込む訳ではなく、ドライバー初期化時にロードする仕組み)
$ cd px4_drv/fwtool/
$ make
$ wget http://plex-net.co.jp/plex/pxw3u4/pxw3u4_BDA_ver1x64.zip
$ unzip pxw3u4_BDA_ver1x64.zip
$ sudo ./fwtool pxw3u4_BDA_ver1x64/PXW3U4.sys it930x-firmware.bin
$ sudo cp -p it930x-firmware.bin /lib/firmware/
$ cd ..
- dkms の仕組みを利用して kernel バージョンに合わせたドライバーをビルド、インストール
- 上で作成した dkms のインストールスクリプトを実行
$ sudo bash dkms.install
- マシンの再起動で /dev/pxmlt8videoN というドライバーがロードされていることを確認
[MUMIT] munakata:~$ ls -l /dev/px*
crw-rw-r-- 1 root video 511, 0 1月 26 11:26 /dev/pxmlt8video0
crw-rw-r-- 1 root video 511, 1 1月 26 11:26 /dev/pxmlt8video1
crw-rw-r-- 1 root video 511, 2 1月 26 11:26 /dev/pxmlt8video2
crw-rw-r-- 1 root video 511, 3 1月 26 11:26 /dev/pxmlt8video3
crw-rw-r-- 1 root video 511, 4 1月 26 11:26 /dev/pxmlt8video4
crw-rw-r-- 1 root video 511, 5 1月 26 11:26 /dev/pxmlt8video5
crw-rw-r-- 1 root video 511, 6 1月 26 11:26 /dev/pxmlt8video6
crw-rw-r-- 1 root video 511, 7 1月 26 11:26 /dev/pxmlt8video7
録画コマンド recpt1 のビルドと録画テスト†
- make を実行すると多数のワーニング warning: braces around scalar initializer が出る
Runtime 関係†
node 16.x インストール†
[MUMIT] munakata:~$ curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
## Installing the NodeSource Node.js 16.x repo...
## Populating apt-get cache...
[MUMIT] munakata:~$ sudo apt-get install -y nodejs
[MUMIT] munakata:~$ node -v
v16.19.0
Mirakurunのインストール†

[MUMIT] munakata:~$ node --version
v16.19.0
[MUMIT] munakata:~$ curl -o - http://localhost:40772/api/version
{"current":"3.9.0-rc.2","latest":"3.9.0-rc.2"}
[MUMIT] munakata:~$ python --version
Python 2.7.18
[MUMIT] munakata:~$ gcc --version
gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0
[MUMIT] munakata:~$ ffmpeg -version
ffmpeg version 4.4.2-0ubuntu0.22.04.1 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 11 (Ubuntu 11.2.0-19ubuntu1)
configuration: --prefix=/usr --extra-version=0ubuntu0.22.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu -- incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable- libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx
--enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable- libx264 --enable-shared
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100 / 7.110.100
libswscale 5. 9.100 / 5. 9.100
libswresample 3. 9.100 / 3. 9.100
libpostproc 55. 9.100 / 55. 9.100
- FFmpeg/FFprobe についてデフォルトでは /usr/local/bin/ にインストールされていると想定しています。違う場所にインストールされている場合は config.yml を修正してください
- Ubuntu では /usr/bin に ffmpeg/ffprobe があるので、この変更をしないとエンコードできない
- 更に snap は /home 以外の名前のディレクトリで実行するとエラーになるので、snap 経由のインストールでは無く apt で Ubuntu からインストールする必要があった。
- 起動時に EPGSTATION が自動起動しない理由を解析した結果、root 権限で pm2 で起動されるアプリと競合していることが原因のようなので、epgstation を root 権限で起動し、save することで問題が解決した。なのでインストール時に
$ sudo pm2 start dist/index.js --name "epgstation"
$ sudo pm2 savde
node program manager (pm2)†
管理画面(Web インターフェース)†
| サービス | 機能 | アドレス | 確認ポイント |
| mirakurun | 録画チューナーサーバー | https://<インストール対象サーバIP>:40772/ | ログ |
| チューナー登録状況 |
| epgstation | ユーザーインターフェース | http://<インストール対象サーバIP>:8888/ | 番組表が見えているか |
| 予約録画出来るか |
| チューナー数分録画出来るか |
| キーワード予約録画出来るか |
参考 URL†