ラズパイTVシステム再構築の巻(2022/04)
以前から運用していた(ほおっておいた)RaspberryPiのテレビ録画システムがいつの間にか止まってしまっていました。どうもSDカードが壊れてしまった様子><
仕方ないのでもう一度、今度はラフに1チャンネルだけでも撮れるものを再構築してみます。
※2022/04/04追記:エンコードが上手くできていない件について、記事購入者さま向けに追記いたしました。でも結局できてないですすみません><
もちろん普通にm2tsで録画するだけならこの記事のママでOKですー☆
参考サイト
元ネタ、主にこれにしたがってやります。
作業準備
用意した物
・RaspberryPi 4 8GB
最近半導体不足でべりー高いみたい>< とりあえず本体は壊れていないのでそのまま利用。
・チューナー
まいどおなじみ「PX-S1UD」
・B-CASカード&リーダー
ここらへんを参考に適当に用意。
それと、我が家の場合はNAS環境があるので、そちらに動画データを保存する形にする予定です。
↑参照
作業開始
いつかまた壊れるかもなので、主に自分用に作業のウォークスルーをのこしておきます。
突然ですが Raspberry Pi imager が進化しててすごい!
ラズパイのOS書き込みツールがめっちゃ進化してました!
↑こちらの公式サイトから Raspberry PI imager をダウンロード。
以前使った時はVersion 1.2とかでしたが、1.6以降に便利なアップデートが行われていて、なんとイメージを書きこむ際にSSHやWiFiの設定など、最初によくやる初期設定が同時に出来ちゃうようになっていました。
Ver1.6では隠しコマンドを打たないとダメだったようですけれど、V1.7で正式に初期設定がアイコンクリックでできるようになりました。
ここでOSは
Raspberry PI OS Lite (32-bit)を選びます。
ここで先ほどの歯車マーク、設定アイコンをクリックすると
「詳細な設定」がここでできちゃいます。沢山のラズパイを同じ設定で書きこみたい時などはカスタマイズオプションで「いつも使う設定にする」にしておくと便利!
立ち上げてからいろいろ初期設定しなくちゃいけなかったのがこれでだいぶ楽になりましたねー(∩´∀`)∩☆
※欲を言えばIPアドレスの固定とかもここでやらせてくれればありがたかったけど……それは今後に期待ってことで!
適当なマシン名、パスワード、WiFiの設定などを行って、書きこみGO!です。
SDカードが焼けたら
まずIPアドレスの固定
RaspberyPiにカードを差し込んで、先ほど設定した ユーザー名とパスワードを使い、〈マシン名.local〉にsshでログインします。
まあこのまま運用しても良いんですが、IPアドレスを固定しておきましょー。
$ sudo vi /etc/dhcpcd.conf
で、ファイルの最後に
interface eth0
static ip_address=192.168.1.61/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 8.8.8.8
このような感じでいいでしょう。
※WiFiではなく有線LAN用です。そのほか、各IPはウチの場合です。皆さんの環境に合わせて書き換えてね😋
ここでいったんリブート
$ sudo reboot
再起動後は設定しなおしたIPアドレスでつながるはずです(∩´∀`)∩☆
おやくそくアップデート
$ sudo apt update && sudo apt upgrade -y && sudo apt install locales-all
$ sudo localectl set-locale 'LANG=ja_JP.UTF-8'
とりあえず最新にしておきましょー。
NASへの接続
まずネットワークブートの設定
$ sudo raspi-config
でraspi-configを立ち上げ、
ネットワークat Boot を Enable に。
これでネットに接続してからBootされる(はず)
マウント用ディレクトリを作成
こんなかんじでマウントするディレクトリを作成して
$ sudo mkdir /data
$ sudo chown 1000:1000 /data
※ 2行目のchown は不要(というかここでは意味なし)でした。理由は後述!><
マウントの試験などは出来ている前提で、直接 /etc/fstab を書き換えちゃいます。
$ sudo vi /etc/fstab
で fstabを編集。最後の行に
//《NASのIPあどれす》/TVREC /data cifs username=《ユーザ名》,password=《パスワード》,file_mode=0777,dir_mode=077,iocharset=utf8,defaults 0 0
を追記。
ここで mount -a したらマウントしてくれるはずなのだけれど、うまくいかなかったのでもっかいリブート
$ sudo reboot
そしたらちゃんとマウントできてました。よしよし☆彡
ハードウェアエンコードの有効化
$ echo 'SUBSYSTEM=="vchiq",GROUP="video",MODE="0666"' | sudo tee /etc/udev/rules.d/10-vchiq-permissions.rules
これをコピペ。ハードウェアH264エンコードを有効にします。
スワップの無効化
SDカードの寿命を延ばすためにスワップも無効化しておきます(前回のシステムはこれやってなかったので死亡><)
$ sudo swapoff --all
$ sudo apt remove dphys-swapfile -y
$ sudo sed -i 's/$/ coherent_pool=4M dwc_otg.host_rx_fifo_size=2048/' /boot/cmdline.txt
$ sudo sed -i 's/^CONF_SWAPSIZE=100/CONF_SWAPSIZE=1024/' /etc/dphys-swapfile
$ sudo apt autoremove
ログの最小化
さらにログも最小に。
$ sudo vi /etc/rsyslog.conf
###############
#### RULES ####
###############
#
# First some standard log files. Log by facility.
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
#daemon.* -/var/log/daemon.log
#kern.* -/var/log/kern.log
#lpr.* -/var/log/lpr.log
#mail.* -/var/log/mail.log
#user.* -/var/log/user.log
↑に合わせて要らないログはコメントアウトする。
PX-S1UD V2.0 チューナーのドライバのインストール
$ 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/
$ rm PX-S1UD_driver_Ver.1.0.1.zip
$ rm -rf PX-S1UD_driver_Ver.1.0.1
でおk、
Dockerのインストール
$ curl -sSL https://get.docker.com/ | CHANNEL=stable sh
でインストール。
$ sudo systemctl enable docker
これで、起動時にサービスとして読み込まれます。
gitのインストール
gitも使うからいれておくます
$ sudo apt install -y git
でおk
Docker Composeのインストール
aptで普通に入れようとするとうまくいかないそうで、参考サイトにあわせて自己ビルドします。
$ cd /data
$ sudo git clone https://github.com/docker/compose.git
$ cd compose
$ git checkout 1.27.4
$ sudo ./script/build/linux
けっこうここで時間かかる。ログを見ていると赤い文字でpipがふるいよーとかいろいろいわれてるけれど大丈夫かなー?
$ cd dist
$ sudo cp docker-compose-Linux-armv7l /usr/local/bin/docker-compose
$ sudo chown root:root /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
インストールできたか確認
MirakurunとEPGStationのインストール
git clone でソースコードをもってきます。
$ cd /data
$ sudo git clone https://github.com/CH3COOH/docker-mirakurun-epgstation.git
$ sudo chown pi:pi docker-mirakurun-epgstation
configファイルのコピー。
$ cd docker-mirakurun-epgstation
$ 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
docker-composeを使ってビルドを開始
$ cd /data/docker-mirakurun-epgstation
$ sudo docker-compose run --rm -e SETUP=true mirakurun
$ sudo docker-compose up -d
これまたしばらく時間がかかります。
問題なければこのままMirakurunとEPGStationが立ち上がります。
Mirakurunのチャンネルスキャン
このまま放置していても自動的にチャンネルスキャンしてくれるはずですが、念のため明示的にスキャンをかけておきます。
$ curl -X PUT "http://localhost:40772/api/config/channels/scan"
これまたちょっと時間かかります
こんなのが出たら終了。いちおうリブートしておきましょう。
自動的に dockerさんが立ち上がるはず。
しばらくしてから、ブラウザで IP:8888 表示してみると、こんなかんじになるはず。
無事に録画できることを確認して
予約をセット!
これで安心!(この録画に間に合わすために作ってたのですねw)
さて、これで本来この記事は終了~♪ と思っていたのですが、実際に使ってみたところ、どうもm2tsでの録画はちゃんとできているものの、h264へのエンコードに失敗してしまっているようです。
なので、エンコードを行う方法を追記してみようとおもいます。
追記:
よろしければサポートお願いします!いただいたサポートはクリエイターとしての活動費にさせていただきます!感謝!,,Ծ‸Ծ,,