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に挿入すると、起動メニューが開始します。

From industries large and small, to the kitchen table tinkerer, to the classroom coder, we make computing accessible and affordable for everybody.

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にはプログラムを自動起動する方法がたくさんあります。それぞれ特徴があるので、自分が簡単と思う順にまとめていきます。自分もブートの仕組みちゃんと全部理解できてい...