Mygica S270とRaspberryPi3とWSLで録画環境
割と変則的な構成でMirakurun + Chinachu環境を構築しました。
はじめに
mirakurunをラズパイで動かし、ChinachuをWindowsServerのWSLで動かします。経緯は以下。
- 現状、ESXi上にWindowsServerのファイルサーバがいるので、そこに全部構築しようと挑戦
- S270を直接認識させる方法が無いので、PCIeのUSBカード挿してPCIパススルーした
- ESXiのPCIパススルーが安定せずS270がうまく動作しない。断念
- ESXi上にUbuntu20.04を立てて、そこに全部構築しようと挑戦
- やっぱりPCIパススルーが安定しない。断念
- Raspberry Piに全部構築しようと挑戦
- mirakurunは快適に動いたものの、なぜかChinachuのインストールがやたら遅くて心折れた
- ラズパイでmirakurun、WSLでChinachu動かせばうまく行くのでは?->成功
使ったもの
- ハードウェア
- Mygica S270
- Rocketek RT-SCR3
- Raspberry Pi 3 Model B
- ソフトウェア
- Ubuntu Server 20.04.1
- mirakurun
- ソフトウェア(Chinachuサーバ)
- VMWare ESXi 7.0上のWindows Server 2019 Standard
- WSL Ubuntu 18.04
- Chinachu
初期設定
- Ubuntu Server 20.04.1をmicroSDに書き込む
- ユーザー名:ubuntu パスワード:ubuntu でログインしパスワード変更
sudo timedatectl set-timezone Asia/Tokyo
timedatectl status
で確認
apt update
とapt upgrade
sudo apt purge snapd
でsnap消しておく
スマートカードリーダの認識
あらかじめRocketek RT-SCR3を挿しておく。
# 認識されているか見る。AU9540 Smartcard Readerが出るはず
lsusb
# デーモンと周辺ツールを入れる
sudo apt install pcscd pcsc-tools
# 読み取ってみてJapanese Chijou Digital B-CAS Card (pay TV)が出たらCtrl+Cで止める
pcsc_scan
チューナーの認識
Mygica S270はなんか不調だと思ったら挿しなおす。
# S270を挿し、認識されているか見る
lsusb
ls /dev/dvb/
# ファームウェアの導入
sudo wget https://github.com/OpenELEC/dvb-firmware/raw/master/firmware/isdbt_rio.inp -O /lib/firmware/isdbt_rio.inp
# 録画用ツールインストール
sudo apt install dvb-tools
# dvbv5-zapの設定ファイルを保存しておく
sudo git clone https://github.com/Chinachu/dvbconf-for-isdb.git /usr/local/dvbconf
# スキャンしてみる。文字コードの関係でエラーが出るが、とりあえずSignalが反応しているか見る
# たぶん反応しないので一度S270を抜き差しする
sudo dvbv5-scan -C JP -a 0 /usr/local/dvbconf/conf/dvbv5_channels_isdbt.conf
mirakurun導入
このあたりを参考にインストール。 Mirakurun/Platforms.md at master · Chinachu/Mirakurun
# node.jsインストール
curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs
# mirakurunインストール
sudo npm install pm2 -g
sudo npm install mirakurun -g --unsafe-perm --production
# その他いろいろ
sudo apt install build-essential libpcsclite-dev
sudo npm install arib-b25-stream-test -g --unsafe-perm
http://<IPaddress>:40772/ でWebGUIが開く。
mirakurun設定
# チューナー設定ファイルを開き次の設定を追加
sudo mirakurun config tuners
- name: S270
types:
- GR
dvbDevicePath: /dev/dvb/adapter0/dvr0
decoder: arib-b25-stream-test
command: dvbv5-zap -a 0 -C JP -c /usr/local/dvbconf/conf/dvbv5_channels_isdbt.conf -r -P <channel>
isDisabled: false
# 書き終わったら再起動しておく
sudo mirakurun restart
# チャンネルスキャンしてもう一回再起動(スキャンは結構時間がかかる)
curl -X PUT "http://localhost:40772/api/config/channels/scan"
sudo mirakurun restart
以上でRaspberry Pi上の作業は終了。
Chinachuサーバ用WSL構築
ここからはWindowsServerで作業。
- WindowsServer上にWSLでChinachu構築する
- Ubuntu 20.04は不調っぽいので18.04で導入
PowerShellで以下を実行
# Chinachu用のポートをFirewallで開けておく
New-NetFirewallRule -DisplayName "Chinachu Web GUI" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 20772 -Profile Domain,Private
# WSL導入。再起動を求められるので再起動
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
# Ubuntu 18.04導入
Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1804 -OutFile Ubuntu.appx -UseBasicParsing
Rename-Item .\Ubuntu.appx .\Ubuntu.zip
Expand-Archive .\Ubuntu.zip .\Ubuntu
# Ubuntu起動してID・パスワード設定(今回はIDをubuntuとした)
.\Ubuntu\ubuntu1804.exe
Chinachu導入
ここからはWSL上で操作する。公式手順に沿っていい感じに。Gamma Installation V2 · Chinachu/Chinachu Wiki
sudo apt update
sudo apt upgrade
# node.jsインストール
curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install nodejs
# Chinachuインストールの準備
sudo apt-get install build-essential curl git-core vainfo
sudo npm install pm2 -g
sudo pm2 startup
git clone git://github.com/Chinachu/Chinachu.git ~/chinachu
cd ~/chinachu/
# Chinachuインストール(Autoを選択)
./chinachu installer
Chinachu設定
引き続きWSLで以下を実行
# サンプルコンフィグをコピーしてuid,mirakurunPath,recordedDirを設定
cp config.sample.json config.json
vi config.json
@@ -1,9 +1,9 @@
{
- "uid": null,
+ "uid": "ubuntu",
"gid": "video",
- "mirakurunPath": "http+unix://%2Fvar%2Frun%2Fmirakurun.sock/",
+ "mirakurunPath": "http://<mirakurun IP>:40772/",
- "recordedDir" : "./recorded/",
+ "recordedDir" : "/mnt/e/path/to/Recorded/",
"vaapiEnabled": false,
"vaapiDevice": "/dev/dri/renderD128",
# 空のルールファイル作成
echo [] > rules.json
# EPG取得をテストしてみる
./chinachu update
# 試しに起動してhttp://<IPaddress>:20772/ を開いてみる
./chinachu service wui execute
# スタートアップ登録
sudo pm2 start processes.json # エラーが出たらもう一回叩いてみる
sudo pm2 save
Chinachu自動起動設定
OS起動に合わせてChinachuが起動するようにする。
# タスクスケジューラからの自動起動のためにパスワードなしでsudo pm2できるようにする
sudo visudo
# 以下を末尾に追記
%sudo ALL=NOPASSWD: /usr/bin/pm2
ここで一度サインアウトし、Chinachuが開けなくなる事を確認する。その後PowerShellからタスクスケジューラに登録
$trigger = New-ScheduledTaskTrigger -AtStartUp
$action = New-ScheduledTaskAction -Execute C:\Users\Administrator\Ubuntu\ubuntu1804.exe -Argument "run `"cd ~/chinachu/ && sudo pm2 start processes.json`""
$principal = New-ScheduledTaskPrincipal -UserId Administrator -LogonType S4U
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -ExecutionTimeLimit (New-TimeSpan)
Register-ScheduledTask -TaskName "StartChinachu" -Trigger $trigger -Action $action -Principal $principal -Settings $settings
Start-ScheduledTask -TaskName "StartChinachu"
Chinachuが開けることを確認し、OS再起動しても開けることを確認する。
おわりに
- とりあえず使う分には快適そう。
- PowerShellからタスクスケジューラ登録するのは何故こんなにも面倒なのか。