TrueNAS SCALE DTV Server

DebianベースでのTrueNAS「TrueNAS SCALE」がリリースされたときから自分は録画サーバーとして動かすことを考えていました。

TrueNAS SCALE 22.12.3.3 をベースに試していきます。

TrueNASは録画サーバーとしてどの程度活用できるのでしょうか・・・。

手元にあるPT2/PT3を使用してテストしてみます。

LinuxにPT2/PT3のサポートが追加されているのでそのまま刺せば動くと思われます。

 

バージョン確認

TrueNAS SCALE インストールを行い、バージョン確認をしておきます。

WebUIからシェルを開き、sudo su -でルートユーザーに移るか、実機のLinuxでCLIコンソールを開きます。

root@truenas[~]# lsb_release -d
Description:    Debian GNU/Linux 11 (bullseye)
root@truenas[~]# cat /etc/debian_version 
11.5
root@truenas[~]# uname -a
Linux truenas 5.15.107+truenas #1 SMP Tue Jul 25 00:05:02 UTC 2023 x86_64 GNU/Linux
root@truenas[~]# 

TrueNAS SCALE 22.12.3.3のカーネルのバージョンは、5.15.107のようです。

ここを確認する限り、カーネルバージョンv2.6.32以降ではPT1サポート、v3.18以降でPT3サポートのようです。

PT2/PT3を動かすことを前提にするとDVBデバイス数が重要になります。

 

アースソフト PT2/PT3 のDVBデバイス認識数に関して

これは、PT2/PT3以外にも、DVBとして認識させるドライバを使用する場合、Digital Devices Max M4などの他のチューナーデバイスも関係します。

Linuxでは、デフォルトで認識するDVBデバイスの数に制限があります。

DVB周りのコードを確認すると初期では8デバイスが最大、カーネルバージョンv4.10以降では16デバイスに変更されています。

つまり、最近のLinuxであれば16デバイスは認識されることになります。

root@truenas[~]# grep "DVB_MAX_ADAPTERS" /lib/modules/$(uname -r)/build/.config
CONFIG_DVB_MAX_ADAPTERS=16
root@truenas[~]# 

PT2/PT3では4チューナー(地デジx2, BS/CSx2)搭載なので4デバイスとして認識されます。

上限が16デバイスとすると、チューナーカード4枚までは搭載可能ということになります。

 

DVBデバイスの上限数の設定方法

カーネルコンパイルが必要で結構手間がかかります。

DVBデバイス数の上限値は以下のファイルで設定されています。

/usr/src/linux-headers-5.15.107+truenas/include/media/dvbdev.h

vim等で開くと以下のようになっています。

     30 #if defined(CONFIG_DVB_MAX_ADAPTERS) && CONFIG_DVB_MAX_ADAPTERS > 0
     31   #define DVB_MAX_ADAPTERS CONFIG_DVB_MAX_ADAPTERS
     32 #else
     33   #define DVB_MAX_ADAPTERS 16
     34 #endif

33行目で16デバイスと設定されているので、ここを変更してビルドし直すことによって、上限数を変更できます。

TrueNAS上でカーネルまで触ってしまうと運用上どうかとは思うので、設定は変更しない方針にしようとは思います。

 

チューナーカードの確認

PT2の認識でテストしてみます。

root@truenas[~]# lspci
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v2/Ivy Bridge DRAM Controller (rev 09)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)
00:01.1 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v2/Ivy Bridge Graphics Controller (rev 09)
00:06.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)
00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller (rev 04)
00:16.0 Communication controller: Intel Corporation 7 Series/C216 Chipset Family MEI Controller #1 (rev 04)
00:1a.0 USB controller: Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller #2 (rev 04)
00:1b.0 Audio device: Intel Corporation 7 Series/C216 Chipset Family High Definition Audio Controller (rev 04)
00:1c.0 PCI bridge: Intel Corporation 7 Series/C216 Chipset Family PCI Express Root Port 1 (rev c4)
00:1c.5 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 6 (rev c4)
00:1c.6 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 7 (rev c4)
00:1d.0 USB controller: Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller #1 (rev 04)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev a4)
00:1f.0 ISA bridge: Intel Corporation C216 Series Chipset LPC Controller (rev 04)
00:1f.2 SATA controller: Intel Corporation 7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode] (rev 04)
00:1f.3 SMBus: Intel Corporation 7 Series/C216 Chipset Family SMBus Controller (rev 04)
01:00.0 Ethernet controller: Mellanox Technologies MT27520 Family [ConnectX-3 Pro]
02:00.0 Serial Attached SCSI controller: Broadcom / LSI SAS2308 PCI-Express Fusion-MPT SAS-2 (rev 05)
04:00.0 PCI bridge: Microsemi / PMC / IDT PES12N3A 12-lane 3-Port PCI Express Switch (rev 0e)
05:02.0 PCI bridge: Microsemi / PMC / IDT PES12N3A 12-lane 3-Port PCI Express Switch (rev 0e)
05:04.0 PCI bridge: Microsemi / PMC / IDT PES12N3A 12-lane 3-Port PCI Express Switch (rev 0e)
06:00.0 Ethernet controller: Intel Corporation 82571EB/82571GB Gigabit Ethernet Controller (Copper) (rev 06)
06:00.1 Ethernet controller: Intel Corporation 82571EB/82571GB Gigabit Ethernet Controller (Copper) (rev 06)
07:00.0 Ethernet controller: Intel Corporation 82571EB/82571GB Gigabit Ethernet Controller (Copper) (rev 06)
07:00.1 Ethernet controller: Intel Corporation 82571EB/82571GB Gigabit Ethernet Controller (Copper) (rev 06)
08:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection
09:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection
0a:00.0 Multimedia controller: Xilinx Corporation Device 222a (rev 01)
0a:03.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (rev c0)
root@truenas[~]# 
root@truenas[~]# lspci -v -s 0a:00.0
0a:00.0 Multimedia controller: Xilinx Corporation Device 222a (rev 01)
        Subsystem: Device ef11:ddd5
        Flags: bus master, medium devsel, latency 32, IOMMU group 12
        Memory at f0a01000 (32-bit, non-prefetchable) [size=4K]
        Kernel driver in use: earth-pt1
        Kernel modules: earth_pt1

root@truenas[~]# 

lspciコマンドでこのように認識されています。

root@truenas[~]# cd /dev/dvb/
root@truenas[/dev/dvb]# ls
adapter0  adapter1  adapter2  adapter3
root@truenas[/dev/dvb]# 

DVBデバイスとしても見えています。

PT2なので地デジチューナーが2デバイス、BS/CSチューナーが2デバイスです。

アダプタが0~3として見えていますが、それぞれ地デジチューナーとBS/CSチューナーを判別するにはdmesg等で確認します。

root@truenas[~]# dmesg | grep DVB
[   13.973748] dvbdev: DVB: registering new adapter (earth-pt1)
[   13.987982] dvbdev: DVB: registering new adapter (earth-pt1)
[   13.989689] dvbdev: DVB: registering new adapter (earth-pt1)
[   14.025355] dvbdev: DVB: registering new adapter (earth-pt1)
[   14.189174] earth-pt1 0000:0a:00.0: DVB: registering adapter 0 frontend 0 (Toshiba TC90522 ISDB-S module)...
[   14.481922] dvb_pll 10-0061: DVB Simple Tuner attached.
[   14.481994] earth-pt1 0000:0a:00.0: DVB: registering adapter 1 frontend 0 (Toshiba TC90522 ISDB-T module)...
[   14.559518] earth-pt1 0000:0a:00.0: DVB: registering adapter 2 frontend 0 (Toshiba TC90522 ISDB-S module)...
[   14.634837] dvb_pll 12-0061: DVB Simple Tuner attached.
[   14.634872] earth-pt1 0000:0a:00.0: DVB: registering adapter 3 frontend 0 (Toshiba TC90522 ISDB-T module)...
root@truenas[~]# 

このように、Adapter0とAdapter2が、ISDB-S(BS/CS)、Adapter1とAdapter3がISDB-T(地デジ)ということがわかります。

 

TrueNASでaptを有効にする方法

TrueNAS SCALEではaptコマンドが一切受け付けない設定になっています。

WebUIで操作する前提で作られ保守されているディストリビューションですので、aptコマンドを使用して好きにアプリケーションをインストールする行為は危険になります。

しかしながら、ネイティブでTVチューナー等を使用する場合には、各種コマンドが必要になりますので、aptを有効にします。

繰り返しになりますが危険な行為です。

最低限の操作を心がけて、必要ないときは元に戻すことを推奨します。

 

aptコマンドが無効にされている方法

root@truenas[~]# ll /bin/apt*
-rw-r--r-- 1 root  18664 Jun 10  2021 /bin/apt
-rw-r--r-- 1 root  88376 Jun 10  2021 /bin/apt-cache
-rw-r--r-- 1 root  26936 Jun 10  2021 /bin/apt-cdrom
-rw-r--r-- 1 root  26856 Jun 10  2021 /bin/apt-config
-rw-r--r-- 1 root  22848 Jun 10  2021 /bin/apt-extracttemplates
-rw-r--r-- 1 root 276800 Jun 10  2021 /bin/apt-ftparchive
-rw-r--r-- 1 root  47416 Jun 10  2021 /bin/apt-get
-rw-r--r-- 1 root  28191 Jun 10  2021 /bin/apt-key
-rw-r--r-- 1 root  51512 Jun 10  2021 /bin/apt-mark
-rw-r--r-- 1 root  39152 Jun 10  2021 /bin/apt-sortpkgs
root@truenas[~]# ll /usr/bin/dpkg*
-rw-r--r-- 1 root 313888 Aug 31  2022 /usr/bin/dpkg
-rwxr-xr-x 1 root  13832 Aug 31  2022 /usr/bin/dpkg-architecture*
-rwxr-xr-x 1 root   7565 Aug 31  2022 /usr/bin/dpkg-buildflags*
-rwxr-xr-x 1 root  31148 Aug 31  2022 /usr/bin/dpkg-buildpackage*
-rwxr-xr-x 1 root   7625 Aug 31  2022 /usr/bin/dpkg-checkbuilddeps*
-rwxr-xr-x 1 root 162184 Aug 31  2022 /usr/bin/dpkg-deb*
-rwxr-xr-x 1 root  18799 Aug 18  2021 /usr/bin/dpkg-depcheck*
-rwxr-xr-x 1 root   2782 Aug 31  2022 /usr/bin/dpkg-distaddfile*
-rwxr-xr-x 1 root 154048 Aug 31  2022 /usr/bin/dpkg-divert*
-rwxr-xr-x 1 root   1005 Aug 18  2021 /usr/bin/dpkg-genbuilddeps*
-rwxr-xr-x 1 root  17106 Aug 31  2022 /usr/bin/dpkg-genbuildinfo*
-rwxr-xr-x 1 root  17507 Aug 31  2022 /usr/bin/dpkg-genchanges*
-rwxr-xr-x 1 root  14536 Aug 31  2022 /usr/bin/dpkg-gencontrol*
-rwxr-xr-x 1 root  10902 Aug 31  2022 /usr/bin/dpkg-gensymbols*
-rwxr-xr-x 1 root  21163 Aug 31  2022 /usr/bin/dpkg-maintscript-helper*
-rwxr-xr-x 1 root   8532 Aug 31  2022 /usr/bin/dpkg-mergechangelogs*
-rwxr-xr-x 1 root   6789 Aug 31  2022 /usr/bin/dpkg-name*
-rwxr-xr-x 1 root   4947 Aug 31  2022 /usr/bin/dpkg-parsechangelog*
-rwxr-xr-x 1 root 166328 Aug 31  2022 /usr/bin/dpkg-query*
-rwxr-xr-x 1 root   4150 Aug 31  2022 /usr/bin/dpkg-realpath*
-rwxr-xr-x 1 root   8705 Aug 31  2022 /usr/bin/dpkg-scanpackages*
-rwxr-xr-x 1 root   9174 Aug 31  2022 /usr/bin/dpkg-scansources*
-rwxr-xr-x 1 root  31700 Aug 31  2022 /usr/bin/dpkg-shlibdeps*
-rwxr-xr-x 1 root  23106 Aug 31  2022 /usr/bin/dpkg-source*
-rwxr-xr-x 1 root 125272 Aug 31  2022 /usr/bin/dpkg-split*
-rwxr-xr-x 1 root  63608 Aug 31  2022 /usr/bin/dpkg-statoverride*
-rwxr-xr-x 1 root  80216 Aug 31  2022 /usr/bin/dpkg-trigger*
-rwxr-xr-x 1 root   3262 Aug 31  2022 /usr/bin/dpkg-vendor*
root@truenas[~]# 

このように実行権限が無効になっています。

chmodで権限を変更することによってaptが実行可能になります。

root@truenas[~]# chmod +x /bin/apt* /usr/bin/dpkg
root@truenas[~]# chmod -x /bin/apt* /usr/bin/dpkg

+xで実行権限を付与、-xで取り消しになり元の状態に戻ります。

 

そのままだとDebianのレポジトリが消されているため、aptで入るパッケージがとても少ないです。

/etc/apt/sources.list

を編集して以下のレポジトリを追記します。

deb http://deb.debian.org/debian bullseye main
deb-src http://deb.debian.org/debian bullseye main

そして、apt updateコマンドを実行すればDebianレポジトリの各種パッケージを取ってこれるようになります。

echo "\n\ndeb http://deb.debian.org/debian bullseye main">>/etc/apt/sources.list
echo "deb-src http://deb.debian.org/debian bullseye main\n">>/etc/apt/sources.list

こんな感じのコマンドで追記してもOKです。

 

カードリーダーのテスト

lsusbコマンドはインストールされていません。

インストールしなくても動作はしますが、認識されているか確認するためにlsusbを入れておきます。

 

lsusbコマンドのインストール

apt install usbutils

でインストールできます。

root@truenas[~]# lsusb
zsh: command not found: lsusb
root@truenas[~]# apt install usbutils
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
  usbutils
0 upgraded, 1 newly installed, 0 to remove and 116 not upgraded.
Need to get 79.3 kB of archives.
After this operation, 333 kB of additional disk space will be used.
Get:1 http://apt.tn.ixsystems.com/apt-direct/bluefin/22.12.3/debian bullseye/main amd64 usbutils amd64 1:013-3 [79.3 kB]
Fetched 79.3 kB in 1s (80.4 kB/s)   
Selecting previously unselected package usbutils.
(Reading database ... 115149 files and directories currently installed.)
Preparing to unpack .../usbutils_1%3a013-3_amd64.deb ...
Unpacking usbutils (1:013-3) ...
Setting up usbutils (1:013-3) ...
Processing triggers for man-db (2.9.4-2) ...
root@truenas[~]# lsusb               
root@truenas[~]# 

USBデバイスの認識が確認できます。

(上記例では仮想マシンでの動作なのでUSBデバイスが一切見えていません)

 

pscs_scanコマンドのインストール

pcscdは元から入っていますが、pcsc-toolsパッケージは入っていません。

pcsc_scanコマンドにてカードリーダーの認識、カードの認識テストまで行えます。

こちらも必須ではないですが、カードが認識されるかどうか確認するために入れておきます。

pcsc-toolsパッケージに入っているのでインストールします。

apt install pcsc-tools

これでインストールできます。

root@truenas[~]# pcsc_scan
zsh: command not found: pcsc_scan
root@truenas[~]# apt install pcsc-tools
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  gir1.2-atk-1.0 gir1.2-freedesktop gir1.2-gdkpixbuf-2.0 gir1.2-gtk-3.0 gir1.2-harfbuzz-0.0 gir1.2-pango-1.0 libcairo-gobject-perl libcairo-perl
  libextutils-depends-perl libextutils-pkgconfig-perl libglib-object-introspection-perl libglib-perl libgtk3-perl libpangoxft-1.0-0 libpcsc-perl libxft2
  pkg-config
Suggested packages:
  libfont-freetype-perl
The following NEW packages will be installed:
  gir1.2-atk-1.0 gir1.2-freedesktop gir1.2-gdkpixbuf-2.0 gir1.2-gtk-3.0 gir1.2-harfbuzz-0.0 gir1.2-pango-1.0 libcairo-gobject-perl libcairo-perl
  libextutils-depends-perl libextutils-pkgconfig-perl libglib-object-introspection-perl libglib-perl libgtk3-perl libpangoxft-1.0-0 libpcsc-perl libxft2
  pcsc-tools pkg-config
0 upgraded, 18 newly installed, 0 to remove and 116 not upgraded.
Need to get 2575 kB of archives.
After this operation, 5720 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://deb.debian.org/debian bullseye/main amd64 gir1.2-gtk-3.0 amd64 3.24.24-4+deb11u3 [259 kB]
Get:2 http://apt.tn.ixsystems.com/apt-direct/bluefin/22.12.3/debian bullseye/main amd64 gir1.2-atk-1.0 amd64 2.36.0-2 [26.0 kB]
Get:3 http://apt.tn.ixsystems.com/apt-direct/bluefin/22.12.3/debian bullseye/main amd64 gir1.2-freedesktop amd64 1.66.1-1+b1 [33.4 kB]
Get:4 http://apt.tn.ixsystems.com/apt-direct/bluefin/22.12.3/debian-security bullseye-security/main amd64 gir1.2-gdkpixbuf-2.0 amd64 2.42.2+dfsg-1+deb11u1 [19.9 kB]
Get:5 http://apt.tn.ixsystems.com/apt-direct/bluefin/22.12.3/debian bullseye/main amd64 gir1.2-harfbuzz-0.0 amd64 2.7.4-1 [1154 kB]
Get:6 http://apt.tn.ixsystems.com/apt-direct/bluefin/22.12.3/debian bullseye/main amd64 libxft2 amd64 2.3.2-2 [57.2 kB]
Get:7 http://apt.tn.ixsystems.com/apt-direct/bluefin/22.12.3/debian bullseye/main amd64 libpangoxft-1.0-0 amd64 1.46.2-3 [43.5 kB]
Get:8 http://apt.tn.ixsystems.com/apt-direct/bluefin/22.12.3/debian bullseye/main amd64 gir1.2-pango-1.0 amd64 1.46.2-3 [53.0 kB]
Get:9 http://apt.tn.ixsystems.com/apt-direct/bluefin/22.12.3/debian bullseye/main amd64 libextutils-depends-perl all 0.8000-1 [18.9 kB]
Get:10 http://apt.tn.ixsystems.com/apt-direct/bluefin/22.12.3/debian bullseye/main amd64 pkg-config amd64 0.29.2-1 [65.1 kB]
Get:11 http://apt.tn.ixsystems.com/apt-direct/bluefin/22.12.3/debian bullseye/main amd64 libextutils-pkgconfig-perl all 1.16-1.1 [10.9 kB]
Get:12 http://apt.tn.ixsystems.com/apt-direct/bluefin/22.12.3/debian bullseye/main amd64 libcairo-perl amd64 1.109-1 [100 kB]
Get:13 http://apt.tn.ixsystems.com/apt-direct/bluefin/22.12.3/debian bullseye/main amd64 libglib-perl amd64 3:1.329.3-1+b1 [350 kB]
Get:14 http://apt.tn.ixsystems.com/apt-direct/bluefin/22.12.3/debian bullseye/main amd64 libcairo-gobject-perl amd64 1.005-2+b2 [12.3 kB]
Get:15 http://apt.tn.ixsystems.com/apt-direct/bluefin/22.12.3/debian bullseye/main amd64 libglib-object-introspection-perl amd64 0.049-1+b1 [68.9 kB]
Get:16 http://apt.tn.ixsystems.com/apt-direct/bluefin/22.12.3/debian bullseye/main amd64 libgtk3-perl all 0.038-1 [34.7 kB]
Get:17 http://apt.tn.ixsystems.com/apt-direct/bluefin/22.12.3/debian bullseye/main amd64 libpcsc-perl amd64 1.4.14-5+b1 [47.0 kB]
Get:18 http://apt.tn.ixsystems.com/apt-direct/bluefin/22.12.3/debian bullseye/main amd64 pcsc-tools amd64 1.5.7-1 [221 kB]                                     
Fetched 2575 kB in 6s (400 kB/s)                                                                                                                               
Selecting previously unselected package gir1.2-atk-1.0:amd64.
(Reading database ... 115161 files and directories currently installed.)
Preparing to unpack .../00-gir1.2-atk-1.0_2.36.0-2_amd64.deb ...
Unpacking gir1.2-atk-1.0:amd64 (2.36.0-2) ...
Selecting previously unselected package gir1.2-freedesktop:amd64.
Preparing to unpack .../01-gir1.2-freedesktop_1.66.1-1+b1_amd64.deb ...
Unpacking gir1.2-freedesktop:amd64 (1.66.1-1+b1) ...
Selecting previously unselected package gir1.2-gdkpixbuf-2.0:amd64.
Preparing to unpack .../02-gir1.2-gdkpixbuf-2.0_2.42.2+dfsg-1+deb11u1_amd64.deb ...
Unpacking gir1.2-gdkpixbuf-2.0:amd64 (2.42.2+dfsg-1+deb11u1) ...
Selecting previously unselected package gir1.2-harfbuzz-0.0:amd64.
Preparing to unpack .../03-gir1.2-harfbuzz-0.0_2.7.4-1_amd64.deb ...
Unpacking gir1.2-harfbuzz-0.0:amd64 (2.7.4-1) ...
Selecting previously unselected package libxft2:amd64.
Preparing to unpack .../04-libxft2_2.3.2-2_amd64.deb ...
Unpacking libxft2:amd64 (2.3.2-2) ...
Selecting previously unselected package libpangoxft-1.0-0:amd64.
Preparing to unpack .../05-libpangoxft-1.0-0_1.46.2-3_amd64.deb ...
Unpacking libpangoxft-1.0-0:amd64 (1.46.2-3) ...
Selecting previously unselected package gir1.2-pango-1.0:amd64.
Preparing to unpack .../06-gir1.2-pango-1.0_1.46.2-3_amd64.deb ...
Unpacking gir1.2-pango-1.0:amd64 (1.46.2-3) ...
Selecting previously unselected package gir1.2-gtk-3.0:amd64.
Preparing to unpack .../07-gir1.2-gtk-3.0_3.24.24-4+deb11u3_amd64.deb ...
Unpacking gir1.2-gtk-3.0:amd64 (3.24.24-4+deb11u3) ...
Selecting previously unselected package libextutils-depends-perl.
Preparing to unpack .../08-libextutils-depends-perl_0.8000-1_all.deb ...
Unpacking libextutils-depends-perl (0.8000-1) ...
Selecting previously unselected package pkg-config.
Preparing to unpack .../09-pkg-config_0.29.2-1_amd64.deb ...
Unpacking pkg-config (0.29.2-1) ...
Selecting previously unselected package libextutils-pkgconfig-perl.
Preparing to unpack .../10-libextutils-pkgconfig-perl_1.16-1.1_all.deb ...
Unpacking libextutils-pkgconfig-perl (1.16-1.1) ...
Selecting previously unselected package libcairo-perl:amd64.
Preparing to unpack .../11-libcairo-perl_1.109-1_amd64.deb ...
Unpacking libcairo-perl:amd64 (1.109-1) ...
Selecting previously unselected package libglib-perl:amd64.
Preparing to unpack .../12-libglib-perl_3%3a1.329.3-1+b1_amd64.deb ...
Unpacking libglib-perl:amd64 (3:1.329.3-1+b1) ...
Selecting previously unselected package libcairo-gobject-perl.
Preparing to unpack .../13-libcairo-gobject-perl_1.005-2+b2_amd64.deb ...
Unpacking libcairo-gobject-perl (1.005-2+b2) ...
Selecting previously unselected package libglib-object-introspection-perl.
Preparing to unpack .../14-libglib-object-introspection-perl_0.049-1+b1_amd64.deb ...
Unpacking libglib-object-introspection-perl (0.049-1+b1) ...
Selecting previously unselected package libgtk3-perl.
Preparing to unpack .../15-libgtk3-perl_0.038-1_all.deb ...
Unpacking libgtk3-perl (0.038-1) ...
Selecting previously unselected package libpcsc-perl.
Preparing to unpack .../16-libpcsc-perl_1.4.14-5+b1_amd64.deb ...
Unpacking libpcsc-perl (1.4.14-5+b1) ...
Selecting previously unselected package pcsc-tools.
Preparing to unpack .../17-pcsc-tools_1.5.7-1_amd64.deb ...
Unpacking pcsc-tools (1.5.7-1) ...
Setting up libxft2:amd64 (2.3.2-2) ...
Setting up gir1.2-freedesktop:amd64 (1.66.1-1+b1) ...
Setting up libpangoxft-1.0-0:amd64 (1.46.2-3) ...
Setting up gir1.2-gdkpixbuf-2.0:amd64 (2.42.2+dfsg-1+deb11u1) ...
Setting up gir1.2-atk-1.0:amd64 (2.36.0-2) ...
Setting up libpcsc-perl (1.4.14-5+b1) ...
Setting up gir1.2-harfbuzz-0.0:amd64 (2.7.4-1) ...
Setting up libextutils-depends-perl (0.8000-1) ...
Setting up gir1.2-pango-1.0:amd64 (1.46.2-3) ...
Setting up pkg-config (0.29.2-1) ...
Setting up pcsc-tools (1.5.7-1) ...
Setting up libextutils-pkgconfig-perl (1.16-1.1) ...
Setting up gir1.2-gtk-3.0:amd64 (3.24.24-4+deb11u3) ...
Setting up libcairo-perl:amd64 (1.109-1) ...
Setting up libglib-perl:amd64 (3:1.329.3-1+b1) ...
Setting up libcairo-gobject-perl (1.005-2+b2) ...
Setting up libglib-object-introspection-perl (0.049-1+b1) ...
Setting up libgtk3-perl (0.038-1) ...
Processing triggers for man-db (2.9.4-2) ...
Processing triggers for mailcap (3.69) ...
Processing triggers for libc-bin (2.31-13+deb11u4) ...
root@truenas[~]#   
root@truenas[~]# pcsc_scan             
Using reader plug'n play mechanism
Scanning present readers...
Waiting for the first reader... - 

pcsc_scanコマンドが使えるようになります。

B-CASカードの認識がうまくいくかテストしておきましょう。

 

Mirakurunを動かす

チューナーカードを複数のPCで共有したいのでMirakurunを動かします。

Dockerで動かす場合、Docker Composeが必要になりますが、TrueNAS SCALE上にはインストールされていません。

また、Dockerで動かす場合、コンテナ内でスマートカードを操作する関係上、ホストからpcscdを削除する必要があります。

その上、2023/10にリリースされる予定のTrueNAS Scale Cobiaでは、containerdへの切り替えでDockerは削除される予定とのことです。

そのため、環境は汚れてしまいますが、Docker上で動かさずにTrueNAS SCALE上で直接動かすことにします。

 

Mirakurunインストール方法

Mirakurunをインストールします。

2023/09時点での最新は3.9.0-rc.4でした。

以下のマニュアルに沿ってインストール作業を進めていきます。

curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo npm install pm2 -g
sudo npm install mirakurun -g --unsafe-perm --foreground-scripts --production

このような感じで簡単にインストールは終わります。

root@truenas[~]# mirakurun status
┌────┬─────────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name                │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├────┼─────────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
0  │ mirakurun-server    │ default     │ 3.9.0-… │ fork    │ 23500    │ 2D     │ 3    │ online    │ 0%       │ 84.3mb   │ root     │ disabled │
└────┴─────────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
root@truenas[~]# 

起動状況を確認しましょう。

onlineではない場合は、mirakurun startコマンドで上がってくると思われます。

ここまで来ると、WebUIも使えますので、サーバーのIPアドレスの末尾に:40772を付け、ブラウザでアクセスしましょう。

Mirakurunが動いたので次にTVチューナーを動かせるようにします。

recpt1やrecdvb、dvbv5-zapがチューナーを扱うためのコマンドとして有名です。 しかしそれだけだとB-CASカードでのデコードができませんので、B25関連ツールも必要になります。

 

デコーダ(arib-b25-stream-test)のインストール

libarib25 (STZ版)も有名ですが、今回はnpmでarib-b25-stream-testをインストールします。

Mirakurunはこのコマンドを使用して受信したストリームをデコードします。

デコーダ使用時にはB-CASカードを使用するので、カードは常に挿しておきます。

apt install pkg-config
npm install arib-b25-stream-test -g --unsafe

pkg-configが必要なので事前にインストールしておきます。

あとはnpmでarib-b25-stream-testをインストールします。

root@truenas[~]# apt install pkg-config
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
  pkg-config
0 upgraded, 1 newly installed, 0 to remove and 7 not upgraded.
Need to get 65.1 kB of archives.
After this operation, 209 kB of additional disk space will be used.
Get:1 http://apt.tn.ixsystems.com/apt-direct/bluefin/22.12.3/debian bullseye/main amd64 pkg-config amd64 0.29.2-1 [65.1 kB]
Fetched 65.1 kB in 1s (56.1 kB/s)                       
Selecting previously unselected package pkg-config.
(Reading database ... 123766 files and directories currently installed.)
Preparing to unpack .../pkg-config_0.29.2-1_amd64.deb ...
Unpacking pkg-config (0.29.2-1) ...
Setting up pkg-config (0.29.2-1) ...
Processing triggers for man-db (2.9.4-2) ...
root@truenas[~]# 
root@truenas[~]# npm install arib-b25-stream-test -g --unsafe 

added 1 package in 2s
root@truenas[~]# 

arib-b25-stream-testコマンドが入ります。

 

dvbv5-zapコマンドのインストール

recpt1 (STZ版)も有名ですが、録画用のフロントエンドのコマンドとして、dvbv5-zapをインストールします。

Mirakurunはこのコマンドを叩き、チューナーの制御を行います。

aptでdvb-toolsに入っているため、このパッケージをインストールするだけで大丈夫です。

root@truenas[~]# apt install dvb-tools
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  libdvbv5-0
The following NEW packages will be installed:
  dvb-tools libdvbv5-0
0 upgraded, 2 newly installed, 0 to remove and 116 not upgraded.
Need to get 286 kB of archives.
After this operation, 746 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://apt.tn.ixsystems.com/apt-direct/bluefin/22.12.3/debian bullseye/main amd64 libdvbv5-0 amd64 1.20.0-2 [174 kB]
Get:2 http://apt.tn.ixsystems.com/apt-direct/bluefin/22.12.3/debian bullseye/main amd64 dvb-tools amd64 1.20.0-2 [113 kB]
Fetched 286 kB in 2s (163 kB/s)   
Selecting previously unselected package libdvbv5-0:amd64.
(Reading database ... 124058 files and directories currently installed.)
Preparing to unpack .../libdvbv5-0_1.20.0-2_amd64.deb ...
Unpacking libdvbv5-0:amd64 (1.20.0-2) ...
Selecting previously unselected package dvb-tools.
Preparing to unpack .../dvb-tools_1.20.0-2_amd64.deb ...
Unpacking dvb-tools (1.20.0-2) ...
Setting up libdvbv5-0:amd64 (1.20.0-2) ...
Setting up dvb-tools (1.20.0-2) ...
Processing triggers for man-db (2.9.4-2) ...
Processing triggers for libc-bin (2.31-13+deb11u4) ...
root@truenas[~]# 

aptで一発で入ります。

また、日本向け設定ファイルを落としておきます。

こちらから落とします。

root@truenas[~]# cd /usr/src/
root@truenas[/usr/src]# git clone https://github.com/Chinachu/dvbconf-for-isdb.git
Cloning into 'dvbconf-for-isdb'...
remote: Enumerating objects: 30, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 30 (delta 1), reused 7 (delta 1), pack-reused 22
Receiving objects: 100% (30/30), 4.28 KiB | 4.28 MiB/s, done.
Resolving deltas: 100% (5/5), done.
root@truenas[/usr/src]# 
root@truenas[/usr/src]# ls
dvbconf-for-isdb  linux-headers-5.15.107+truenas  nvidia-current-515.65.01  wireguard-1.0.20210219
root@truenas[/usr/src]# cd dvbconf-for-isdb 
root@truenas[/usr/src/dvbconf-for-isdb]# ls
README.md  conf
root@truenas[/usr/src/dvbconf-for-isdb]# cd conf 
root@truenas[/usr/src/dvbconf-for-isdb/conf]# ls
dvbv5_channels_isdbs.conf  dvbv5_channels_isdbt.conf
root@truenas[/usr/src/dvbconf-for-isdb/conf]# 

とりあえず適当に/usr/srcに入れました。

dvbv5-zap -a 1 -c /usr/src/dvbconf-for-isdb/conf/dvbv5_channels_isdbt.conf -r -P 27

このように実行すると実際に受信可能かどうかなど判別できると思われます。

(上記ではAdapter1で27チャンネル、NHKを受信する設定)

 

Mirakurun設定方法

WebUIから設定を行います。

Configを開き、Tunerからチューナーの設定をしましょう。

デフォルトでいくつかの設定が入っていますが、今回はチューナー数が4ですので、4つ設定を入れます。

adapter0 BS/CS

Command: dvbv5-zap -a 0 -c /usr/src/dvbconf-for-isdb/conf/dvbv5_channels_isdbs.conf -r -P

DVB Device Path: /dev/dvb/adapter0/dvr0

Decoder: arib-b25-stream-test

 

adapter1 GR

Command: dvbv5-zap -a 1 -c /usr/src/dvbconf-for-isdb/conf/dvbv5_channels_isdbt.conf -r -P

DVB Device Path: /dev/dvb/adapter1/dvr0

Decoder: arib-b25-stream-test

 

Adapter0とAdapter1に対する設定例です。

名前は適当に付けてもOKですが、コマンドとDVBデバイスパスは正確に設定します。

注意点については、-a引数の数字をアダプタの数字に合わせること、また設定ファイルは「isdbt.conf」と「isdbs.conf」がありますので注意しましょう。

デバイスパスは、アダプタの数字以下、dvr0に関しては数字が変化しません。

 

チャンネルスキャン

別マシンのWindowsのコマンドプロンプトからMirakurunのAPIを叩き、チャンネルスキャンを開始させます。

>curl -X PUT "http://[サーバーのIPアドレス]:40772/api/config/channels/scan"
channel scanning... (type: "GR")

channel: "13" (1/50) [2%] ...
-> no signal. [Error: no available tuners]

channel: "14" (2/50) [4%] ...
-> no signal. [Error: no available tuners]

channel: "15" (3/50) [6%] ...
-> no signal. [Error: no available tuners]

channel: "16" (4/50) [8%] ...
-> 1 existing config found.
-> {"name":"TOKYO MX","type":"GR","channel":"16"}

放送波が入らないと認識されないと思いますので、昼間にチャンネルスキャンを行ったほうが良いでしょう。

 

TVTestでの動作確認