UbuntuにMirakurun・EDCB・KonomiTVインストール

Ubuntu Serverをインストールしたタイミングで、分かりにくく分散されていたMirakurunとKonomiTVセットアップLinux版のEDCBを使うMirakurun経由でLinux版EDCBを使う、を1つにまとめ、出来るだけ入力の手間が必要ないように、シンプルにまとめてみました。

OS:Ubuntu Server 24.04
TVチューナー:DTV02A-1T1S-U

TVチューナーのドライバインストール

#!/bin/bash
set -e

# ====== 初期準備 ======
echo "=== dtv ディレクトリ作成 ==="
mkdir -p ~/dtv
cd ~/dtv

# ====== PX4 ドライバ ダウンロード(curl版) ======
DRIVER_VERSION="0.5.5"
DRIVER_DEB="px4-drv-dkms_${DRIVER_VERSION}_all.deb"
DRIVER_URL="https://github.com/tsukumijima/px4_drv/releases/download/v${DRIVER_VERSION}/${DRIVER_DEB}"

echo "=== PX4 ドライバをダウンロード中: ${DRIVER_DEB} ==="
curl -L -o "${DRIVER_DEB}" "${DRIVER_URL}"

# ====== ドライバインストール ======
echo "=== PX4 ドライバをインストール中 ==="
sudo apt install -y "./${DRIVER_DEB}"

# ====== モジュールロード ======
echo "=== px4_drv をロード ==="
sudo modprobe px4_drv

# ====== 認識確認 ======
echo "=== モジュール確認 ==="
lsmod | grep -e ^px4_drv || echo "※px4_drvモジュールが読み込まれていません"

echo "=== デバイスファイル確認 ==="
ls /dev/isdb2056video* || echo "※デバイスが見つかりません"

echo "=== PX4 ドライバセットアップ完了 ==="

recisdbのインストール

通常版はKonomiTV作者のページで説明されている通り下記コマンドでインストールするだけです。

wget https://github.com/kazuki0824/recisdb-rs/releases/download/1.2.4/recisdb_1.2.4-1_amd64.deb
sudo apt install ./recisdb_1.2.4-1_amd64.deb

ここでは記録のために、こちらで紹介されていたカスタマイズ版のやり方を残しておきます。

libyakisobaやlibsobacasのインストール

#!/bin/bash
set -e

echo "=== 必要パッケージのインストール ==="
sudo apt update
sudo apt install -y \
    autoconf automake cmake libtool libpcsclite-dev \
    git build-essential pkg-config

# ====== dtv ディレクトリへ ======
mkdir -p ~/dtv
cd ~/dtv

# --------------------------------------------------------------
# libyakisoba
# --------------------------------------------------------------
echo "=== libyakisoba の取得 ==="
if [ ! -d "libyakisoba" ]; then
    git clone https://github.com/tsunoda14/libyakisoba.git
fi

echo "=== libyakisoba ビルド ==="
cd libyakisoba

# autoreconf 実行(sudo 不要)
autoreconf -i

mkdir -p build
cd build

# 一般ユーザで configure(sudo 不要)
../configure --sysconfdir=/usr/local/etc

# 一般ユーザで make(sudo 不要)
make -j"$(nproc)"

# インストールのみ sudo
sudo make install

# --------------------------------------------------------------
# libsobacas
# --------------------------------------------------------------
echo "=== libsobacas の取得 ==="
cd ~/dtv
if [ ! -d "libsobacas" ]; then
    git clone https://github.com/tsunoda14/libsobacas.git
fi

echo "=== libsobacas ビルド ==="
cd libsobacas

# autoreconf 実行(sudo 不要)
autoreconf -i

mkdir -p build
cd build

# configure(sudo 不要)
../configure

# make(sudo 不要)
make -j"$(nproc)"

# インストールのみ sudo
sudo make install

# --------------------------------------------------------------
# 確認
# --------------------------------------------------------------
echo "=== /usr/local/lib の確認 ==="
ls /usr/local/lib | grep -E "yakisoba|sobacas" || \
    echo "※ライブラリがありません(ビルド失敗の可能性)"

echo "=== recisdb  ライブラリ インストール完了 ==="

racisdbのビルド

途中でキーの入力が必要です。録画が完了(tsファイルが作成)されていればOKです。

#!/bin/bash
set -e

echo "===== 必要ツールのインストール(nano含む) ====="
sudo apt update
sudo apt install -y nano


# ============================================================
# bcas_keys 設定(手動貼り付け)
# ============================================================
echo "===== キー設定(手動) ====="
echo "※ 今から bcas_keys を開きます。自分のキーを貼り付けて保存してください。"
echo "※ 保存: Ctrl+O → Enter、終了: Ctrl+X"
sudo mkdir -p /usr/local/etc
sudo nano /usr/local/etc/bcas_keys


# ============================================================
# recisdb ビルド準備
# ============================================================
cd ~/dtv

echo "=== recisdb-rs の取得 ==="
if [ ! -d "recisdb-rs" ]; then
    git clone --recursive https://github.com/kazuki0824/recisdb-rs.git
fi

echo "=== 依存パッケージのインストール ==="
sudo apt update
sudo apt install -y \
    build-essential libclang-dev cmake libdvbv5-dev \
    libpcsclite-dev libudev-dev pkg-config curl git


# ============================================================
# Rust インストール(非対話で自動「1」)
# ============================================================
echo "=== Rust (rustup) をインストール ==="
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y

# PATH 読み込み
. "$HOME/.cargo/env"
echo "Rust version:"
cargo --version


# ============================================================
# libpcsclite → libsobacas 自動書き換え
# ============================================================
echo "=== build.rs の libpcsclite → libsobacas 書き換え ==="

BUILD_RS=~/dtv/recisdb-rs/b25-sys/build.rs

if grep -q "pcsclite" "$BUILD_RS"; then
    sed -i 's/pcsclite/sobacas/g' "$BUILD_RS"
    echo "→ build.rs の置換完了"
else
    echo "→ 既に書き換え済み"
fi


# ============================================================
# libsobacas.pc の自動生成
# ============================================================
echo "=== libsobacas.pc を自動生成 ==="

sudo mkdir -p /usr/local/lib/pkgconfig
sudo tee /usr/local/lib/pkgconfig/libsobacas.pc > /dev/null <<EOF
prefix=/usr/local
libdir=/usr/local/lib
includedir=/usr/include

Name: libsobacas
Description: PCSC compatible ECM deocder library
Version: 0.0.0
Libs: -L\${libdir} -lsobacas
Cflags: -I\${includedir}/PCSC
EOF

echo "→ /usr/local/lib/pkgconfig/libsobacas.pc を作成しました"


# ============================================================
# recisdb ビルド
# ============================================================
echo "=== recisdb ビルド開始 ==="

sudo chown -R $USER:$USER ~/dtv/recisdb-rs
cd ~/dtv/recisdb-rs

cargo build -F dvb --release

echo "=== recisdb を /usr/local/bin に配置 ==="
sudo cp -a target/release/recisdb /usr/local/bin


# ============================================================
# 動作確認
# ============================================================
echo "=== recisdb 動作確認(10秒 TS) ==="
cd ~/dtv

sudo recisdb tune --device /dev/isdb2056video0 --channel T27 -t 10 test.ts

echo "=== 完了 ==="
ls -lh test.ts || echo "TS が生成されていません(要確認)"

ISDBScannerのインストールと実行

# ISDBScanner をインストール
sudo apt install wget -y
sudo wget https://github.com/tsukumijima/ISDBScanner/releases/download/v1.3.3/isdb-scanner \
    -O /usr/local/bin/isdb-scanner

sudo chmod +x /usr/local/bin/isdb-scanner

# チューナー一覧確認
isdb-scanner --list-tuners

# スキャン保存ディレクトリ作成
mkdir -p ~/dtv/scanned

# ISDBScanner 実行(長時間の処理)
isdb-scanner ~/dtv/scanned/

Mirakurunインストール

# Node.js 18インストール
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs

# pm2インストール
sudo npm install -g pm2

# Mirakurun のインストール
sudo npm install -g --unsafe-perm --foreground-scripts --production mirakurun@3.9.0-rc.4

# Mirakurun初回起動
sudo mirakurun start
sleep 3
curl http://127.0.0.1:40772/api/version

# Mirakurun停止
sudo mirakurun stop

# ISDBScanner の出力から config を反映
sudo cp -a ~/dtv/scanned/Mirakurun/channels.yml /usr/local/etc/mirakurun/channels.yml
sudo cp -a ~/dtv/scanned/Mirakurun/tuners.yml /usr/local/etc/mirakurun/tuners.yml
sudo chown -R root:root /usr/local/etc/mirakurun/

# Mirakurun起動
sudo mirakurun start

EDCBインストール

cd ~/dtv

# --------------------------------------------------
# 必要パッケージのインストール
# --------------------------------------------------
sudo apt update
sudo apt install -y \
  git make gcc g++ \
  liblua5.2-dev lua-zlib \
  curl ffmpeg

# --------------------------------------------------
# EDCB 本体のインストール
# --------------------------------------------------
git clone https://github.com/xtne6f/EDCB
cd EDCB/Document/Unix

make
sudo make install

make extra
sudo make install_extra

sudo mkdir -p /var/local/edcb
sudo chown "$USER":"$USER" /var/local/edcb

make setup_ini
cd ~/dtv

# --------------------------------------------------
# EDCB Material WebUI のインストール
# --------------------------------------------------
git clone https://github.com/EMWUI/EDCB_Material_WebUI
cd EDCB_Material_WebUI

cp -r HttpPublic /var/local/edcb/
cp -r Setting    /var/local/edcb/

cd ~/dtv

# --------------------------------------------------
# BonDriver_LinuxMirakc のビルド
# --------------------------------------------------
git clone https://github.com/matching/BonDriver_LinuxMirakc.git --recurse-submodules
cd BonDriver_LinuxMirakc
make

sudo cp BonDriver_LinuxMirakc.so /usr/local/lib/edcb/
sudo cp BonDriver_LinuxMirakc.so.ini_sample \
        /usr/local/lib/edcb/BonDriver_LinuxMirakc.so.ini
cd ~/dtv

# --------------------------------------------------
# チャンネル設定ファイルのコピー
# --------------------------------------------------
cp ~/dtv/scanned/EDCB-Wine/ChSet5.txt \
   /var/local/edcb/Setting/

cp ~/dtv/scanned/EDCB-Wine/BonDriver_mirakc\(BonDriver_mirakc\).ChSet4.txt \
   /var/local/edcb/Setting/BonDriver_LinuxMirakc\(LinuxMirakc\).ChSet4.txt

# --------------------------------------------------
# WebUIからの設定変更を有効化
# --------------------------------------------------
sed -i \
  -e 's/^ALLOW_SETTING=.*/ALLOW_SETTING=true/' \
  /var/local/edcb/HttpPublic/legacy/util.lua

# --------------------------------------------------
# EpgTimerSrv 設定(HTTP・Tailscale対応)
# --------------------------------------------------
sudo tee /var/local/edcb/EpgTimerSrv.ini > /dev/null << 'EOT'
[SET]
EnableHttpSrv=1
EnableTCPSrv=1
RecEndMode=0
Data=1
HttpAccessControlList=+127.0.0.0/8,+10.0.0.0/8,+172.16.0.0/12,+192.168.0.0/16,+169.254.0.0/16,+100.64.0.0/10
EOT

# --------------------------------------------------
# 録画保存フォルダ設定
# --------------------------------------------------
sudo mkdir -p /var/local/edcb/HttpPublic/video

sudo tee /var/local/edcb/Common.ini > /dev/null << 'EOT'
[SET]
RecFolderPath0=/var/local/edcb/HttpPublic/video
RecFolderNum=1
EOT

# --------------------------------------------------
# systemd サービス登録
# --------------------------------------------------
sudo tee /etc/systemd/system/edcb.service > /dev/null << EOT
[Unit]
Description=EpgTimerSrv
After=network-online.target

[Service]
Type=simple
User=$USER
ExecStart=/usr/local/bin/EpgTimerSrv
Restart=always
StandardError=journal
StandardOutput=null
TimeoutStopSec=50

[Install]
WantedBy=default.target
EOT

sudo systemctl daemon-reload
sudo systemctl enable edcb
sudo systemctl start edcb

WebUI でチューナー数を変更

http://IPアドレス:5510 などにアクセスして、BonDriverが「BonDriver_LinuxMirakc」になっているか確認し、チューナー数を指定して「変更」ボタンをクリック。
続いて、EDCBを再起動します。

sudo systemctl restart edcb

EPGを取得します。これにはかなり時間がかかります。tmpファイルが無くなれば受信完了

ls /var/local/edcb/Setting/EpgData

KonomiTVインストール

cd ~/dtv
# Serverインストール時/home以下をユーザーが使えるように
# sudo chown -R $USER:$USER /home

# 最新版インストーラを取得
curl -LO https://github.com/tsukumijima/KonomiTV/releases/latest/download/KonomiTV-Installer.elf

# 実行権限を付与
chmod +x KonomiTV-Installer.elf

# インストーラ実行
sudo ./KonomiTV-Installer.elf

問題なければKonomiTVのインストール画面に。各自の設定だけれど、設定例として。バックエンドはEDCBに。

/home/user/KonomiTV
tcp://127.0.0.1:4510/
/var/local/edcb/HttpPublic/video

インストールが終了したら受信は常にMirakurun経由になるように設定ファイルを変更します。

sudo nano ~/KonomiTV/config.yaml

always_receive_tv_from_mirakurun: falseとなっている行を探しtrueに変更します。
保存したらKonomiTVを再起動します。EPGデータをコピーしていた場合など書き込めないファイルがあるとエラーになるので念の為権限も修正しておきます。

sudo chown -R $USER:$USER ~/KonomiTV
sudo chown -R $USER:$USER /var/local/edcb
sudo pm2 restart KonomiTV

KonomiTVにアクセスし動作を確認しましょう。

設定ファイルの保存場所

各設定ファイルの場所

Mirakurun関連

/usr/local/etc/mirakurun/server.yml
/usr/local/etc/mirakurun/channels.yml
/usr/local/etc/mirakurun/tuners.yml
~/KonomiTV/config.yaml
/usr/local/etc/bcas_keys

EDCB関連

/usr/local/bin
/usr/local/lib/edcb
/var/local/edcb/Setting
/var/local/edcb/Setting/EpgData
/var/local/edcb/HttpPublic/video

バックアップと復元

以前紹介した時のまま。綺麗にまとめたり無駄を省きたいけれど、そのうち。

バックアップ

cd ~
cp /usr/local/bin/recisdb ~/dtv
cp /usr/local/etc/bcas_keys  ~/dtv
cp  -r /usr/local/lib ~/dtv
cp /usr/local/bin/isdb-scanner ~/dtv
cp /usr/local/bin/isdb-scanner ~/dtv
cp /usr/local/bin/EpgDataCap_Bon ~/dtv
cp /usr/local/bin/EpgTimerSrv ~/dtv

mkdir ~/dtv/bon
mkdir ~/dtv/edcbSetting
cp -r /usr/local/lib/edcb ~/dtv/bon
cp -r /var/local/edcb/Setting ~/dtv/edcbSetting

cd ~
tar czvf dtv-backup.tar.gz dtv

復元

Ubuntuのセットアップ直後を想定。バックアップしておいたdtv-backup.tar.gzを解凍し、中のdtvフォルダをホームフォルダのルートに保存している状態です。上で解説した事と重なりますが数クリックで出来るように。

# ドライバ
sudo apt install -y ~/dtv/px4-drv-dkms_0.5.5_all.deb
sudo modprobe px4_drv

#各種ファイル
sudo cp ~/dtv/lib/libsobacas.a /usr/local/lib
sudo cp ~/dtv/lib/libsobacas.so.0 /usr/local/lib
sudo cp ~/dtv/lib/libyakisoba.la /usr/local/lib
sudo cp ~/dtv/lib/libyakisoba.so.0.0.1 /usr/local/lib
sudo cp ~/dtv/lib/libsobacas.la  /usr/local/lib
sudo cp ~/dtv/lib/libsobacas.so.0.0.0 /usr/local/lib
sudo cp ~/dtv/lib/libyakisoba.so /usr/local/lib
sudo cp ~/dtv/lib/libsobacas.so /usr/local/lib
sudo cp ~/dtv/lib/libyakisoba.a /usr/local/lib
sudo cp ~/dtv/lib/libyakisoba.so.0 /usr/local/lib

sudo cp  ~/dtv/bcas_keys  /usr/local/etc

sudo cp ~/dtv/isdb-scanner /usr/local/bin/isdb-scanner
sudo chmod +x /usr/local/bin/isdb-scanner

sudo cp -a ~/dtv/recisdb /usr/local/bin

sudo cp -r ~/dtv/lib/pkgconfig /usr/local/lib

cd ~/dtv
sudo apt install -y build-essential libclang-dev cmake libdvbv5-dev libpcsclite-dev libudev-dev pkg-config

# Mirakurun
sudo apt install curl
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs

sudo npm install -g pm2
sudo npm install -g --unsafe-perm --foreground-scripts --production mirakurun@3.9.0-rc.4

# yml
sudo mirakurun stop
sudo cp -a ~/dtv/scanned/Mirakurun/channels.yml /usr/local/etc/mirakurun/channels.yml
sudo cp -a ~/dtv/scanned/Mirakurun/tuners.yml /usr/local/etc/mirakurun/tuners.yml
sudo chown -R root /usr/local/etc/mirakurun/
sudo mirakurun start

# EDCB
sudo apt install git make gcc g++ liblua5.2-dev lua-zlib curl ffmpeg -y
cd ~/dtv/EDCB/Document/Unix
make
sudo make install
make extra
sudo make install_extra
sudo mkdir /var/local/edcb
sudo chown $USER /var/local/edcb
make setup_ini

cd ~/dtv/EDCB_Material_WebUI
cp -r HttpPublic /var/local/edcb/
cp -r Setting /var/local/edcb/

cd ~/dtv/BonDriver_LinuxMirakc
make

sudo cp BonDriver_LinuxMirakc.so /usr/local/lib/edcb
sudo cp BonDriver_LinuxMirakc.so.ini_sample /usr/local/lib/edcb/BonDriver_LinuxMirakc.so.ini

cp ~/dtv/scanned/EDCB-Wine/ChSet5.txt /var/local/edcb/Setting
cp ~/dtv/scanned/EDCB-Wine/'BonDriver_mirakc(BonDriver_mirakc).ChSet4.txt' /var/local/edcb/Setting/'BonDriver_LinuxMirakc(LinuxMirakc).ChSet4.txt'

cd ~/dtv
# WebUIからの設定変更を可能に
sed -i -e 's/^ALLOW_SETTING=.*/ALLOW_SETTING=true/' /var/local/edcb/HttpPublic/legacy/util.lua

#Tailscaleからもアクセス出来るように
tee /var/local/edcb/EpgTimerSrv.ini << 'EOT'
[SET]
EnableHttpSrv=1
HttpAccessControlList=+127.0.0.0/8,+10.0.0.0/8,+172.16.0.0/12,+192.168.0.0/16,+169.254.0.0/16,+100.64.0.0/10
RecEndMode=0
Data=1
EnableTCPSrv=1
EOT

# 録画保存フォルダを/var/local/edcb/HttpPublic/videoに変更
mkdir /var/local/edcb/HttpPublic/video
tee /var/local/edcb/Common.ini << 'EOT'
[SET]
RecFolderPath0=/var/local/edcb/HttpPublic/video
RecFolderNum=1
EOT

# EDCBのサービス登録
sudo tee /etc/systemd/system/edcb.service << EOT
[Unit]
Description=EpgTimerSrv
After=network-online.target

[Service]
ExecStart=/usr/local/bin/EpgTimerSrv
Restart=always
StandardError=journal
StandardOutput=null
TimeoutStopSec=50
Type=simple
User=$USER

[Install]
WantedBy=default.target
EOT
sudo systemctl enable edcb

# EPGデータコピー
cp ~/dtv/edcbSetting/Setting/EpgData /var/local/edcb/Setting -r
sudo systemctl restart edcb

# EDCBの起動
sudo systemctl start edcb

# KonomiTV
chmod +x ~/dtv/KonomiTV-Installer.elf
sudo ~/dtv/KonomiTV-Installer.elf

問題なければKonomiTVのインストール画面に。各自の設定だけれど、設定例として。バックエンドはEDCBに。

/home/user/KonomiTV
tcp://127.0.0.1:4510/
/var/local/edcb/HttpPublic/video

無事KonomiTVのインストールが完了したら、EDCBの設定。http://IPアドレス:5510/にアクセスしてBonDriverの数を設定します。「変更」ボタンを押したらEDCBをリスタート。

sudo systemctl restart edcb

最後にKonomiTVのWeb画面にアクセスして、サーバ設定で受信は常にMirakurun経由に変更。「サーバ設定を更新」ボタンを押して、「KonomiTVサーバーを再起動」ボタンを押せば完了です。