ラズパイで録画リグ構築。(MirakurunxEPGStation+SoftCas)
注意
録画データの著作権などは自己責任で。
SoftCasも闇なので自己責任ですよ。
用意したもの
1. ラズパイ本体
2. PX-S1UD x2
3. PX-BCUD x2
4. その他 (microSD 32GB、5V 3A ACアダプター、セルフパワーのUSBハブ、USBメモリ、Wi-Fiドングル、アンテナケーブル、分配器、電源供給器、BS/CS アンテナとか...。)
Asia、Tokyoに時間をセット
# rootで。
$ timedatectl set-timezone Asia/Tokyo
リポジトリを追加
# 国内のミラーを追加
$ cat << 'EOT' | sudo tee /etc/apt/sources.list
deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
deb http://ftp.jaist.ac.jp/raspbian/ buster main contrib non-free rpi
deb http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian/ buster main contrib non-free rpi
deb http://ftp.yz.yamagata-u.ac.jp/pub/linux/raspbian/raspbian/ buster main contrib non-free rpi
deb http://download.webmin.com/download/repository sarge contrib
EOT
# Webminのキーを追加
$ wget -qO - http://www.webmin.com/jcameron-key.asc | sudo apt-key add -
$ sudo apt update ; sudo apt -y upgrade
必要パッケージのインストール
# 必要に応じて追加してください。
$ sudo apt -y install pcscd libpcsclite-dev libccid pcsc-tools python2.7 sqlite3 ffmpeg cmake g++ autoconf git cpufrequtils cpufreqd webmin nodejs npm hexedit
CPU倍率固定
# Performanceにセット
$ wget -O /etc/init.d/cpufrequtils https://pastebin.com/raw/fibpAcav
Swap領域設定
# 2048MBに変更
$ sudo nano /etc/dphys-swapfile
$ sudo /etc/init.d/dphys-swapfile restart
チューナーのセットアップ
# チューナードライバのインストール
$ wget http://plex-net.co.jp/plex/px-s1ud/PX-S1UD_driver_Ver.1.0.1.zip
$ unzip PX-S1UD_driver_Ver.1.0.1.zip
$ sudo cp PX-S1UD_driver_Ver.1.0.1/x64/amd64/isdbt_rio.inp /lib/firmware/
# アダプター番号の固定
$ sudo modprobe -r smsdvb ; sudo modprobe smsdvb adapter_nr=1,3
$ sudo modprobe -r em28xx-dvb ; sudo modprobe em28xx-dvb adapter_nr=0,2
$ sudo sh -c 'echo "options smsdvb adapter_nr=1,3" > /etc/modprobe.d/smsdvb.conf'
$ sudo sh -c 'echo "options em28xx-dvb adapter_nr=0,2" > /etc/modprobe.d/em28xx_dvb.conf'
# 再起動
$ sudo reboot now
# 再起動前にusbメモリとかチューナーを挿しておく。
# PX-BCUDは自動で認識するので問題ない。
正常に動作しているかを確認
$ dmesg
$ lsusb
$ ls /dev/dvb/
$ swapon -s
$ cpufreq-info -o
# 何らかのエラーが発生してないか確認。
SoftCas、arib25、recdvbの導入
# anonfile.com/27i1Of6an6からDLしてfile.ioのリンク作ってwgetする。
$ wget file.ioのURL
$ unzip 生成されたファイル名
$ cd softcas
# Winscard.cppとMakefileを差し替え
$ wget -O winscard.cpp https://pastebin.com/raw/5144Ah9g
$ wget -O Makefile https://pastebin.com/raw/FQdSixkB
# sedコマンドで置き換える
$ sed -i "/LONG SCardGetStatusChange/s/LPSCARD_READERSTATE_A/LPSCARD_READERSTATE/g" winscard.cpp
$ sed -i "s/SCARD_IO_REQUEST g_rgSCardT1Pci;/const SCARD_IO_REQUEST g_rgSCardT1Pci = { SCARD_PROTOCOL_T1, sizeof(SCARD_IO_REQUEST) };/g" winscard.cpp
$ make
# makeが通ったらコピー。(arm環境以外だと別のディレクトリらしい。)
$ sudo cp libpcsclite.so.1.0.0 /usr/lib/arm-linux-gnueabihf/libpcsckai.so
$ cd /usr/lib/arm-linux-gnueabihf/pkgconfig
$ sudo cp libpcsclite.pc libpcsckai.pc
$ sudo nano libpcsckai.pc
Libs: -L${libdir} -lpcscliteをLibs: -L${libdir} -lpcsckaiとする
# arib25とrecdvbの導入
$ wget http://hg.honeyplanet.jp/pt1/archive/c44e16dbb0e2.tar.bz2
$ tar -xvjf c44e16dbb0e2.tar.bz2
$ cd pt1-c44e16dbb0e2/arib25/
$ nano src/Makefile
PCSC_CFLAGS ?= `pkg-config libpcsclite –cflags`
PCSC_LDLIBS ?= `pkg-config libpcsclite –libs`
の「lite」を「kai」とし、保存する
$ make
$ sudo make install
# dogeel版じゃないと動かないです…。
$ git clone https://github.com/dogeel/recdvb.git
$ cd recdvb
# pt1_dev.hを差し替え
$ wget -O pt1_dev.h https://pastebin.com/raw/rJATXC7r
# インストール
$ ./autogen.sh
$ ./configure --enable-b25
$ make
$ sudo make install
# SoftCas更新
$ sudo hexedit /usr/lib/arm-linux-gnueabihf/libpcsckai.so
# anonfile.com/4au9K99dnd (2019/06 Unlocked Key)
$ cd /usr/lib/arm-linux-gnueabihf
$ wget -O libpcsckai.so file.ioのURL
Node.js、PM2、Mirakurunの導入
# Node.jsのバージョンを指定(2019/09 現在)
$ sudo npm install -g n
$ n 10.16.1
# PM2の導入
$ sudo npm install pm2 -g
# Mirakurunの導入
$ sudo npm install mirakurun -g --unsafe --production
$ sudo npm install rivarun -g
Mirakurunの設定
# チューナー、チャンネル設定
$ cd /usr/local/etc/mirakurun/
$ wget -O tuners.yml https://pastebin.com/raw/hHZnV14P
$ wget -O channels.yml https://pastebin.com/raw/aG7nA87e
# Mirakurunの再起動
$ sudo mirakurun restart
ログ設定
# pm2-logrotateをインストール
$ sudo pm2 install pm2-logrotate
# 毎日ログを圧縮して一週間分保存
$ cat << 'EOT' | sudo tee /etc/logrotate.d/mirakurun
/usr/local/var/log/mirakurun.stdout.log
/usr/local/var/log/mirakurun.stderr.log
/{
daily
compress
rotate 7
missingok
notifempty
}
EOT
# Mirakurunの再起動
$ sudo mirakurun restart
EPGStationの導入
# EPGStationの導入
$ git clone https://github.com/l3tnun/EPGStation.git
$ cd EPGStation
# インストール(時間かかるよ)
$ sudo npm install --unsafe-perm=true --allow-root
# ビルド(時間かかるよ)
$ sudo npm run build
# SQLite3使用時の正規表現での検索の有効化
$ wget https://www.sqlite.org/2019/sqlite-amalgamation-3290000.zip
$ wget https://www.sqlite.org/2019/sqlite-src-3290000.zip
$ unzip sqlite-amalgamation-3290000.zip
$ unzip sqlite-src-3290000.zip
# regexp.cのコピー
$ cp sqlite-src-3290000/ext/misc/regexp.c sqlite-amalgamation-3290000
# ビルドしてファイルのコピー
$ cd sqlite-amalgamation-3290000
$ gcc -g -fPIC -shared regexp.c -o regexp.so
$ sudo cp regexp.so /home/pi/EPGStation/data/
# 設定ファイルのコピー
$ cd /home/pi/EPGStation/
$ sudo cp config/config.sample.json config/config.json
$ sudo cp config/operatorLogConfig.sample.json config/operatorLogConfig.json
$ sudo cp config/serviceLogConfig.sample.json config/serviceLogConfig.json
# config.jsonの編集
$ sudo nano config/config.json
// config.json (最低限。その他は公式参照。)
# ffmpeg/ffprobeの場所書き換え
"ffmpeg": "/usr/bin/ffmpeg",
"ffprobe": "/usr/bin/ffprobe",
# 正規表現での検索の有効化
"sqlite3": {
"extensions": [
"/home/pi/EPGStation/data/regexp.so"
],
"regexp": true
},
# 動作確認済み config.json
$ wget -O config/config.json https://pastebin.com/raw/PyV6s7ec
PM2を使ってスタートアップへの登録
# スタートアップへ登録
$ sudo pm2 startup
# EPGStationの起動
$ sudo pm2 start dist/server/index.js --name "epgstation"
# 状態保存
$ sudo pm2 save
ポイント
# SoftCas注意事項
順番に書き換えが必要。一度書き換えたら保存すること。
鍵はこ↓こ↑か5chへ。もしくは解錠済みをDLして置き換え。
PWはとある人物をTDN表記にしたもの。
ディレクトリはarm環境用です。x64とかは適当に。
# Mirakurun注意事項
Mirakurunの設定をしっかりと確認する。
地デジはマスプロのpdfを確認。
dmesgでチューナーのアダプター番号を確認して指定する。
Node.jsのバージョン指定終了後に、再起動したほうが良いかも。
Mirakurunを多段利用するのであれば、この様に記述する。
再起動後はerror吐きやすいので注意。挿し直して再起動。
mirakurun logで動作確認。
15-30分程度放置してからEPGStationをインストールする。
# EPGStation注意事項
すぐにスタートアップに登録するのではなく、npm startで動作確認する。
error吐いたら恐らくconfig.jsonの記述ミス。大体カンマ忘れ。
正常動作を確認後スタートアップに登録する。
config.jsonいじったらpm2 restart epgstationで再起動。
cpufreqで倍率固定とswap調整で結構安定する。
ラズパイ4ならデフォ設定でいけるかも?
# その他
Sambaと録画先の設定などは適当に。
Webminで幅広く設定できる。
自動更新設定やリポジトリの登録なども出来て万能君。
ターミナルまであるから作業が捗る。便利。
EPGStationも徐々に完成形になりつつある。近々に更新予定らしい。
Amatsukazeと連携して自動エンコードが出来る。
保存先をNASにしてPlexとかで見れるようにすると便利。
Kodi用のプラグインもある。シームレスに視聴が出来て快適。
BonDriver_Mirakurunのおかげで、TVTest環境でも視聴可能。
Meruruを使えば、Mac環境でも簡単に視聴可能。
EPGStation-Notifierを使えば、予約番組の通知も可能。
EPGS-to-Discordを使えば、Discordへ通知が可能。
各種リンク及びショートカット
EPGStation
http://raspberrypi.lan:8888/
Webmin
https://raspberrypi.lan:10000/
Raspbian Lite
https://downloads.raspberrypi.org/raspbian_lite_latest
Rufus
https://github.com/pbatard/rufus/releases/
TVTest
https://github.com/tsukumijima/TS-Soft-Built
DTV板
https://mevius.5ch.net/avi/
SSH接続用ツール
https://mascii.github.io/wpa-supplicant-conf-tool/
file.io
https://www.file.io/
SoftCasの鍵
https://anonfile.com/4au9K99dnd/
まとめ
B-CASが邪魔?挿さなくてヨシ!!
この記事が気に入ったらサポートをしてみませんか?