見出し画像

ラズパイ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 をダウンロード。

↑クリックでWindows版をDLできます

以前使った時はVersion 1.2とかでしたが、1.6以降に便利なアップデートが行われていて、なんとイメージを書きこむ際にSSHやWiFiの設定など、最初によくやる初期設定が同時に出来ちゃうようになっていました。
Ver1.6では隠しコマンドを打たないとダメだったようですけれど、V1.7で正式に初期設定がアイコンクリックでできるようになりました。

何気に日本語化もされてます

ここでOSは

otherの先を選択
Raspbery PI OS Lite を選択

Raspberry PI OS Lite (32-bit)を選びます。

ここで先ほどの歯車マーク、設定アイコンをクリックすると

詳細設定画面

「詳細な設定」がここでできちゃいます。沢山のラズパイを同じ設定で書きこみたい時などはカスタマイズオプションで「いつも使う設定にする」にしておくと便利!
立ち上げてからいろいろ初期設定しなくちゃいけなかったのがこれでだいぶ楽になりましたねー(∩´∀`)∩☆

※欲を言えばIPアドレスの固定とかもここでやらせてくれればありがたかったけど……それは今後に期待ってことで!

適当なマシン名、パスワード、WiFiの設定などを行って、書きこみGO!です。

SDカードが焼けたら

まずIPアドレスの固定

RaspberyPiにカードを差し込んで、先ほど設定した ユーザー名とパスワードを使い、〈マシン名.local〉にsshでログインします。

みんな大好きteraterm
自分のIPアドレスは ip a で見れます。

まあこのまま運用しても良いんですが、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を立ち上げ、

1 System Options
S6 Network at Boot

ネットワーク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

そしたらちゃんとマウントできてました。よしよし☆彡

以前のシステムでは /mnt/nas だったマウントポイントを /data にしてます。

ハードウェアエンコードの有効化

 $ 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、

dmesg でインストールできたか確認

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 表示してみると、こんなかんじになるはず。

番組表。ちゃんと取得できてます☆ 試しに録画テスト中

無事に録画できることを確認して

まちカドまぞく2丁目!

予約をセット!
これで安心!(この録画に間に合わすために作ってたのですねw)

さて、これで本来この記事は終了~♪ と思っていたのですが、実際に使ってみたところ、どうもm2tsでの録画はちゃんとできているものの、h264へのエンコードに失敗してしまっているようです。
なので、エンコードを行う方法を追記してみようとおもいます。

追記:

ここから先は

4,007字 / 4画像
この記事のみ ¥ 150

よろしければサポートお願いします!いただいたサポートはクリエイターとしての活動費にさせていただきます!感謝!,,Ծ‸Ծ,,