はじめに
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/
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