Raspberry PiへChinachu / acarsdeco2を導入したときの記録

Raspberry Piに acarsdeco2とChinachuを導入したときの記録です。

modesmixer2の記録は自分メモですので、読み飛ばしてください。

必要機材:

Raspberry Pi基本セット

  • Acarsdeco2:DVB-Tチューナ(RTL2832U) + VHFを受信できる屋外アンテナ
  • Chinachu: PLEX USB接続ドングル型地上デジタルTVチューナー PX-S1UD V2.0
  • Chinachu: SCM ICカードリーダー/ライター B-CAS・住基カード対応 SCR3310

Raspberry Pi初期構築

以下のサイトから「noobs lite」をダウンロードし、解凍してできたファイルをすべてSDカードにコピーします。

コピー終了後、Raspberry Piに挿入すると、起動メニューが開始します。

sshにて接続するまで(Server IP:192.168.11.100)

# sshにてログインするための設定
sudo systemctl enable ssh
sudo useradd USER
sudo passwd USER
sudo /etc/init.d/ssh restart

#  cpコマンドで不可視ファイルをコピーする
sudo cp -r /home/pi/. /home/USER

# vi editor関連の処理
sudo update-alternatives --config editor
sudo apt-get install vim lv screen

# sudo のパスワードを入力なしで使う
sudo visudo
USER ALL=NOPASSWD: ALL

# Raspberry PiのTimezoneをAsia/Tokyoに
sudo raspi-config 

# 固定アドレスを設定する
sudo vi /etc/dhcpcd.conf
static ip_address=192.168.11.100/24
static routers=192.168.11.1

# このあとはsshにて接続し作業を行う。

# ntp の有効化
echo 'NTP=ntp.nict.jp' | sudo tee -a /etc/systemd/timesyncd.conf >/dev/null
sudo systemctl restart systemd-timesyncd
systemctl status systemd-timesyncd | grep nict

# swap の無効化(必要であれば)
sudo systemctl stop dphys-swapfile
sudo systemctl disable dphys-swapfile
sudo rm -f /var/swap

modesmixer導入(今回の記事では不要な作業です:自分メモ)

scp st* USER@192.168.11.100:/home/USER/modes
scp ./BaseStation.sqb USER@192.168.11.100:/home/USER/modes

# TEST
./modesmixer2 --inConnect 192.168.11.170:30334 --inConnect 192.168.21.170:30334 --outServer sbs10001:10001 --outServer msg:30003 --location 43.396:145.128 --web 8080 --db ./BaseStation.sqb --frdb ./flightroute.sqb

# 表示確認

USBチューナ認識確認:DVB-TチューナRTL2832U

lsusb
Bus 001 Device 004: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T

RTL-SDRのインストール & TEST

sudo apt-get install rtl-sdr

sudo rtl_test

以下からacarsdeco2をdownload

acarsdeco2導入

cd
mkdir acars
cd acars

ls
acarsdeco2_rpi2-3_debian8_20181201.tgz
tar -xvzf ./acarsdeco2_rpi2-3_debian8_20181201.tgz

# 再起動し、テストするとError
rtl_test
Found 1 device(s):
  0:  , $, SN: ��v���~L��~ �v���vL��~

Using device 0: Generic RTL2832U OEM
usb_open error -3
Please fix the device permissions, e.g. by installing the udev rules file rtl-sdr.rules
Failed to open rtlsdr device #0.

# Balcklistにデバイスを指定して、再起動。
sudo vi /etc/modprobe.d/rtlsdr-blacklist.conf
blacklist dvb_usb_rtl28xxu
blacklist rtl2830
blacklist dvb_usb_v2
blacklist dvb_core

reboot

# 稼働TEST(sudo必須)
sudo ./acarsdeco2 --freq-correction 65 --freq 131250000 --freq 131450000 --http-port 18090 --net 30008 --no-sq --no-empty

# 確認URL

各種ドライバー等導入

# チューナー(PX-S1UD)導入
cd
mkdir chinachu
cd chinachu
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/

# カードリーダ(SCR3310)導入
sudo apt-get install build-essential git
sudo apt-get install pcscd libpcsclite-dev libccid pcsc-tools

# B-CASのデコード用ライブラリのインストール
sudo apt-get install cmake
wget https://github.com/stz2012/libarib25/archive/master.zip
unzip master.zip
cd libarib25-master
cmake .
make
sudo make install

# 動作確認
pcsc_scan

# 録画コマンドインストール
cd
cd chinachu
sudo apt-get install autoconf automake
wget http://www13.plala.or.jp/sat/recdvb/recdvb-1.3.1.tgz
tar xvzf recdvb-1.3.1.tgz
cd recdvb-1.3.1
./autogen.sh
./configure  --enable-b25
make 
sudo make install

# 録画テスト
sudo recdvb --b25 --strip 37 5 /tmp/video/test_ch37-4sec.ts

# 参考:ローカルネットワーク経由でのリアルタイムストリーミング配信
recdvb –-b25 –-strip -–http 8082

# VLCでのstreaming受信確認
VLC → File → Network
[物理チャンネル]


# node-v6 install
cd ~/chinachu
sudo apt-get install npm
wget https://nodejs.org/dist/v6.11.2/node-v6.11.2-linux-armv7l.tar.xz
tar -xvf node-v6.11.2-linux-armv7l.tar.xz
cd node-v6.11.2-linux-armv7l
sudo cp -R * /usr/local/

Mirakurun 導入


# Mirakurun
sudo apt-get install npm
sudo npm install -g n
sudo n 10.16.3
sudo npm install -g npm

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

# 起動確認
sudo mirakurun status

# Tuner設定
sudo cat /usr/local/etc/mirakurun/tuners.yml

-----------------------------------------------------------

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

-----------------------------------------------------------

# 物理チャンネル番号を登録する。(時間がかかる)
curl -X PUT "http://localhost:40772/api/config/channels/scan"

# Mirakuranを起動
sudo mirakurun start

# mirakurun起動確認


# リアルタイムストリーミング配信
[物理チャンネル]/stream

# ログローテート関連
sudo pm2 install pm2-logrotate
sudo vi /etc/logrotate.d/mirakurun

/usr/local/var/log/mirakurun.stdout.log
/usr/local/var/log/mirakurun.stderr.log
/{
  daily
  compress
  rotate 7
  missingok
  notifempty
}

Chinachu導入

# Chinachu本体
sudo apt-get install build-essential curl git-core vainfo
git clone git://github.com/kanreisa/Chinachu.git ~/chinachu/chinachu/
cd ~/chinachu/chinachu/
./chinachu installer
 1. Auto を選択

# 録画ルールの初期ファイルを作成
# 作成しない場合はアニメと笑点辺りを自動で録画するルール(rules.sample.json)が設定されます。
$ echo "[]" > rules.json

# 録画設定ファイルの作成
cp config.sample.json config.json

# uid, recordedDir, temporaryDir, recordedFormat 辺りを編集。
vi config.json
  "uid": "<追加ユーザ>"
  "recordedDir" : "/tmp/video/raspberry/recorded/",
  "temporaryDir" : "/tmp/video/raspberry/",
  "recordedFormat": "[<date:yymmdd-HHMM>]_<title>.ts",

# NodeJSのシンボリックリンク作成
# node のシンボリックリンク先を確認
cd .nave
ls -la
> node -> /mnt/hdd1/chinachu/.nave/installed/10.16.3/bin/node
> npm -> /mnt/hdd1/chinachu/.nave/installed/10.16.3/bin/npm

# 実際には[10.23.0]を参照しているが、動作に問題は出ていない。
lrwxrwxrwx 1 chinachu chinachu 63 Jan 10 02:13 node -> /home/USER/chinachu/chinachu/.nave/installed/10.23.0/bin/node
lrwxrwxrwx 1 chinachu chinachu 62 Jan 10 02:13 npm -> /home/USER/chinachu/chinachu/.nave/installed/10.23.0/bin/npm

# こちらも実際には[10.23.0]を参照しているが、動作に問題は出ていない。
n でインストールした上記と一致するバージョンのnodeへのシンボリックリンクを作成
cd installed/
ln -s /usr/local/n/versions/node/10.16.3 10.16.3

# chinachuの起動確認
~/chinachu/chinachu/chinachu service wui execute

Ctrl+Cで停止

# chinachuの自動起動
cd ~/chinachu/chinachu
sudo pm2 startup
sudo pm2 start processes.json
sudo pm2 save

# chinachuの番組表更新
~/chinachu/chinachu/chinachu update

mirakurun起動しない

参考にさせていただきました。ありがとうございます。

はじめにRaspberry Pi 4が手に入って色々と遊んでいたタイミングでちょうどよく(?)ブルーレイレコーダーが壊れたので、買い直すくらいなら自作するかという事で今回地デジ録画サーバを構築した…

chinachu不具合対策:番組表が更新できない

以下のログが頻出された場合には、Tuner故障か、受信信号強度が不足している
tail /usr/local/var/log/mirakurun.stdout.log | grep null 
2021-01-10T05:39:20.398+09:00 info: TunerDevice#0 process has closed with exit code=0 by signal `null` (pid=829)

この場合mirakurunの Tunersのpidが異常に速い速度で更新されることに注意

Mirakurun起動しない

# 2021/01/13
# server.yml更新後にMirakurun起動せず
netstat -al | grep 772
tcp        0      0 localhost:20772         0.0.0.0:*               LISTEN

# Scheduler@Chinachu
ECONNREFUSED /var/run/mirakurun.sock

# この時"/var/run/mirakurun.sock"は存在していた。
cat mirakurun.stderr.log
2021-01-13T20:47:00.814+09:00 warn: db `/usr/local/var/db/mirakurun/services.json` integrity check has failed
2021-01-13T20:47:02.586+09:00 warn: db `/usr/local/var/db/mirakurun/programs.json` integrity check has failed

# 対処:server.ymlを動作していたバージョンに戻し解決
# 参考:正常化同時のserver.yml

cat server.yml.ok.40772
# logLevel: <number>
logLevel: 2

# path: <string>
path: /var/run/mirakurun.sock

# port: <number>
# You can change this if port conflicted.
# Don't expose this port on the internet, not even with NAPT.
# Use this in LAN or VPN.
# `~` to disable TCP port listening.
port: 40772

# netstatにて検証
netstat -al | grep 772
tcp        0      0 localhost:20772         0.0.0.0:*               LISTEN
tcp        0      0 localhost:40772         0.0.0.0:*      server-ip:         LISTEN

# ブラウザにて確認


自動起動するプログラムを記述

方法1
sudo vi /etc/rc.local

方法2
crontab -e
@reboot                  /home/USER/modes/strt-mm2.by-screen.sh

参考にさせていただきました。ありがとうございます。

Raspberry Piで自動起動する方法 Raspberry Piにはプログラムを自動起動する方法がたくさんあります。それぞれ特徴があるので、自分が簡単と思う順にまとめていきます。自分もブートの…