Ubuntu24.04とTBS 6281SEとrecisdbで録画環境を作る

PX-MLT5PEを買おうとしたら大分値段が上がっていたので、とりあえず TBS 6281SE を買ってみました。
recisdb単体で録画できる所まで記載してます。
あとは各々の環境に合わせてdockerなり入れて楽しい録画ライフを!

今回の環境

# cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04.2 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.2 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo
# update-alternatives --set editor /usr/bin/vim.basic
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/editor (editor) in manual mode
# adduser rec
# visudo 

TBS6281SE User Guide
https://www.tbsiptv.com/index.php?route=product/download/drivers&id=174

チューナーが認識されてるか確認

# lspci -vvv | grep -B 1 6281
01:00.0 Multimedia controller: TBS Technologies DVB Tuner PCIe Card
        Subsystem: Device 6281:0003

諸々必要な奴をインストール

# apt install -y patchutils dvb-tools make build-essential 

https://github.com/tbsdtv/linux_media/wiki を参考にしつつインストール

# mkdir tbsdriver
# cd tbsdriver
# git clone https://github.com/tbsdtv/media_build.git
# git clone --depth=1 https://github.com/tbsdtv/linux_media.git -b latest ./media

# cd media_build/
# sed -i '/v6.8-ccs.patch/ s/^/# /' backports/backports.txt 
# make dir DIR=../media
# make distclean
# ./install.sh

# cd ../
# wget http://www.tbsdtv.com/download/document/linux/tbs-tuner-firmwares_v1.0.tar.bz2
# tar jxvf tbs-tuner-firmwares_v1.0.tar.bz2 -C /lib/firmware/
# reboot 

インストール後frontendが見れるか確認

root@tiny-rec01:~# dmesg | grep frontend
[    3.649206] TBSECP3 driver 0000:01:00.0: DVB: registering adapter 0 frontend 0 (TurboSight TBS 6281TD DVB-T/T2/C ISDB-T/C ATSC1.0)...
[    3.778771] TBSECP3 driver 0000:01:00.0: DVB: registering adapter 1 frontend 0 (TurboSight TBS 6281TD DVB-T/T2/C ISDB-T/C ATSC1.0)...
root@tiny-rec01:~# ls -l /dev/dvb/
total 0
drwxr-xr-x 2 root root 120 Apr 26 08:01 adapter0
drwxr-xr-x 2 root root 120 Apr 26 08:01 adapter1

dvbv5-zap コマンドで受信できてるかテスト

# cd ~/
# git clone https://github.com/Chinachu/dvbconf-for-isdb.git
# cd dvbconf-for-isdb/conf/

# dvbv5-zap -a 0 -c dvbv5_channels_isdbt.conf -r -P 27 
using demux 'dvb0.demux0'
reading channels from file 'dvbv5_channels_isdbt.conf'
tuning to 557142857 Hz
dvb_dev_set_bufsize: buffer set to 6160384
pass all PIDs to TS
  dvb_set_pesfilter 8192
Carrier(0x03) Signal= -38.69dBm
Lock   (0x1f) Signal= -38.69dBm C/N= 30.37dB postBER= 1.00
          Layer A: Signal= 96.89% C/N= 72.07%
Lock   (0x1f) Signal= -38.69dBm C/N= 30.77dB postBER= 1.00
          Layer A: Signal= 96.89% C/N= 72.07%
DVR interface '/dev/dvb/adapter0/dvr0' can now be opened
Lock   (0x1f) Signal= -39.08dBm C/N= 30.87dB postBER= 1.00
          Layer A: Signal= 96.89% C/N= 72.07%
ケーブルが刺さってる状態
# dvbv5-zap -a 0 -c dvbv5_channels_isdbt.conf -r -P 27 
using demux 'dvb0.demux0'
reading channels from file '/root/media/dvbconf-for-isdb/conf/dvbv5_channels_isdbt.conf'
tuning to 557142857 Hz
dvb_dev_set_bufsize: buffer set to 6160384
pass all PIDs to TS
  dvb_set_pesfilter 8192
Carrier(0x03) Signal= -39.46dBm
Lock   (0x1f) Signal= -39.46dBm C/N= 28.07dB postBER= 1.00
          Layer A: Signal= 96.89% C/N= 67.07%
Lock   (0x1f) Signal= -39.46dBm C/N= 28.87dB postBER= 1.00
          Layer A: Signal= 96.89% C/N= 67.07%
DVR interface '/dev/dvb/adapter0/dvr0' can now be opened
Lock   (0x1f) Signal= -39.46dBm C/N= 29.47dB postBER= 1.00
          Layer A: Signal= 96.89% C/N= 69.07%
Lock   (0x1f) Signal= -39.46dBm C/N= 29.37dB postBER= 1.00
          Layer A: Signal= 96.89% C/N= 69.07%

ケーブルが抜けてる状態
# dvbv5-zap -a 0 -c dvbv5_channels_isdbt.conf -r -P 27 
using demux 'dvb0.demux0'
reading channels from file 'dvbv5_channels_isdbt.conf'
tuning to 557142857 Hz
dvb_dev_set_bufsize: buffer set to 6160384
pass all PIDs to TS
  dvb_set_pesfilter 8192
Carrier(0x03) Signal= -75.69dBm
Lock   (0x1f) Signal= -75.69dBm C/N= 2.87dB postBER= 1.00
          Layer A: Signal= 29.07% C/N= 4.00%
Lock   (0x1f) Signal= -75.69dBm C/N= 2.87dB postBER= 1.00
          Layer A: Signal= 29.07% C/N= 4.00%
DVR interface '/dev/dvb/adapter0/dvr0' can now be opened
Carrier(0x03) Signal= -76.49dBm postBER= 1.00
Carrier(0x03) Signal= -75.69dBm postBER= 1.00
Lock   (0x1f) Signal= -75.69dBm C/N= 2.67dB postBER= 1.00
          Layer A: Signal= 29.07% C/N= 4.00%

B25デコーダーのインストール
https://github.com/kazuki0824/recisdb-rs を見ながら粛々と入れる

信号レベルのチェック

# wget -P /tmp https://github.com/kazuki0824/recisdb-rs/releases/download/1.2.3/recisdb_1.2.3-1_amd64.deb
# apt install -y /tmp/recisdb_1.2.3-1_amd64.deb

同軸ケーブルが刺さってるとき
# recisdb checksignal --device /dev/dvb/adapter0/frontend0 --channel T27
[2025/04/26 12:44:19] INFO:     recisdb version 1.2.3
[2025/04/26 12:44:19] INFO:     Tuner: /dev/dvb/adapter0/frontend0
[2025/04/26 12:44:19] INFO:     Channel: T27 / Terrestrial: 27
[2025/04/26 12:44:20] INFO:     Checking for the frontend lock...
46.65dB

同軸ケーブルが抜けているとき
# recisdb checksignal --device /dev/dvb/adapter0/frontend0 --channel T27
[2025/04/26 12:44:41] INFO:     recisdb version 1.2.3
[2025/04/26 12:44:41] INFO:     Tuner: /dev/dvb/adapter0/frontend0
[2025/04/26 12:44:41] INFO:     Channel: T27 / Terrestrial: 27
[2025/04/26 12:44:42] INFO:     Checking for the frontend lock...
[2025/04/26 12:44:43] INFO:     Checking for the frontend lock...
0.41dB

実際に録画してみる

# recisdb tune --device /dev/dvb/adapter0/frontend0 --channel T27 --time 10 /tmp/test.m2ts
[2025/04/26 12:57:27] INFO:     recisdb version 1.2.3
[2025/04/26 12:57:27] INFO:     Tuner: /dev/dvb/adapter0/frontend0
[2025/04/26 12:57:27] INFO:     Channel: T27 / Terrestrial: 27
[2025/04/26 12:57:27] INFO:     Recording duration: 10 seconds
[2025/04/26 12:57:28] INFO:     Checking for the frontend lock...
[2025/04/26 12:57:28] INFO:     Decode: Enabled
[2025/04/26 12:57:28] INFO:     Recording...
[2025/04/26 12:57:38] INFO:     Decoder: 37445632B received, and 20150404B converted.


BCASカードが認識できなかった時
# recisdb tune --device /dev/dvb/adapter0/frontend0 --channel T27 --time 10 /tmp/test.m2ts
[2025/04/26 12:45:20] INFO:     recisdb version 1.2.3
[2025/04/26 12:45:20] INFO:     Tuner: /dev/dvb/adapter0/frontend0
[2025/04/26 12:45:20] INFO:     Channel: T27 / Terrestrial: 27
[2025/04/26 12:45:20] INFO:     Recording duration: 10 seconds
[2025/04/26 12:45:21] INFO:     Checking for the frontend lock...
[2025/04/26 12:45:21] INFO:     Decode: Enabled
[2025/04/26 12:45:21] ERROR:    Failed to initialize the decoder. (BCAS_CARD_ERROR_NO_SMART_CARD_READER)
[2025/04/26 12:45:21] INFO:     Disabling decoding and continue...
[2025/04/26 12:45:21] INFO:     Recording...

権限が足りなかった時
$ recisdb tune --device /dev/dvb/adapter0/frontend0 --channel T27 --time 10 /tmp/test.m2ts
[2025/05/31 15:46:12] INFO:     recisdb version 1.2.3
[2025/05/31 15:46:12] INFO:     Tuner: /dev/dvb/adapter0/frontend0
[2025/05/31 15:46:12] INFO:     Channel: T27 / Terrestrial: 27
[2025/05/31 15:46:12] INFO:     Recording duration: 10 seconds
ERROR    Permission denied while opening /dev/dvb/adapter0/frontend0
[2025/05/31 15:46:12] ERROR:    Cannot open the device. (Something went wrong while opening DVB frontend device)

再起動後録画できなくなるバグがあるので対策
Ubuntu 24.04 で DVB デバイスの環境だと OS再起動後にチューナーを開けない #126

# recisdb tune --device /dev/dvb/adapter0/frontend0 --channel T27 --time 10 /tmp/test.m2ts
[2025/05/31 15:15:17] INFO:     recisdb version 1.2.3
[2025/05/31 15:15:17] INFO:     Tuner: /dev/dvb/adapter0/frontend0
[2025/05/31 15:15:17] INFO:     Channel: T27 / Terrestrial: 27
[2025/05/31 15:15:17] INFO:     Recording duration: 10 seconds
[2025/05/31 15:15:17] ERROR:    The specified channel is invalid.
# recisdb tune --device /dev/dvb/adapter1/frontend0 --channel T27 --time 10 /tmp/test.m2ts
[2025/05/31 15:20:56] INFO:     recisdb version 1.2.3
[2025/05/31 15:20:56] INFO:     Tuner: /dev/dvb/adapter1/frontend0
[2025/05/31 15:20:56] INFO:     Channel: T27 / Terrestrial: 27
[2025/05/31 15:20:56] INFO:     Recording duration: 10 seconds
[2025/05/31 15:20:56] ERROR:    The specified channel is invalid.

dvbv5-zap コマンドを一回動かせばrecisdb コマンドでも録画できるようになる
dvbv5-zap -a 0 -c ./dvbconf-for-isdb/conf/dvbv5_channels_isdbt.conf -r -P 27 -t 1 -o /tmp/test2.m2ts
dvbv5-zap -a 1 -c ./dvbconf-for-isdb/conf/dvbv5_channels_isdbt.conf -r -P 27 -t 1 -o /tmp/test2.m2ts

# recisdb tune --device /dev/dvb/adapter0/frontend0 --channel T27 --time 10 /tmp/test.m2ts
[2025/05/31 15:28:07] INFO:     recisdb version 1.2.3
[2025/05/31 15:28:07] INFO:     Tuner: /dev/dvb/adapter0/frontend0
[2025/05/31 15:28:07] INFO:     Channel: T27 / Terrestrial: 27
[2025/05/31 15:28:07] INFO:     Recording duration: 10 seconds
[2025/05/31 15:28:08] INFO:     Checking for the frontend lock...
[2025/05/31 15:28:08] INFO:     Decode: Enabled
[2025/05/31 15:28:08] INFO:     Recording...
[2025/05/31 15:28:18] INFO:     Decoder: 37421056B received, and 20063736B converted.

再起動時 dvbv5-zap コマンドを一秒だけ動かす cron を仕込む

#crontab -e
@reboot /usr/bin/dvbv5-zap -a 0 -c /root/dvbconf-for-isdb/conf/dvbv5_channels_isdbt.conf -p 27 -t 1
@reboot /usr/bin/dvbv5-zap -a 1 -c /root/dvbconf-for-isdb/conf/dvbv5_channels_isdbt.conf -p 27 -t 1

おわり

余談
ISDB-Tが使えるかどうかは https://www.tbsiptv.com/filter のページから探すと分かりやすい