先日、USBストレージから、64ビット版Raspberry Pi OSを起動できるようにしました。
こちらの環境に、4番組同時録画が可能なチューナーを取り付けまして。
EPGStationによる視聴・録画環境を構築させて頂こうと思います。
目次
視聴・録画に必要な機材
基本的に、以前に作成しましたこちらと同じ機材になります。
フルセグ対応チューナー
実際にこちらのチューナーで、4チャンネル同時視聴・録画か可能であることを確認しました。こちらのチューナーは、コンセントが別途必要なのですが。 こちらの変換ケーブルでUSB電源から電源を取り、2年間ほど使用していました。私の環境では問題なく使用できました。他の環境で動作を保証するものではありませんが、ご参考まで。ICカードリーダ
USB 2.0端子に、チューナーとこちらのICカードリーダーを取り付けました。もちろん、カードも必要です。
以上が、実際に動作実績のある機材になります。
USBストレージ
microSDカードは不要です。USBストレージから起動し、そちらに録画します。
具体的なストレージの選択方法は、次の64ビット環境の構築手順の記事を御覧ください。
アーマーケース
サーバとしてご利用する場合、ケースは必ずアーマーケースを選択して下さい。64ビット環境の発熱は大きいですが、真夏のエアコンなし環境でも2年間フリーズせずに動作した実績が御座います。プラケースはお下げ下さい。Raspberry Pi OS 64ビット版環境の構築
microSDカードは使用せずに。容量1TBのUSBストレージから、Raspberry Pi OSの64ビット版を起動しました。
構築手順はこちらの記事になります。
aarch64版、Debian 11 bullseyeベースのRaspberry Pi OSになります。
ディスプレイやキーボードを接続しない場合。こちらの手順で、SSH接続のターミナルで初期設定が可能です。
私の環境は、サーバとして運用するために、スプラッシュスクリーンオフ、CUI、オートログイン無し、静的IPアドレスに設定しました。静的IPアドレスは次の記事になります。
静的IPアドレス設定
サーバとしての運用を想定して、こちらの内容の通り、あらかじめ静的IPアドレスを振りました。
動的IPアドレスでは、ネットワークセグメントを超えられなかったり、Raspberry Piを再起動した場合にサーバとしての動作が不安定になる場合があるためです。
DHCP割り当て範囲と重ならないIPアドレスを割り当てておきましょう。
チューナー用ファームウェアのインストール
チューナーを取り付ける前に。Siano Rio DVBインタフェース用のファームウェアを/lib/firmwareにコピーしておきます。
curl -O 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/
ちなみに、Raspbrry Pi 4用のFedora 37では、既に/lib/firmwareにファイルが最初から存在していました。Linux標準ドライバになったそうですが、Raspberry Pi OS 64ビット版には同梱されていないようです。
チューナーを取り付けた後、すべてのチューナーが正しく認識されているか確認します。
ls -al /dev/dvb*
4つのチューナーのうち、実は2つしか認識されない事がありました。4つ正しく認識されるまで、USB端子を差し直したり、Raspberry Piを再起動したりしました。何か端子の相性のようなものがあるのかもしれません。
正しく認識されれば、以降は安定して動作すると思います。
OS更新
Raspberry Pi OSを最新の状態に更新しておきます。
sudo apt update
sudo apt upgrade -y
sudo apt autoremove -y
何か不要なパッケージのメッセージが毎回出るため、autoremoveで整理しておきました。
Dockerのインストール
録画環境はMirakurunとEPGStationを使用させて頂く予定です。
開発の主体がDockerに移っているとのお話から、Docker版を使用させて頂こうと思います。
実行環境であるNode.jsは、本体のバージョンや、各種モジュールの依存関係で問題が出やすいのかと思います。
そのような中、Docker版を維持されている、その大変さに思いを馳せながら、ありがたく使用させて頂こうと思います。
Docker本体ですが、Raspberry Pi OS標準のパッケージをインストールしました。
sudo apt install -y docker docker-compose
Docker version 20.10.5+dfsg1、docker-compose version 1.25.0がインストールされました。
インストールが完了しましたら、サービスを有効にします。
sudo systemctl enable docker.service --now
sudo systemctl enable docker.socket --now
# 起動してないのでOSを再起動
sudo reboot
# 再起動後確認
systemctl status docker.service
systemctl status docker.socket
あら?何かエラーが発生してサービスが正しく起動していません。
いちどOSを再起動してから、状態を確認してみました。今度は正しくサービスが起動しています。
コンテナ、イメージ、ボリューム等、リストが正しく表示できるようになりました。
これで、Dockerによるコンテナ実行環境が整いました。
docker-mirakurun-epgstationコンテナ実行
EPGStationの実行環境ですが。
こちらのdocker-mirakurun-epgstationを使用させて頂きました。
公式の手順に従い、docker-composeでMirakurunとEPGStationのコンテナを起動する流れになります。
チューナーとICカードの取り付け
インストール前に、チューナーとICカードを取り付けておきます。
コンテナ起動前に、ICカードは忘れずに!
実行環境のインストール
Raspberry Pi OSで実行するにあたり、インストールコマンドにsudoを追加しました。
curl -sf https://raw.githubusercontent.com/l3tnun/docker-mirakurun-epgstation/v2/setup.sh | sudo sh -s
また途中でICカードを認識するようです。
このようなメッセージが表示されて、インストールが完了しました。
docker-compose.yamlファイルの確認
cd docker-mirakurun-epgstation
vi docker-compose.yml
docker-compose.yamlファイルを確認しました。
mysqlコンテナは、mariadbのイメージを使用しているようです。このあたりの使用するイメージの調整や、リスタート設定、ユーザ名パスワード等、必要に応じて変更する感じでしょうか。
私は特に編集せず、そのまま使用させて頂きました。
コンテナ起動
docker-composeコマンドでコンテナを起動します。
sudo docker-compose up -d
イメージのダウンロードや、各種ライブラリのコンパイルが開始されます。
ロードアベレージは4で、全力でコンパイルしている感じです。
コンテナイメージのビルドは、10分以上かかりました。コンテナが作成されて、起動しました。
この時点で、Webブラウザから、EPGStationとMirakurunの管理画面にアクセスできるようです。
pitv.localの部分はご使用のホスト名に合わせて変更して下さい
http://pitv.local:8888/
http://pitv.local:40772/
EPGStationの管理画面は、問題なく表示されましたが。
Mirakurunの管理画面は、ブランク表示でした。録画・視聴の機能上、特に問題は無いのですが、未だにブランク表示のままですが。
次の手順に参りましょう。
チャンネル設定
Mirakurunのチャンネル設定は、APIを使用して行わせて頂きました。
curl -X PUT "http://localhost:40772/api/config/channels/scan"
設定完了後、設定ファイルを確認しました。
sudo vi mirakurun/conf/channels.yml
設定ファイルを確認しますと、チャンネルが重複していましたので、少し調整しました。
重複の削除は、こちらの資料を拝見させて頂きました。
https://www.maspro.co.jp/contact/channel.pdf
コンテナの再起動
設定を調整しましたら、コンテナを再起動して設定を反映します。
sudo docker-compose restart
EPGStationの画面を確認すると、少しずつ番組表のデータがダウンロードされていることがわかります。すべてのチャンネルの番組表が表示されない場合、コンテナを再起動すると、表示される場合がありました。
まあ、もしかすると、のんびり待ったほうが良いのかもしれません。
以上で基本的な録画・視聴環境の構築が完了しました!
ログの表示等
各コンテナのログの表示コマンドなど。
sudo docker-compose logs -f mirakurun
sudo docker-compose logs -f mysql
sudo docker-compose logs -f epgstation
ログを確認しますと。特に問題なくコンテナが動作していることがわかりました。
4チャンネル同時視聴・録画中の負荷
Raspberry Pi 4で、USBストレージからRaspberry Pi OS 64ビット版を起動しました。
その場合の、4チャンネル同時視聴・録画中の負荷はどれくらいでしょうか?
実際に4チャンネル同時にストリーミングしてみますと、全く問題なく視聴することが可能です。
画像を見ますと、視聴と録画のため、arib-b25-streamプロセスが8本走っていることがわかります。
以前、Ubuntu 20.04をUSBストレージから起動した場合の負荷と比較しますと。
Ubuntuの場合、USBストレージから起動すると、なぜかいつも1.0程度の負荷が掛かっており、録画時は2.0~3.0の負荷が掛かっていました。
よって、Raspberry Pi OS 64ビット版を使用したほうが、負荷が低い事がわかりました。
EPGStationの自動起動設定
※22.12.27追記
Raspberry Piを再起動した時。docker-composeが自動起動するように、systemdの設定を行おうと思います。
「docker-mirakurun-epgstation.service」サービスの設定ファイルを作成します。
sudo vi /etc/systemd/system/docker-mirakurun-epgstation.service
次の内容になります。
9行目、/home/hideの部分は、必ずdocker-mirakurun-epgstationの配置場所に変更して下さい。
[Unit]
Description=docker-mirakurun-epgstation service with docker compose
PartOf=docker.service
After=docker.service
[Service]
Type=oneshot
RemainAfterExit=true
WorkingDirectory=/home/hide/docker-mirakurun-epgstation
ExecStart=/usr/bin/docker-compose up -d
ExecStop=/usr/bin/docker-compose down
[Install]
WantedBy=multi-user.target
作成した設定を有効にします。
sudo systemctl enable docker-mirakurun-epgstation.service --now
systemctlコマンドで、サービスとしてdockerコンテナの起動・停止が可能になりました。
念のため再起動して、docker-mirakurun-epgstation.serviceが起動するかどうか確認しました。
Raspberry Pi再起動後、数分すると、問題なくEPGStationが起動しました。
これでサーバとして本格的に使用できそうですね。
Sambaサーバによる録画共有フォルダ設定
録画データをPCから直接視聴・削除できるように、Sambaをインストールしてみました。
こちらの記事になります。
以前構築しました、Ubuntu 20.04 64ビット版の視聴・録画環境と比較しまして。
Raspberry Pi OS 64ビット版の環境のレスポンスは、同等かなと思います。少しストリーミングの開始が遅れる場合がある感じもしましたが、気の所為のレベルです。
ロードアベレージを計測しましたが、Raspberry Pi OSのほうが、定常状態の負荷が低いことがわかりました。
とりあえず。
年末年始の番組の視聴・録画に向けて。新しい環境を整える事ができそうです。
残課題が御座います→2点追記致しました。
Raspberry Pi再起動時のコンテナの自動起動。→追記済録画フォルダのSMB共有・またはメディアサーバ構築→追記済- エンコード環境の確認 →ハードウェアエンコーダーは使用できていません
- docker版は、ハードウェアエンコーダは使用されていないように思えます。※22.12.29現在。
複数チャンネルの同時視聴・録画は、いちど使うと、必須になりますね。もう1チャンネルのみのチューナーには戻れなくなってしまいました。
64ビット環境はとても快適です。Raspberry Pi 4をお持ちでしたら、ぜひ64ビット環境+複数チャンネルの世界へ移行してみて下さい!
コメント
sianoデバイスのファームウェアはDebianのaptリポジトリにて提供されています。但しnon-freeですが。
https://packages.debian.org/ja/bullseye/firmware-siano
apt install firmware-siano -y
又、systemdで管理してるようですが、docker-compose.ymlには既に「reatart:always」が書かれてるので、systemdに登録などしなくてもdockerdによる自動起動が為される筈です。