11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

11
Last updated at Posted at 2021-10-02

初版:2021/10/1
更新:2026/2/11 いろいろ微妙に修正

メンテ&トラブルシューティング
 ∟ 定時診断スクリプト
前編
 1.ラズパイとサーバーの概要
 2.録画に必要なものを集める、購入する
 3.OSのインストールとセットアップ
 4.NASの構築
後編(docker-dvb版)
 5.チューナードライバの導入
 6.docker-mirakurun-epgstationの導入
後編(docker-px4_drv版)
 5.チューナードライバの導入
 6.docker-mirakurun-epgstationの導入
後編(非docker版)
 5.チューナーの導入、テスト録画
 6.運用のためのツール、mirakurun、epgstation
運用実践編
 7.録画管理方法
 8.エンコードと再生
 9.システムバックアップ
●まとめ版 now!
番外.Mirakurunのチャンネル手動設定
番外.ラズパイ用ケース作成

*現在、少しずつ改修を行っています。こちらの更新は少し遅れますのでお気を付けください。26/1/30

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

主な必要なもの

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

流れ (2026現在の私案順序)

1.OSをSD等へインストール
 +チューナー設定ファイル、スクリプト等をコピー
2.VNCの有効化やIPアドレス固定、他設定
3.Sambaのインストール
4.ディスクのマウント(必要な場合)
<再起動>
5.アップデート
6.docker // ドライバ // (px4のチューナーコマンドrecisdb)
 ↑現状この順がスムーズか
<再起動>
7.docker-mirakurun-epgstationまたはその代替

コマンド実行方法:Win上でSSH?VNC上でコマンド?VNC上でbash一括?

インストールなどのコマンドは、Win上からTeratermなどのSSHツールを使って実行するか、VNCで遠隔でコマンド操作か、VNC上で事前作成したbashシェルスクリプトを使うか?
SSH→速い(レスポンスが早い、コピペがスムーズ)、初回起動時からできる。ただし、Winの電源を切れないためトイレやお風呂放置はいいが寝る前の放置には向かないか
VNC→実行に時間がかかるコマンドを実行中にPCの電源を消して放置可能(Pi上で実行しているため当然)。こまごまとコマンドを打つ場合はSSHの方がスムーズ。
bash→一括実行なので楽。ただし意味を知らずに脳死で実行すると何らかの理由でうまくいかなかったときにてこずるので、実は中上級者向け。

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

Raspberry Pi ImagerやRufusなどを使いイメージファイルをSDに書き込む。バージョンは何ともだが最新もいいが最新のひとつ前を使うのも手。上級者ならGUI一切不要のLiteを選んでもでいいが、一般的にはVNCも考えwithdesktop推奨。スマホからVNCでシャットダウン/再起動もやりやすいという長所もある。
・大概の場合、imagerで事前設定する。使わない場合はここでは書かない。

ここまでWin上でディスク制作
---------------------
ここから遠隔またはラズパイでの操作

起動、設定

まずはSSHで接続.
# ラズパイのIPアドレスが192.168.1.22の場合。
# <コマンドプロンプトやPowerShellなどを使う>
# デフォがDHCPでIPアドレス不明なので、順に試すかスキャンする。
ssh pi(ユーザー名)@192.168.1.22
# またはpi(ユーザー名)@***.localを使ってもよい
ssh pi(ユーザー名)@raspberrypi.local
# (パスワードのデフォはraspberry。↑もちろん.22だった場合)

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

<teratermなどのツールを使用する場合>
考え方は基本的に上と同じ。省略。
pi(ユーザー名)@192.168.1.22

SSHで接続したら、

ターミナルなどから設定ツールを起動。.
sudo raspi-config
# ここで準必須なのはVNC (GUI使わないなら不要)
# ・VNCをオンにする(推奨)
# 残りは後からでも問題ないのでわからなければスルーでOK
# ・解像度を設定する
# ・無線LANの設定
# ・ロケールの設定でjpを追加
# ・タイムゾーン設定でtokyoに

# なおVNC有効化は↓のコマンドでも可能。シェルスクリプト構築ならコマンドの方がよさそう。
sudo raspi-config nonint do_vnc 0

*ここではエディタにnanoを使用していますが、他のエディタの場合nano部分を適宜読み替えてください

IPアドレス固定(再起動前ならどこでもOK。再起動後にIPが適用される).
sudo nmtui
# なおOSが古い場合はdhcpcdを使うことになる
swapを無効化。メモリ2GB↑モデルならしておいていいかと。.
パッケージ削除とswapファイル削除も。
sudo swapoff --all;sudo apt remove -y dphys-swapfile;sudo rm /var/swap
HDD/SSDブートする場合にパーティションを分割してシステムとデータを分ける場合.
gpartedを入れておく。マネージャ(GUI必須)または
sudo apt install -y gparted
【できるだけ早くGUIを使いたいorパーティションサイズ調節したい場合】はここで再起動。.
再起動後はIPアドレスは固定されていることに留意。
sudo reboot

USB接続のHDD/SSDがある場合にはマウント作業を行う。
HDD/SSD自体から起動している場合は不要。

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

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

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

書き込み権限緩和。
sudo chmod 777 /mnt/external
マウント先パスが/mnt/externalの場合。
Raspberry Pi OSをアップデート.
*なおここら辺から連続実行やろうと思えばできる。
sudo apt update;sudo apt upgrade -y

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

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

dockerの導入

docker版。ここら辺ちょっと時間かかったはず

dockerの設定.
dockerパッケージインストール、バージョンの確認
curl -sSL https://get.docker.com | sh;docker -v

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

Sambaサーバーのインストール

LAN越しにファイルにアクセス。

Sambaのインストールおよび設定.
インストール。samba-common-binは無くてもできそうだが。
sudo apt install samba samba-common-bin -y

設定(適用は後でも可能なようなので後でもOKかもしれない)
sudo nano /etc/samba/smb.conf

---smb.confの内容。一番後ろにでも追記.-----
# Windows等からアクセスするとまずshareが見える。マウント先ディレクトリ(例:docker-mirakurun-epgstationの標準保存先)は事前に作っておく。
[share]
comment = Share
path = /home/pi/docker-mirakurun-epgstation/recorded
public = yes
guest ok = yes
read only = no
force user = pi

[sharehome]
comment = Share
path = /home/pi
public = yes
guest ok = yes
read only = no
force user = pi
------------------------

チューナーのドライバ [dvb/px4_drv(非公式ドライバ) with docker]

[dvb]ドライバのインストール(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/
[px4_drv]ドライバとファームウェア、recpt1etcのインストール.
# ドライバ px4_drv
# *ただし、最新版を入れるため、githubのページに飛んだ方がいいと思います。
wget https://github.com/tsukumijima/px4_drv/releases/download/v0.5.5/px4-drv-dkms_0.5.5_all.deb
sudo apt install -y ./px4-drv-dkms_0.5.5_all.deb

# チューナーコマンド recisdb
# *ただし、最新版を入れるため、githubのページに飛んだ方がいいと思います。
wget https://github.com/kazuki0824/recisdb-rs/releases/download/1.2.3/recisdb_1.2.3-1_arm64.deb
sudo apt install ./recisdb_1.2.3-1_arm64.deb
rm ./recisdb_1.2.3-1_arm64.deb

# チャンネルスキャン。ついでに入れておいて問題なさそう。
# *ただし、最新版を入れるため、githubのページに飛んだ方がいいと思います。
sudo wget https://github.com/tsukumijima/ISDBScanner/releases/download/v1.3.3/isdb-scanner-arm -O /usr/local/bin/isdb-scanner
# バックアップ済みの設定ファイルを使うならスキャンは不要
sudo chmod +x /usr/local/bin/isdb-scanner

再起動

sudo reboot またはGUIから。
docker-mirakurun-epgstation導入の前には再起動しておく必要があるようだ。

mirakurunとepgstationの導入

TSチューナーが接続されている(電源が入っている)ことは確認しましょう。

mirakurun-epgstation-dockerの導入[dvb].
px4の場合は下の方を参照。

[基本不要]git必須...だが少なくともラズパイOSは標準で入っている
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起動時のスタートアップ設定は特に行う必要はない。
mirakurun-epgstation-dockerの導入[px4_drv].
# px4の場合、まずclone、編集してからインストールする。
git clone https://github.com/l3tnun/docker-mirakurun-epgstation -b v2 docker-mirakurun-epgstation

cd docker-mirakurun-epgstation
cp docker-compose-sample.yml docker-compose.yml
cp epgstation/config/enc.js.template epgstation/config/enc.js
cp epgstation/config/config.yml.template epgstation/config/config.yml
cp epgstation/config/operatorLogConfig.sample.yml epgstation/config/operatorLogConfig.yml
cp epgstation/config/epgUpdaterLogConfig.sample.yml epgstation/config/epgUpdaterLogConfig.yml
cp epgstation/config/serviceLogConfig.sample.yml epgstation/config/serviceLogConfig.yml
mkdir mirakurun/run
mkdir mirakurun/opt
mkdir mirakurun/opt/bin
cp -p /usr/bin/recisdb mirakurun/opt/bin/
ls -la mirakurun/opt/bin/

nano docker-compose.ymlを編集する。
# 右クリック等でテキストエディタで編集してもよい
# ■ volumesについて、
        volumes:
            - ./mirakurun/conf:/app-config
            - ./mirakurun/data:/app-data
# の下に、
            - ./mirakurun/run:/var/run/
            - ./mirakurun/opt:/opt/
# を加える
# ■ deviesについて、
        devices:
# の下に、MLT5の場合これ↓を加える
            - /dev/pxmlt5video0:/dev/pxmlt5video0
            - /dev/pxmlt5video1:/dev/pxmlt5video1
            - /dev/pxmlt5video2:/dev/pxmlt5video2
            - /dev/pxmlt5video3:/dev/pxmlt5video3
            - /dev/pxmlt5video4:/dev/pxmlt5video4
# dvbのチューナーをつないでいない場合(両方積んでいる人は稀か)は削除orコメント化
            - /dev/dvb:/dev/dvb

ymlファイル関連(オプション).
# チューナー設定やチャンネル設定について。
# compose前にチューナーやチャンネルの設定を行っておけば、長い初回起動を放置できる。
# 今まで使っていたファイルがあるなどの場合はお勧め。(もちろん起動後も可能だが)
# バックアップしたchannels.yml server.yml tuners.ymlを使う場合は
# パミッション設定したのちsambaや何らかのUSB等からコピー。
# (パミッションを変更するとwin上からsamba経由で上書きコピー可)
sudo chmod 777 docker-mirakurun-epgstation/mirakurun/conf/*.yml

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

# チャンネル設定については、スキャンする方法と手動で設定する方法がある。
# 個人的には、できるなら手動で設定した方が早く確実だと思ってしまう。
sudo nano docker-mirakurun-epgstation/mirakurun/conf/channels.yml
細かな設定(オプション).
# 録画したファイルの保存場所を編集(GUIでテキストエディタで開いて編集してもよい)
nano docker-mirakurun-epgstation/docker-compose.yml
# 編集する場所は、epgstation>volumes>recordedの部分について、
# - <録画ファイルを置くフルパス>:/app/recorded にする。
- /home/pi/録画:/app/recorded
# なお、理由不明だが _ から始まるフォルダ名を指定して録画できない現象が発生した。
# 変更を適用するにはdockerかPi自体の再起動。

# デフォルトの保存ファイル名、他各種設定(GUIでテキストエディタで開いて編集してもよい)
nano docker-mirakurun-epgstation/epgstation/config/config.yml
# 書き換える場所は、recordedformat:の部分。まぁこれは見てわかるでしょう。
設定が済んだら構築と初回起動.
docker-mirakurun-epgstationを構築、起動して完了。
# ここは初回時間かかる上に、後は放置すれば番組表も
# 取得してくれるので VNC上で実行 がお勧め。
cd docker-mirakurun-epgstation;sudo docker compose pull;sudo docker compose up -d;cd ~
dockerの停止や再起動.
dockerを再起動するには
cd docker-mirakurun-epgstation; sudo docker compose restart; cd ~
停止したい場合。どちらもディレクトリ移動してから。
cd docker-mirakurun-epgstation;sudo docker compose down;cd ~

安定性は高いので必須ではないが、定期的に再起動するのも悪くはない
ただし少なくともQ1UDは補助電源挿したままだとPiの起動ができないので、Pi自体再起動するには例により
・再起動時に補助電源を抜き、起動したら挿す
・セルフパワーハブを経由させる
・逆流防止のダイオードを間にかませる
などの対策が必要になることは注意。dockerだけ再起動なら不要。

スクリプトなどを使いepgstationなどのapiをたたく場合はjqコマンドがあった方がよい.
sudo apt -y install jq
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の場合)に接続。

録画されたデータをWindows上で参照するのであれば
\\192.168.1.11\share\ (PiのIPが11の場合)を参照する。
ここでは\で表記されていると思うが実際は例により¥です。

* 作成が終わってからのメンテ:
トラブルシューティングとかを参照願います。

11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?