LoginSignup
7
5

More than 1 year has passed since last update.

【2022年版】Raspberry Pi 4とChinachuで録画サーバーを立てる

Last updated at Posted at 2022-02-24

はじめに

Chinachuを使って、ここ2年ほど録画サーバーを運用していました。2022年1月に、Raspberry Piの新しいOS「Bullseye」の安定版がリリースされました。OSのアップデートでは、MicroSDを書き直す必要があり、その再構築をした記録です。

以下の記事を参考に、2022年の環境での違いなどを交えつつ書いていきます。
Raspberry Pi 4+Chinachu v0.10.1-gamma.0 地デジ録画サーバー構築
知識0からRaspberryPi4で録画機を作る!

おねがい

他の記事でも言われていることですが、自己責任でサーバーの構築をしてください。
趣味の範囲で、個人的な利用をお願いします。
テレビ番組のコピーや配信は違法になることがあリます。よく注意をして使ってください。
生じた損害に対して、筆者は一切の責任を負いません。

EPG StationとChinachu どっちがいい?

はじめ、Dockerを使ったEPG Stationをインストールしてみました。色々な方法でトライしましたが、うまくいきませんでした。(ラズパイごとダウンしたり)参考にしたサイトではubuntuやCent OSを使っていました。ラズパイはスペック的に非力なので、Dockerを使うのは難しいと思いました。
結論として、ラズパイを録画サーバーにするのであれば、Chinachuを使うことをおすすめします。

使うもの

  • Raspberry Pi 4 ModelB
  • PLEX USB接続ドングル型地上デジタルTVチューナー PX-S1UD V2.0(同時に1チャンネルの録画ができる。4チャンネル同時にできる、PX-Q1UDもある。)
  • SCM ICカードリーダー/ライター SCR3310/v2.0
  • B-CASカード
  • アンテナケーブル
  • HDD(何TBでも)
  • 構築用のPCやWi-Fi環境など

準備

セットアップ

この記事で分かりやすく、解説されています。
Raspberry Pi 4 スタートガイド【2021】セットアップと初期設定
★ OSはFULLバージョンのインストールをお勧めします。

キーボードの日本語入力の設定

Raspberry Piに日本語で入力できる設定方法(fcitx-mozc) で丁寧に解説されています。
※ OSをFULLバージョンでインストールした場合は、設定のみを行います。

セキュリティ対策

ユーザー名やパスワードの変更、ファイアウォールを敷く、SSHは公開鍵認証で通す…などがあります。実際にNASAでは、ラズパイを踏み台にサイバー攻撃がありました。大ごとにならなくても、念を入れておきたいですね。

以下の記事を参考に、ぜひ設定してください。
買ったらまず実施!RaspberryPiのセキュリティ対策
デフォルトだと危険!Raspberry Piの初期セキュリティ対策やってみた

ムダな処理を減らしたければ…

スワップの無効化

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 nano /etc/rsyslog.conf

ファイル中ほどの部分を、以下のように一部コメントアウトします。

# 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

1. sambaのセットアップ

録画したものをPCで見るときなどに使います。

インストール

sudo apt-get update
sudo apt-get install samba

設定

sudo nano /etc/samba/smb.conf

ファイルの一番下の行に、このように入力します。

[rspi]
   comment = Raspberry Pi Share
   path = /mnt/recorded
   guest ok = yes
   read only = no
   browsable = yes
   force user = <ユーザ名>

force user のパスワードを設定します。

sudo smbpasswd -a <ユーザー名>

sambaを再起動しActive(正常)か確認します。

sudo systemctl restart smbd
sudo systemctl status smbd

PCからリモートアクセスをしてください。
Macの場合は、Finderを開き command + Kでサーバへの接続画面となります。smb://<ラズパイのIPアドレス>と入力し、接続できます。

2. チューナーのドライバのインストール

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

チューナーが正しく認識されているか、次のコマンドで確かめます。

dmesg | grep PX-S1UD

[ 2.896943] usb 1-1.4: Product: PX-S1UD Digital TV Tuner のような表示が返って来ればOK。

3. 外付けHDDのマウント

USBを接続

以下のコマンドで認識されているか調べます。

sudo fdisk -l

ここで、/dev/sda1などと認識されていることをチェックします。

Device     Boot Start        End    Sectors   Size Id Type
/dev/sda1        2048 1953525167 1953523120 931.5G 83 Linux

マウント

sudo mkfs.ext4 /dev/sda1
sudo mkdir /mnt
sudo mount /dev/sda1 /mnt

そして、mntフォルダへのアクセスを許可します。

sudo chown 1000:1000 /mnt

再起動時の自動マウント設定

HDDのPARTUUIDを調べます。

sudo blkid /dev/sda1

このように出力されるので、PARTUUIDをコピーしてください。

/dev/sda1: UUID="6c3d3bef-405e-41b4-ay4b-4b1cf71a11c8" BLOCK_SIZE="4079" TYPE="ext4" PARTUUID="d1b117d7-01"

★ UUIDではなく、PTUUIDが出力されることがあります。この場合は、HDDのUSBを挿し直したり、ラズパイの再起動を試してください。

fstabに設定を追加します。

sudo nano /etc/fstab

ファイルを開き、以下のように、付け加えます。

PARTUUID=<コピーしたPARTUUID>  /mnt            ext4    defaults,nofail   0       0

マウントのチェック

一旦、再起動してから確認をします。

sudo reboot
df -h | grep /mnt

こんな感じでmntのディレクトリに、外付けHDDがリンクされていればOK。

/dev/sda1        916G  276G  595G   32% /mnt

4. カードリーダーとB-CASカード

ドライバをインストール

sudo apt-get install build-essential git
sudo apt-get install pcscd libpcsclite-dev libccid pcsc-tools

USBを接続し、型番の確認

lsusb | grep SCM

カードリーダーが認識していると、次のように表示されます。

Bus 001 Device 003: ID 04e6:5116 SCM Microsystems, Inc. SCR331-LC1 / SCR3310 SmartCard Reader

★ 認識しない場合は、lsusbコマンドのみで実行、USBを抜く、または再起動をお勧めします。

B-CASカードの認識確認

sudo pcsc_scan

一番下に、このような表示が出れば成功です。

Japanese Chijou Digital B-CAS Card (pay TV)

control + Cで実行を終了します。
Scanning present readers...で止まっている場合は、control + Cで実行を中止し、USBやB-CASカードを抜いてみると良いかもしれないです。

B-CASのデコード用ライブラリのインストール

暗号化された放送データをlibarib25で復号します。

sudo apt-get install cmake g++ libpcsclite-dev
wget https://github.com/stz2012/libarib25/archive/master.zip -O libarib25.zip
unzip libarib25.zip
rm libarib25.zip
cd libarib25-master
cmake .
make
sudo make install

5. 録画用コマンドツールのインストール

cd
sudo apt install automake
wget http://www13.plala.or.jp/sat/recdvb/recdvb-1.3.2.tgz
tar xvzf recdvb-1.3.2.tgz
cd recdvb-1.3.2
./autogen.sh
./configure  --enable-b25
make 
sudo make install

試しに録画

その前に…録画したファイルの保存フォルダを作成しておきます。

sudo mkdir /mnt/recorded
ls /mnt

ls /mntで、recordedフォルダが作られていることを確認できました。試しに10秒録画をしてみます。
チャンネル番号は、MASPROのチャンネル一覧からお住まいの地域のものを調べてください。

# recdvb [--dev <チューナ番号>] --b25 --strip チャンネル番号 録画秒数 録画ファイル名
  recdvb --b25 --strip 22 10 /mnt/recorded/test.m2ts

実行して15秒ほどして、Recorded 10secと表示されれば録画できています。sambaなどを使い、再生してみましょう。

6. Node.JSのインストール

★ 2022年現在、Node.JSのバージョンが14.17.0〜16.0.0でないと、最新のMirakurunは動きません。
私は初め、他の記事にあるようにv10.16.3を入れてみました。しかし、Mirakurunのインストールをする段階で「Node.JSのバージョンを上げるよう」エラーが出ました。

sudo apt-get install npm
sudo npm install -g n
sudo n 14.17.0
sudo npm install -g npm
sudo n #14.17.0を選択し、Returnキーを押下

Node.JSとnpmのバージョンを確かめます。

node -v
npm -v #またはnpm --version

Node.JSがv14.17.0、npmが6.14.13以上であれば問題ありません。
★ ここでエラーが出ていると、Mirakurunのインストールで行き詰まります。ワーニングは良くても、エラーがないかよくチェックしてください。

7. Mirakurunの設定

インストール

Mirakurunは、チューナーの管理などを自動で行うものです。

sudo npm install pm2 -g
sudo npm install mirakurun -g --unsafe --production

mirakurunのインストールに成功すると、アスキーアート(記号を使ったイラスト)でPM2と書かれたものが出てきます。またmirakurunのステータスが表形式で示されます。
★ エラーが出た場合は、一番上のエラーをまずは読むと解決につながることがありました。(例えば、Node.JSのバージョンが古いなど)

チューナーの設定

tuners.yml を開く。

sudo nano /usr/local/etc/mirakurun/tuners.yml

一番下の行に以下を追記する。

- name: PX-S1UD-1
  types:
    - GR
  command: recdvb --b25 --dev 0 <channel> - -

チャンネルスキャン

curl -X PUT "http://<ラズパイのIPアドレス>:40772/api/config/channels/scan

15分以上かかります。
-> no signal. [Error: 〜 と表示されるチャンネルがありますが、いつも見ているチャンネルの放送局名(TBSなど)が認識されていれば問題ないです。 

8. Chinachuの設定

スマホやPCから簡単に録画ができるようにする、録画サーバーです。

インストール

sudo apt-get install build-essential curl git-core vainfo
git clone git://github.com/kanreisa/Chinachu.git /mnt/chinachu
cd /mnt/chinachu
./chinachu installer

1.Auto を選択し、Chinachuをインストールします。
★ インストールには2~3時間を要します。PCからSSHで実行すると、セッションがタイムアウトし、インストールが上手くいかないことがありました。ラズパイをTVやモニターにつなぎ、そこから実行すると確実です。

初期設定

# /mnt/chinachu の位置で実行
cp config.sample.json config.json
sudo nano config.json

以下のように変更します。

"uid": <実行ユーザー名>,
"recordedDir" : "/mnt/recorded/",
"wuiOpenHost": "0.0.0.0",
"recordedFormat": "<title> <subtitle> <episode>[<channel-name>][<date:yymmdd-HHMM>].m2ts",

録画ファイルの初期設定をします。

cd /mnt
sudo chown <ユーザー名>:video /mnt/chinachu #権限を付与する
ls -la
 # chinachuの行 左から3つ目が <ユーザー名> video になっているかチェックする
echo "[]" > rules.json

Chinachu起動

cd /mnt/chinachu/
./chinachu service wui execute

ログがエラーなく出たら、control + C で停止します。
次に、サービスの登録などをします。

sudo pm2 startup
sudo pm2 start processes.json
sudo pm2 save

ステータスの確認

sudo mirakurun status

このように、3つ認識され、statusが全てonlineであれば正常です。

┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
│ id │ name               │ mode     │ ↺    │ status    │ cpu      │ memory   │
├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
│ 2  │ chinachu-operator  │ fork     │ 0    │ online    │ 0%       │ 54.6mb   │
│ 1  │ chinachu-wui       │ fork     │ 0    │ online    │ 0%       │ 176.8mb  │
│ 0  │ mirakurun-server   │ fork     │ 2    │ online    │ 0%       │ 77.8mb   │
└────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘

番組表の自動更新

./chinachu update

ブラウザから開いてみる

このアドレスでアクセスする。

http://<ラズパイのIPアドレス>:20772/

chinasc.png

Chinachu 機能の要約

  • 1週間先まで番組の予約ができる
  • 番組表は見たいチャンネルのみに選択できる
  • ルール機能で番組を登録すると、その番組を自動で録画してくれる (再放送は除くなど細かく条件を決められる)
  • 左側 縦に並んだバーから、システムの情報が得られる
  • 上から2番目:ステータス 動作しているかどうか
  • 上から3番目:ログ Operatorでjsonの情報、SchedulerからMirakurunの動作について
  • 上から4番目:ストレージ 外付けHDDの使用状況

ラズパイと同じWi-Fiに繋がっていれば、スマホから録画ができ便利です!

課題

  • mp4に簡単にエンコードできるようにしたい
  • たまにラズパイごとダウンしていることがある→更なる安定性

さいごに

OSをアップデートしてから、chinachuの運用まで1週間ほどかかりました。エラーにより、ビルドがうまくいかないなど、よく起こりました。楽しみつつ、粘り強く、構築する大切さを学びました。

参考サイト

Raspberry Pi 4+Chinachu v0.10.1-gamma.0 地デジ録画サーバー構築
知識0からRaspberryPi4で録画機を作る!
Raspberry Pi 4とdocker-mirakurun-epgstationで録画サーバーを構築する (2021年4月版)
Chinachuインストール手順 - GitHub
Mirakurunインストール手順 - GitHub

7
5
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
7
5