ラズパイ4を使った地上波録画サーバーを作る まとめ版


初版:2021/10/1
更新:2021/12/19

前編
 1.ラズパイとサーバーの概要
 2.録画に必要なものを集める、購入する
 3.OSのインストールとセットアップ
 4.NASの構築
後編(docker版)
 5.チューナードライバの導入
 6.docker-mirakurun-epgstationの導入
後編(非docker版)
 5.チューナーの導入、テスト録画
 6.運用のためのツール、mirakurun、epgstation
運用実践編
 7.録画管理方法
 8.エンコードと再生
 9.システムバックアップ
まとめ版 now!
番外1.ラズパイ用ケースを100均で制作
番外2.トラブルシューティング(案)

前編と後編およびdocker編では解説を交えて説明してきました。この記事は、SD等にOSをインストールの段階からのコマンドをひたすら記述してていくもの(docker版でお送りします)。どちらかといえば環境構築2回目以降の方向けです。も少し詳しい説明が欲しい方は前編後編docker編を見ておいた方がいいと思われます。

必要なもの

・ラズパイ4(3でもいいがやや力不足かも)
・TS抜きチューナー(USB接続)
・SDカードやUSB-HDD/SSD(システム)
・B-CASカードリーダー
・LANケーブル(Wifiを事前設定できる場合は除く)

Raspberry Pi OSをインストールする

Raspberry Pi Imagerを使いSDに書き込む (32bitの場合)
Rufusなどを使い、ダウンロードしたイメージを書き込む (64bitは現状こちらのみ。別に32bit版イメージ探してきてrufusで書いても構わない。)
書き込みが終わった後には、ブートパーティションに「SSH」というフォルダ(中身は空でOK)を作成。

起動、設定

まずはSSHで接続.
ターミナルやPowerShellなどで
ラズパイのIPアドレスが192.168.1.11の場合
デフォがDHCPでIPアドレス不明なので、順に試すかスキャンする。
ssh [email protected]
(パスワードのデフォはraspberry)

なお、キーが受け付けられないと怒られた場合、
ssh-keygen -R 192.168.1.11

SSHで接続したら、

ターミナルなどで、.
sudo raspi-config
・VNCをオンにする
・解像度を設定する
・無線LANの設定
・ロケールの設定でjpを追加
・タイムゾーン設定でtokyoに

IPアドレスの固定
sudo nano /etc/dhcpcd.conf : 'エディタにnanoを使う場合'

dhcpd.confの内容
interface wlan0 # 無線の場合wlan0。有線はeth0にする。
static ip_address=192.168.1.11/24  # ラズパイのIPを192.168.1.11にする場合
static routers=192.168.1.1  # ルーターのIPが192.168.1.1の場合
static domain_name_servers=192.168.1.1  # ルーターのIPが192.168.1.1の場合

swapを無効化。メモリ2GB↑モデルならしておいていいかと。
sudo swapoff --all

swap機能自体を削除するにはパッケージを削除。
sudo apt-get remove dphys-swapfile

swapファイルを削除
sudo rm /var/swap

Raspberry Pi OSをアップデート
sudo apt-get update
sudo apt-get upgrade

ファームウェアのアップデートを行う場合
sudo apt install rpi-eeprom-update : 'コマンドが未インストールだった時'
sudo rpi-eeprom-update : 'アップデートが可能かを確認'
sudo apt full-upgrade

日本語入力IMEを導入。必須ではない。OnOff切り替えはCtrl+j
sudo apt-get install ibus-anthy

USB接続のHDD/SSDがある場合にはマウント作業を行う。

HDD等をマウントする.
blkid /dev/sda1 : 'HDD等のデバイス認識がsd1の場合。普通はsd1。'

UUIDが出てくる。そのUUIDをfstabに書き込む
sudo nano /etc/fstab

fstabの内容.
# 末尾に以下を追記する。末尾でなくてもいいが、末尾がわかりやすいため
# UUIDが8300c58c-0a67-4dd2-a34b-347c2ead8e58、マウント先パスが/home/pi/ssd、フォーマットがext4の場合
UUID=8300c58c-0a67-4dd2-a34b-347c2ead8e58 /home/pi/ssd ext4 defaults,nofail 0 0

書き込み権限緩和。
chmod 777 /home/pi/ssd : 'マウント先パスが/home/pi/ssdの場合。却下される場合はsudoをつけてみる。'

Sambaサーバーをインストールし、LAN越しにファイルにアクセス。

Sambaのインストールおよび設定.
sudo apt install samba samba-common-bin
sudo nano /etc/samba/smb.conf

smb.confの内容。一番後ろにでも追記.
[share]
comment = Share  # Windows等からアクセスするときに見えるフォルダ名
path = /home/pi/ssd  # マウント先ディレクトリが/home/pi/ssdの場合。事前にmkdirや右クリックで作成。
public = yes
guest ok = yes  # 誰からでもアクセスできるようにする
read only = no
force user = pi  # 常にpiユーザーとしてログインする

ここからはチューナー関連設定。

ドライバのインストール(PX-S1UD/Q1UD).
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/ : 'ファームウェアのフォルダにコピー'

apt-get updateを実行後に再起動をしていない場合はここで再起動しておく。
以降はdocker版で作成する時の手順。

dockerの設定.
dockerパッケージインストール
curl -sSL https://get.docker.com | sh

バージョンの確認
docker -v

権限の追加
sudo usermod -a -G docker $USER

python-pipおよび関連パッケージ導入
 (今後、composeバイナリなどの状況でここら辺は変わるかもしれない)
sudo apt install -y libffi-dev libssl-dev python3 python3-pip python3-dev

docker-composeパッケージインストール
sudo pip3 install docker-compose

docker-composeのバージョン確認
docker-compose -v

mirakurun-epgstation導入前に一度再起動が必要?

mirakurun-epgstation-dockerの導入.
先にgitをインストールする必要あり?
sudo apt install -y git
インストールスクリプト
curl -sf https://raw.githubusercontent.com/l3tnun/docker-mirakurun-epgstation/v2/setup.sh | sh -s

ディレクトリ移動してから起動。初回は時間がかかるので注意。
cd docker-mirakurun-epgstation
sudo docker-compose up -d
cd ~

OS起動時のスタートアップ設定は特に行う必要はない。

もし停止したい場合。もちろんディレクトリ移動してから。
cd docker-mirakurun-epgstation
sudo docker-compose down
cd ~

録画したファイルの保存場所を編集.
nano docker-mirakurun-epgstation/docker-compose.yml
 なお、GUIでテキストエディタで開いて編集してもよい。
編集する場所は、epgstation>volumes>recordedの部分について、
- <録画ファイルを置くフルパス>:/app/recorded にする。
例: - /home/pi/録画:/app/recorded
なお、理由はわからないが、_から始まるフォルダ名を指定すると録画できない現象が発生したので注意。
変更を適用するには、mirakurun-epgstationかPi自体を再起動する。

デフォルトの保存ファイル名、他各種設定
nano docker-mirakurun-epgstation/epgstation/config/config.yml
 なお、GUIでテキストエディタで開いて編集してもよい。
書き換える場所は、recordedformat:の部分。まぁこれは見てわかるでしょう。

チューナー設定
docker版では基本自動的に設定してくれるのでいじる必要はない。もし変える必要があるなら、mirakurunのuiから、もしくはtuners.ymlを編集する。
sudo nano docker-mirakurun-epgstation/mirakurun/conf/tuners.yml

チャンネル設定については、スキャンする方法と手動で設定する方法がある。個人的には、できるなら手動で設定した方が早く確実だと思ってしまう。
sudo nano docker-mirakurun-epgstation/mirakurun/conf/channels.yml
docker-mi~フォルダ上で実行する場合
sudo nano mirakurun/conf/channels.yml

安定性は高いので必須ではないが、定期的に再起動するのも悪くはない

cronを使い、定期的に再起動.
crontab -e

dockerのみ毎日早朝3時57分に再起動するには
57  3 * * * cd docker-mirakurun-epgstation; sudo docker-compose restart; cd ~

Pi自体を月曜と金曜早朝3時57分に再起動するには(外部電源と電力逆流の件には注意して)
57  3 * * 1,5 sudo /sbin/reboot

再起動直後にhdmi出力を無効にするには
@reboot /opt/vc/bin/tvservice --off

録画の予約を行うには、
http://192.168.1.11:8888/ (PiのIPが11の場合)に接続。
Mirakurunの稼働状況を確認するには、
http://192.168.1.11:40772/ (PiのIPが11の場合)に接続。

録画されたデータを参照するのであれば
\192.168.1.11\share\ (PiのIPが11の場合)を参照する

* 作成が終わってからのメンテ:アップデートとか診断とか、についてはトラブルシューティングとかを参照願います。