Raspberry Pi 4 で録画サーバー作り(PX-W3U4 + Mirakurun + EPGStation)
はじめに
昨年ラズパイ4を買って録画サーバーを作ったのですが、なぜか動作が止まってしまったので(原因究明は面倒なのでしなかった)、再セットアップのついでにやり方についてまとめる。 完全に自分用備忘録。
準備
準備物
- Raspberry pi 4 (Model B/4GB)
- micro SDカード (16GB)
- micro SDカードリーダー
- 有線LAN環境
- QNAP NAS(詳細は別記事)
- PLEX PX-W3U4
- B-CASカード
- B-CASカードリーダー
環境
- Windows 10 Pro(設定、視聴PC)
- Raspbian buster
手順
1. Raspbianインストール
公式からインストーラーが出ててびっくり。
今まで色々入れていたのはなんだったのか。 Raspberry Pi Imager for Windowsを選択してダウンロード、インストール、起動。
起動するとこのような画面になるのでまずは左のChoose OS。
SDのフォーマットもこれまでは別ソフトで行っていましたが、Eraseから出来ます。なんて便利!!!
画像では複数のメディアが表示されていますが、通常は1つのはず。ディスク容量やラベル(CとかDとか)を見て正しいSDカードを選びましょう。
WRITEでフォーマットできます。
フォーマットが完了したらいよいよOSを入れていきます。先程のOS選択で今回は一番上のRaspbianを選択しました。 レッツ書き込み。あまり良いSDじゃないのでまあまあ時間かかりました。
終わった!!
2. SSH設定
SDカードのルートディレクトリ直下にsshという名前のファイルを作成することで、ssh接続ができるようになります。 Windowsなので普通にGUIで作りました。
3. SSHコマンドログイン
Raspberry PiへSDカードを刺して、電源コードをUSB-C端子へ刺す。 起動するので、Windows PowershellでSSH接続していきます。
ssh pi@raspberrypi.localを叩いてログイン。デフォルトのパスワードはraspberry。
4. raspi-configで初期設定
以下参考
https://hiroto-k.hatenablog.com/entry/2020/03/04/190000
raspi-configコマンドを使ってタイムゾーンを変える。 日本になっていないかもしれないので、Asia→Tokyoを選びましょう。
5. ユーザ名、パスワードを変更
初期設定はあまりにも危ないので流石に変えよう。 piユーザで何かやってからにすると面倒なのでできるだけ早くここはやる。
pi ユーザーでログインしたままユーザー名を変えるのは不可能なので, 一旦作業用ユーザーを作って実行する.
$ sudo useradd -M tmp $ sudo gpasswd -a tmp sudo $ sudo passwd tmp
一旦ログアウトして tmp でログインする.
$ sudo usermod -l newuser pi $ sudo usermod -d /home/newuser -m newuser $ sudo groupmod -n newuser pi
もしこの時にusername変換でうまくいかないときは、raspi-configのBoot option→B1 Desktop / CLI→B1 Consoleを選択してリブートするとうまくいく。
ログアウトして newuser でログインし直し, 作業用ユーザーを削除する.
$ sudo userdel tmp
newuser のパスワードを変える.
$ sudo passwd newuser
6. 環境構築に必要なパッケージ取得
/etc/apt/sources.list を編集する。
# 国内のミラーを追加 $ 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
ここまで引用
7. IPアドレス固定
ルーター側設定でIPアドレスを固定。やり方はルーターによって違うので割愛。
8. apt更新
いつもの。
$ apt update $ apt upgrade -y
9. NASへの自動マウント設定
以下を参考。
https://www.mana-cat.com/entry/2017/05/02/164244
$ sudo apt-get install cifs-utils $ sudo mkdir /mnt/nas $ sudo nano /etc/fstab 以下を追記 //$(NASのIP)/$(ディレクトリパス) /mnt/nas cifs username=xxxxxxx,password=xxxxxxxx,file_mode=0777,dir_mode=0777,iocharset=utf8,uid=1000,gid=1000,forceuid,forcegid,_netdev 0 0
OS起動後、NASが自動的にマウントされるようにブートオプションを変更する。ネットワークサービスが起動されてからブートするようにタイミングを変えないと、fstabに設定したNASのマウントが失敗する。
raspi-configから「3 Boot Options」→「B2 Wait for Network at Boot Choose whether to wait for network」→Yes
これで設定は完了。再起動して「df -h」コマンドでマウントできるか確認する。
10. チューナーセットアップ
今回使うのはPX-W3U4。 以下を参考。
https://note.com/gk2hk/n/nabd30328bc34
# チューナードライバのダウンロード $ 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メモリとかチューナーを挿しておく。
11. 録画ツール等の導入
以下を参考。
https://qiita.com/tatsuya_info/items/3583182ac104a4958eac
# recpt1の構築 $ git clone https://github.com/stz2012/recpt1.git $ cd recpt1/recpt1 $ sed -i -e "/^char \*bsdev\[NUM_BSDEV\] = {$/a \ \ \ \ \"/dev/px4video1\",\n\ \ \ \ \"/dev/px4video0\",\n\ \ \ \ \"/dev/px4video4\",\n\ \ \ \ \"/dev/px4video5\"," pt1_dev.h $ sed -i -e "/^char \*isdb_t_dev\[NUM_ISDB_T_DEV\] = {$/a \ \ \ \ \"/dev/px4video2\",\n\ \ \ \ \"/dev/px4video3\",\n\ \ \ \ \"/dev/px4video6\",\n\ \ \ \ \"/dev/px4video7\"," pt1_dev.h $ ./autogen.sh $ ./configure --enable-b25 $ make -j 4 $ sudo make install $ cd /tmp $ recpt1 --b25 --strip [チャンネル] 20 test.ts # Mirakurun # curl -sL https://deb.nodesource.com/setup_10.x | bash - $ sudo apt install -y nodejs npm $ sudo npm install pm2 -g $ sudo npm install mirakurun -g --unsafe-perm --production $ sudo EDITOR=nano mirakurun config tuners
- name: PX4-S1 types: - BS - CS command: recpt1 --b25 --device /dev/px4video0 <channel> - - isDisabled: false - name: PX4-S2 types: - BS - CS command: recpt1 --b25 --device /dev/px4video1 <channel> - - isDisabled: false - name: PX4-T1 types: - GR command: recpt1 --b25 --device /dev/px4video2 <channel> - - isDisabled: false - name: PX4-T2 types: - GR command: recpt1 --b25 --device /dev/px4video3 <channel> - - isDisabled: false
12. Mirakurunの設定
11と同様の記事を参考。
$ sudo mirakurun restart # チャンネルスキャン 時間が掛かるけど、とりあえず待つ $ sudo curl -X PUT "http://localhost:40772/api/config/channels/scan" $ sudo mirakurun restart $ sudo npm install rivarun -g # チャンネルスキャンした結果を確認 $ sudo rivarun --list | sed 's/},/},\n/g' # 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
13. EPGStationの導入
以下を参考
https://qiita.com/SamAkada/items/a4864eff53a304d07932
$ git clone https://github.com/l3tnun/EPGStation.git $ cd EPGStation $ sudo npm i npm@latest -g $ sudo npm install --unsafe-perm=true --allow-root $ sudo npm run build $ 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 $ sudo nano config/config.json # ffmpegの2行の部分に以下4行を挿入 "ffmpeg": "/usr/bin/ffmpeg", "ffprobe": "/usr/bin/ffprobe", "recorded": "/mnt/nas", "recordedTmp": "/mnt/nas", # 自動起動設定 $ sudo pm2 startup $ sudo pm2 start dist/server/index.js --name "epgstation" $ sudo pm2 save
これで設定は終了。
ラズパイのIP:8888にブラウザからアクセスして、この画面が出てきたら成功!!
あとがき
死ぬほど疲れた。 上手く行ったり上手くいかなかったり原因の切り分けが微妙。 でもこれでPCからはもちろん、iPhoneやiPadからでもテレビが見れるし、VPN接続で外出先からも家のNASに入っている録画データにアクセスできる。 最近テレビ見ないけど。