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 実行
autoreconf -i

mkdir -p build
cd build

# 一般ユーザで configure
../configure --sysconfdir=/usr/local/etc

# 一般ユーザで make
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 実行
autoreconf -i

mkdir -p build
cd build

# configure
../configure

# make
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


# ============================================================
# キー設定
# ============================================================
echo "===== キー設定(手動) ====="
echo "※ 今からキーファイルを開きます。自分のキーを貼り付けて保存してください。"
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

バックアップと復元

容量が大きくなってしまうので、録画ファイルは除外する設定で。

バックアップ

#!/bin/bash
set -e
# ============================================================
# DTV環境 バックアップスクリプト
# ============================================================
cd ~

echo "=== バイナリ・ライブラリのコピー ==="
# /usr/local/bin
cp /usr/local/bin/recisdb          ~/dtv/
cp /usr/local/bin/isdb-scanner     ~/dtv/
cp /usr/local/bin/EpgDataCap_Bon   ~/dtv/
cp /usr/local/bin/EpgTimerSrv      ~/dtv/

# /usr/local/lib(共有ライブラリ・pkgconfig含む)
cp -r /usr/local/lib               ~/dtv/

# BonDriver(ビルド済み .so)
mkdir -p ~/dtv/bon
cp -r /usr/local/lib/edcb          ~/dtv/bon/

echo "=== 設定ファイルのコピー ==="
# bcas_keys
cp /usr/local/etc/bcas_keys        ~/dtv/

# EDCB 設定・EPGデータ
mkdir -p ~/dtv/edcbSetting
cp -r /var/local/edcb/Setting      ~/dtv/edcbSetting/

# EDCB HttpPublic(WebUI含む・録画ファイルは除外)
cp -r /var/local/edcb/HttpPublic   ~/dtv/edcbHttpPublic/

# EDCB INI(チューナー設定を含む)
cp /var/local/edcb/EpgTimerSrv.ini ~/dtv/
cp /var/local/edcb/Common.ini      ~/dtv/

# Mirakurun channels.yml / tuners.yml
mkdir -p ~/dtv/mirakurun
cp /usr/local/etc/mirakurun/channels.yml ~/dtv/mirakurun/
cp /usr/local/etc/mirakurun/tuners.yml   ~/dtv/mirakurun/

# KonomiTV インストーラー(再インストール用)
[ -f ~/dtv/KonomiTV-Installer.elf ] || \
    curl -L https://github.com/tsukumijima/KonomiTV/releases/latest/download/KonomiTV-Installer.elf \
         -o ~/dtv/KonomiTV-Installer.elf
chmod +x ~/dtv/KonomiTV-Installer.elf

echo "=== tar.gz 作成 ==="
tar czvf ~/dtv-backup.tar.gz \
    --exclude='dtv/edcbHttpPublic/video' \
    -C ~ dtv

echo "バックアップ完了: ~/dtv-backup.tar.gz"

復元

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

#!/bin/bash
set -e
# ============================================================
# DTV環境 復元スクリプト
# ~/dtv-backup.tar.gz が存在する前提
# ============================================================

echo "=== 解凍 ==="
cd ~
tar xzvf ~/dtv-backup.tar.gz

# ============================================================
# 1. 依存パッケージのインストール(ビルド不要・最小限)
# ============================================================
echo "=== 依存パッケージをインストール中 ==="
sudo apt update
sudo apt install -y \
    build-essential libclang-dev cmake libdvbv5-dev libpcsclite-dev libudev-dev pkg-config \
    git make gcc g++ liblua5.2-dev lua-zlib ffmpeg curl

# Node.js 18 + npm + pm2 + Mirakurun
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

# ============================================================
# 2. PX4 ドライバ
# ============================================================
echo "=== PX4 ドライバをインストール中 ==="
sudo apt install -y ~/dtv/px4-drv-dkms_0.5.5_all.deb
sudo modprobe px4_drv

# ============================================================
# 3. ライブラリ・バイナリの復元(ビルドなし)
# ============================================================
echo "=== ライブラリ・バイナリを復元中 ==="
sudo cp -a ~/dtv/lib/.        /usr/local/lib/
sudo ldconfig

sudo cp ~/dtv/recisdb         /usr/local/bin/
sudo cp ~/dtv/isdb-scanner    /usr/local/bin/
sudo cp ~/dtv/EpgDataCap_Bon  /usr/local/bin/
sudo cp ~/dtv/EpgTimerSrv     /usr/local/bin/
sudo chmod +x /usr/local/bin/recisdb \
              /usr/local/bin/isdb-scanner \
              /usr/local/bin/EpgDataCap_Bon \
              /usr/local/bin/EpgTimerSrv

# bcas_keys
sudo mkdir -p /usr/local/etc
sudo cp ~/dtv/bcas_keys /usr/local/etc/

# BonDriver(ビルド済み .so)
sudo mkdir -p /usr/local/lib/edcb
sudo cp -a ~/dtv/bon/edcb/. /usr/local/lib/edcb/

# ============================================================
# 4. Mirakurun 設定
# ============================================================
echo "=== Mirakurun 設定を復元中 ==="
sudo mirakurun stop || true
sudo cp ~/dtv/mirakurun/channels.yml /usr/local/etc/mirakurun/channels.yml
sudo cp ~/dtv/mirakurun/tuners.yml   /usr/local/etc/mirakurun/tuners.yml
sudo chown -R root:root /usr/local/etc/mirakurun/
sudo mirakurun start

# ============================================================
# 5. EDCB セットアップ(ビルドなし・設定ファイルのみ復元)
# ============================================================
echo "=== EDCB を復元中 ==="
sudo mkdir -p /var/local/edcb
sudo chown $USER:$USER /var/local/edcb

# EMWUI・HttpPublic 復元
cp -r ~/dtv/edcbHttpPublic /var/local/edcb/HttpPublic

# Setting ディレクトリ復元
mkdir -p /var/local/edcb/Setting
cp -r ~/dtv/edcbSetting/Setting/.  /var/local/edcb/Setting/

# INI ファイル(チューナー設定込み)
cp ~/dtv/EpgTimerSrv.ini /var/local/edcb/EpgTimerSrv.ini
cp ~/dtv/Common.ini       /var/local/edcb/Common.ini

# 録画フォルダ(HttpPublic内に含まれていない場合に備えて作成)
mkdir -p /var/local/edcb/HttpPublic/video

# 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
StandardOutput=null
StandardError=journal
TimeoutStopSec=50
[Install]
WantedBy=default.target
EOT

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

# ============================================================
# 6. KonomiTV インストール(対話式・手動操作)
# ============================================================
echo "=== KonomiTV インストール(手動で操作してください)==="
chmod +x ~/dtv/KonomiTV-Installer.elf
sudo ~/dtv/KonomiTV-Installer.elf

# インストーラー完了後に always_receive_tv_from_mirakurun を true に設定
KONOMI_CONFIG=$(find /opt /usr/local /home -name "config.yaml" -path "*/KonomiTV/*" 2>/dev/null | head -1)
if [ -z "$KONOMI_CONFIG" ]; then
    echo "⚠ KonomiTV の config.yaml が見つかりませんでした。パスを確認してください。"
else
    sudo sed -i 's/always_receive_tv_from_mirakurun: false/always_receive_tv_from_mirakurun: true/' "$KONOMI_CONFIG"
    echo "always_receive_tv_from_mirakurun: true に設定しました。"
    sudo pm2 restart KonomiTV
fi

echo "復元完了!"

KonomiTVのインストール時。設定例として。バックエンドはEDCBに。

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

おまけ – 最初に設定してあとは自動

一括処理で時間がかかるので、Cockpitの端末よりもSSHで作業したほうが良いかも。

sudo apt install openssh-server -y
#!/bin/bash
set -e

# ============================================================
# 0. キー入力
# ============================================================
echo "=== 1/8: キー設定 ==="
echo "キーの内容を貼り付けてください(入力後、Enter を 2 回押すと確定します):"
BCAS_CONTENT=$(sed '/^$/q')

# ============================================================
# 1. 依存パッケージのインストール
# ============================================================
echo "=== 2/8: 依存パッケージをインストール中 ==="
sudo apt update
sudo apt install -y \
    autoconf automake cmake libtool libpcsclite-dev \
    git build-essential pkg-config curl wget \
    libclang-dev libdvbv5-dev libudev-dev \
    nodejs npm ffmpeg liblua5.2-dev lua-zlib g++ make gcc

if ! node -v | grep -q "v18"; then
    curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
    sudo apt install -y nodejs
fi
sudo npm install -g pm2 || true

# ============================================================
# 2. TVチューナードライバ (px4_drv)
# ============================================================
echo "=== 3/8: PX4 ドライバをセットアップ中 ==="
mkdir -p ~/dtv && cd ~/dtv

DRIVER_VERSION="0.5.5"
DRIVER_DEB="px4-drv-dkms_${DRIVER_VERSION}_all.deb"
[ ! -f "$DRIVER_DEB" ] && curl -L -o "$DRIVER_DEB" \
    "https://github.com/tsukumijima/px4_drv/releases/download/v${DRIVER_VERSION}/${DRIVER_DEB}"
sudo apt install -y "./${DRIVER_DEB}"
sudo modprobe px4_drv || true

# ============================================================
# 3. libyakisoba / libsobacas のビルド
# ============================================================
echo "=== 4/8: 復号ライブラリのビルド ==="
cd ~/dtv
for repo in libyakisoba libsobacas; do
    [ ! -d "$repo" ] && git clone "https://github.com/tsunoda14/${repo}.git"
    cd "$repo"
    autoreconf -i
    mkdir -p build && cd build
    [ "$repo" = "libyakisoba" ] && ../configure --sysconfdir=/usr/local/etc || ../configure
    make -j"$(nproc)"
    sudo make install
    cd ~/dtv
done
sudo ldconfig

# ============================================================
# 4. recisdb のビルド
# ============================================================
echo "=== 5/8: Rust と recisdb のビルド ==="
if ! command -v cargo &>/dev/null; then
    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
fi
source "$HOME/.cargo/env" || export PATH="$HOME/.cargo/bin:$PATH"

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 decoder library
Version: 0.0.0
Libs: -L${libdir} -lsobacas
Cflags: -I${includedir}/PCSC
EOF

cd ~/dtv
[ ! -d recisdb-rs ] && git clone --recursive https://github.com/kazuki0824/recisdb-rs.git
cd recisdb-rs
sed -i 's/pcsclite/sobacas/g' b25-sys/build.rs
cargo build -F dvb --release
sudo cp target/release/recisdb /usr/local/bin/

# ============================================================
# 5. B-CAS キーの配置
# ============================================================
sudo mkdir -p /usr/local/etc
echo "$BCAS_CONTENT" | sudo tee /usr/local/etc/bcas_keys > /dev/null

# ============================================================
# 6. チャンネルスキャンと Mirakurun 設定
# ============================================================
echo "=== 6/8: チャンネルスキャンと Mirakurun 設定 ==="
sudo wget -q 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

sudo npm install -g --unsafe-perm --foreground-scripts --production mirakurun@3.9.0-rc.4
sudo mirakurun start || true
sleep 5
sudo mirakurun stop || true

mkdir -p ~/dtv/scanned
[ -z "$(ls -A ~/dtv/scanned/)" ] && isdb-scanner ~/dtv/scanned/

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/
sudo mirakurun start

# ============================================================
# 7. EDCB (EpgTimerSrv) のセットアップ
# ============================================================
echo "=== 7/8: EDCB セットアップ ==="
cd ~/dtv
[ ! -d EDCB ] && git clone https://github.com/xtne6f/EDCB
cd EDCB/Document/Unix
make -j"$(nproc)"
sudo make install
make extra
sudo make install_extra

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

# EMWUI
cd ~/dtv
[ ! -d EDCB_Material_WebUI ] && git clone https://github.com/EMWUI/EDCB_Material_WebUI
cp -r EDCB_Material_WebUI/HttpPublic /var/local/edcb/
cp -r EDCB_Material_WebUI/Setting    /var/local/edcb/

# BonDriver
[ ! -d BonDriver_LinuxMirakc ] && \
    git clone https://github.com/matching/BonDriver_LinuxMirakc.git --recurse-submodules
cd BonDriver_LinuxMirakc
make -j"$(nproc)"
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'

# WebUI 設定
sed -i 's/^ALLOW_SETTING=.*/ALLOW_SETTING=true/' /var/local/edcb/HttpPublic/legacy/util.lua
mkdir -p /var/local/edcb/HttpPublic/video

# チューナー数を自動検出
# px4_drv は物理 1 チューナーにつき px4video を 4 つ作るため総数 ÷ 4 を使用
PX4_DEV_COUNT=$(ls /dev/px4video* 2>/dev/null | wc -l)
if [ "$PX4_DEV_COUNT" -gt 0 ]; then
    TUNER_COUNT=$(( PX4_DEV_COUNT / 4 ))
    [ "$TUNER_COUNT" -eq 0 ] && TUNER_COUNT=1
else
    TUNER_COUNT=$(grep -c '^ *- name:' /usr/local/etc/mirakurun/tuners.yml 2>/dev/null || echo 1)
    [ "$TUNER_COUNT" -eq 0 ] && TUNER_COUNT=1
fi
echo "検出チューナー数: ${TUNER_COUNT}"

# EpgTimerSrv.ini
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
[TunerNum]
BonDriver_LinuxMirakc(LinuxMirakc).so=${TUNER_COUNT}
[BonDriver_LinuxMirakc.so]
Count=${TUNER_COUNT}
GetEpg=1
EPGCount=0
Priority=0
EOT

# Common.ini
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
[Install]
WantedBy=default.target
EOT

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

# ============================================================
# 8. KonomiTV インストール
# ============================================================
echo "=== 8/8: KonomiTV インストール ==="
cd ~/dtv
curl -LO https://github.com/tsukumijima/KonomiTV/releases/latest/download/KonomiTV-Installer.elf
chmod +x KonomiTV-Installer.elf
sudo ./KonomiTV-Installer.elf

KONOMI_CONFIG=$(find /opt /usr/local /home -name "config.yaml" -path "*/KonomiTV/*" 2>/dev/null | head -1)
if [ -z "$KONOMI_CONFIG" ]; then
    echo "警告: KonomiTV の config.yaml が見つかりませんでした。パスを確認してください。"
else
    echo "KonomiTV config.yaml を更新中: $KONOMI_CONFIG"
    sudo sed -i 's/always_receive_tv_from_mirakurun: false/always_receive_tv_from_mirakurun: true/' "$KONOMI_CONFIG"
    sudo pm2 restart KonomiTV
fi

echo "=== 環境構築が完了しました! ==="

EDCBのチューナー数やKonomiTVの映像受信はMirakurun設定も反映済み。
視聴だけならすぐに出来るはず。
EDCBの設定は、http://IPアドレス:5510/ にアクセス。もしチューナー数を指定したりした場合はEDCB再起動。

sudo systemctl restart edcb

EPGを取得。取得状況は下記で確認。

ls /var/local/edcb/Setting/EpgData

KonomiTVの再起動はサーバ上でやったほうが良いけれど(どっちみち録画ファイルを削除するにはアカウント登録が必要なため)、コマンドでやるなら下記。

sudo pm2 restart KonomiTV

タイトルとURLをコピーしました