mNEFOのメモ帳

ツイッターとかに書ききれなかったメモの集まり

Ubuntu Serverとdocker-mirakurun-epgstationとPX-MLT8PEで作る全録サーバー

内容

recpt1(px-mlt8peなので)を使ってdocker-mirakurun-epgstationを動かす。

環境

中身

ハマりポイントはマザーボードUSB2.0ヘッダに使われているGL850Gとキャプチャに相性が有るのか、帯域不足なのか分からないが16ch全録するとドロップしまくるので、一枚目だけGL850Gへ接続し、もう一枚を他のUSBヘッダに接続した。 またアンテナ線2系統のうち片方が断線しかけで信号レベルが低かった。checksignalしましょう。

Ubuntu Serverインストール

Ubuntu Server(LTSではない方。23系でないとカーネルが古くてzen4のCPU温度が取れない) をDLしてRufusUSBメモリに。
Ubuntu Server をインストール。IPをスタティックにする以外は特になし。

タイムゾーンを設定

sudo timedatectl set-timezone Asia/Tokyo

環境更新

sudo apt update と upgrade してreboot

lsusb でチューナーとリーダを確認

Bus 001 Device 003: ID 0e8d:0616 MediaTek Inc. Wireless_Device
Bus 001 Device 004: ID 04e6:5116 SCM Microsystems, Inc. SCR331-LC1 / SCR3310 SmartCard Reader
Bus 001 Device 002: ID 174c:2074 ASMedia Technology Inc. ASM1074 High-Speed hub
Bus 001 Device 010: ID 0511:0252 N'Able (DataBook) Technologies, Inc. PXML͔8PE
Bus 001 Device 009: ID 0511:0253 N'Able (DataBook) Technologies, Inc. PXML͔8PE
Bus 001 Device 008: ID 0511:0253 N'Able (DataBook) Technologies, Inc. PXML͔8PE
Bus 001 Device 007: ID 0511:0252 N'Able (DataBook) Technologies, Inc. PXML͔8PE

必要パッケージ

sudo apt install dkms git nfs-common unzip docker-compose docker libpcsclite-dev pcscd pcsc-tools libccid autoconf automake build-essential cmake curl libssl-dev libtool libboost-all-dev pkg-config yasm tree lm-sensors glances smartmontools cpufrequtils
sudo apt install -y linux-headers-$(uname -r)

UIDとGIDの設定

uidをNFSサーバーのユーザーに合わせる(我が家には他のLinuxサーバーが有るのでそれに合わせて1003とか、 /etc/passwdをいじってリブート、その後ホームのchownを忘れずに。)
video(44)とdocker(119)グループに追加する(usermod -aG video mnefo, usermod -aG docker mnefo)

cd /home
sudo chown -R mnefo:mnefo mnefo

docker-mirakurun-epgstationの設定

ドライバの用意

https://github.com/tsukumijima/px4_drv

wget https://github.com/tsukumijima/px4_drv/releases/download/v0.4.1/px4-drv-dkms_0.4.1_all.deb
sudo apt install -y ./px4-drv-dkms_0.4.1_all.deb
rm ./px4-drv-dkms_0.4.1_all.deb
sudo modprobe px4_drv
# ls /dev/ とかしてpxmlt8videoX があるのを確認

NFSとその他のfstab設定例

エンコードしたものをNFSに、生のTSファイルを別のSSDへ。

/etc/fstab の例
192.168.1.19:/home/mnefo/recorded/encoded /home/recorded/encoded nfs defaults 0 0
/dev/nvme1n1p1 /home/recorded/raw ext4 defaults 0 0

docker-epgstation-mirakurun

curl -sf https://raw.githubusercontent.com/l3tnun/docker-mirakurun-epgstation/v2/setup.sh | sh -s cd docker-mirakurun-epgstation

標準のdocker-compose.ymlは/dev/dvbを使うのでエラーが起きるので編集。mirakurunのスタートアップスクリプトのためにoptを追加、デバイスをPX-MLT8PE用に追加、カードリーダのデバイスを追加(上のlsusbから)、レコード用ディレクトリの追加。

docker-compose.ymlを編集
        volumes:
            - ./mirakurun/conf:/app-config
            - ./mirakurun/data:/app-data
            - ./mirakurun/opt/:/opt
        devices:
            - /dev/bus:/dev/bus
            - /dev/pxmlt8video0:/dev/pxmlt8video0
            - /dev/pxmlt8video1:/dev/pxmlt8video1
            - /dev/pxmlt8video2:/dev/pxmlt8video2
            - /dev/pxmlt8video3:/dev/pxmlt8video3
            - /dev/pxmlt8video4:/dev/pxmlt8video4
            - /dev/pxmlt8video5:/dev/pxmlt8video5
            - /dev/pxmlt8video6:/dev/pxmlt8video6
            - /dev/pxmlt8video7:/dev/pxmlt8video7
            - /dev/pxmlt8video8:/dev/pxmlt8video8
            - /dev/pxmlt8video9:/dev/pxmlt8video9
            - /dev/pxmlt8video10:/dev/pxmlt8video10
            - /dev/pxmlt8video11:/dev/pxmlt8video11
            - /dev/pxmlt8video12:/dev/pxmlt8video12
            - /dev/pxmlt8video13:/dev/pxmlt8video13
            - /dev/pxmlt8video14:/dev/pxmlt8video14
            - /dev/pxmlt8video15:/dev/pxmlt8video15
            - /dev/bus/usb/001/004

        volumes:
            - ./epgstation/config:/app/config
            - ./epgstation/data:/app/data
            - ./epgstation/thumbnail:/app/thumbnail
            - ./epgstation/logs:/app/logs
            - /home/recorded:/app/recorded

tuners.yml を作る

- name: PX-MLT8PE_0
  types:
    - GR
    - BS
  decoder: arib-b25-stream-test
  isDisabled: false
  command: recpt1 --device /dev/pxmlt8video0 <channel> - -
これを0~15まで

arib25とrecpt1

docker-mirakurun-epgstaionのmirakurunは弄り様がないのが、スタートアップスクリプトは実行可能なので設定する。chmod +xもわすれずに。

mkdir -p mirakurun/opt/bin
vi mirakurun/opt/bin/startup

#!/bin/bash

if !(type "recpt1" > /dev/null 2>&1); then
  apt-get update
  apt-get install -y --no-install-recommends git autoconf automake cmake

  cd /tmp
  git clone https://github.com/stz2012/libarib25.git
  cd libarib25
  cmake . -DCMAKE_INSTALL_PREFIX=/opt
  make
  make install
  ldconfig

  cd /tmp
  git clone https://github.com/stz2012/recpt1.git
  cd recpt1/recpt1
  ./autogen.sh
  ./configure --enable-b25 --prefix /opt
  make
  make install
fi

recpt1 -v

起動

docker-compose down
docker-compose run --rm -e SETUP=true mirakurun
docker-compose up -d

チャンネルスキャン
mirakurunの再起動は http://localhost:40772/ の右上

curl -X PUT "http://localhost:40772/api/config/channels/scan" 地上波
curl -X PUT "http://localhost:40772/api/config/channels/scan?type=BS&setDisabledOnAdd=true&refresh=false" BS

もう一度 mirakurun再起動。EPGが取れるまでしばし休憩。あとはepgstationの録画設定をして完了。
mirakurunのEPG更新は10分(600,000msec)くらいにしておくといいかも。