見出し画像

ラズパイとPX-W3U4で録画リグ構築。(MirakurunxEPGStation+SoftCas)

注意

録画データの著作権などは自己責任で。
SoftCasも闇なので自己責任ですよ。
*リクエストに応えて掲載。未検証です。

用意するもの

1. ラズパイ本体
2. PX-W3U4
3. その他 (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 mercurial sqlite3 ffmpeg cmake g++ autoconf git dkms 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

チューナーのセットアップ

# チューナードライバのダウンロード
$ mkdir -p ~/src/
$ cd ~/src/
$ git clone https://github.com/nns779/px4_drv.git

# ファームウェアのインストール
$ cd ~/src/px4_drv/fwtool/
$ make
$ wget http://plex-net.co.jp/plex/pxw3u4/pxw3u4_BDA_ver1x64.zip -O pxw3u4_BDA_ver1x64.zip
$ unzip -oj pxw3u4_BDA_ver1x64.zip pxw3u4_BDA_ver1x64/PXW3U4.sys
$ ./fwtool PXW3U4.sys it930x-firmware.bin
$ sudo mkdir -p /lib/firmware
$ sudo cp it930x-firmware.bin /lib/firmware/

# チューナードライバのインストール
$ cd ~/src/px4_drv/
$ sudo cp -av ./ /usr/src/px4_drv-0.2.1
$ sudo dkms add px4_drv/0.2.1
$ sudo dkms install px4_drv/0.2.1
$ sudo modprobe px4_drv
$ ls /dev/px4video*
/dev/px4video0
/dev/px4video1
/dev/px4video2
/dev/px4video3

# 再起動
$ sudo reboot now

# 再起動前にusbメモリとかチューナーを挿しておく。

正常に動作しているかを確認

$ dmesg
$ lsusb
$ lsmod | grep px4
$ ls -al /dev/px4*
$ swapon -s
$ cpufreq-info -o

# 何らかのエラーが発生してないか確認。

SoftCas、arib25、recpt1の導入

# 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とrecpt1の導入
$ 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

# honeyplanet版です。
$ cd ~/src/
$ hg clone http://hg.honeyplanet.jp/pt1
$ cd pt1/recpt1/

# sedコマンドで置き換える
$ sed -i 's/pt1video/px4video/g' pt1_dev.h

$ ./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/7NW7LCbQ
$ 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が邪魔?挿さなくてヨシ!!

この記事が気に入ったらサポートをしてみませんか?