k_piの雑記帳

個人的に困った点と、その解決法などをつらつら書き連ねた備忘録を兼ねたブログ

NUCでChinachu γの安定動作ができた件

【概要】

前回、RaspberryPi3に導入しようとしていたChinachu γをNUCにインストールした。
この結果、安定的に動作することが確認できた。
やはり一定以上のスペックは必要なようだ。

【作業環境・パッケージ】

  • NUC (NUC7PJYH)
  • Debianカーネル:4.19.12-1~bpo9+1)(NUC7PJYHのHDMI Audioに対応させるためBackports版を利用)
  • Nodejs v10.15.1
  • Mirakurun 2.8.4(コミット:ed205a71adb1486e9f0a634dccc7b234a9890206(2019/01/30))
  • Chinachu γ 0.9.5(コミット:721615b52fec4a5056a5f4769cc1faf52d9275a4(2019/02/06))

【行った作業】

 前回記事の内容Chinachu Github Wikiの内容をベースに作業する。

  1. epgdatacapbon氏バージョンのrecdvbの導入
    オリジナルのrecdvbでは、チャンネル・SIDの指定方法がrecpt1とは異なっているが、これがChinachu γを導入するにあたっては障壁となるので、各種指定をrecpt1に合わせているrecdvbを導入する。
    前回では、dogeel氏のものを使用していたが、今回はforkされたepgdatacapbon氏のものを利用する。
    ただし、b25ライブラリがlibarib25→libaribb25に変更になっている点に注意する。

  2. 最新版node.jsの導入
    まず

    apt-get purge nodejs

    で最新版とコンフリクトする旧バージョンを削除し、

    curl -sL https://deb.nodesource.com/setup_10.x | sudo bash -
    sudo apt-get install -y nodejs

    を実行し、apt-getから最新版のnode.jsを落とせるようにする。

  3. Mirakurunと必要なパッケージをインストール

    sudo npm install pm2 -g
    sudo pm2 startup
    sudo npm install mirakurun -g --production
    sudo mirakurun init
    sudo mirakurun restart

    でインストール

  4. b25-stream.sh作成
    b25-stream.sh · GitHubを参考にして、b25-stream.shを/usr/local/binに作成する。

    sudo nano /usr/local/bin/b25-stream.sh

    を実行し、

    #!/bin/sh
    sh -c cat | b25 -v 0 /dev/stdin /dev/stdout | cat

    の内容で保存。
    続いて、

    sudo chmod +x /usr/local/bin/b25-stream.sh

    を実行し、実行可にする。

  5. Mirakurunセットアップ

    sudo EDITOR=nano mirakurun config server

    を実行し、

    port: 40772⇒適当なポート番号に変更

    続いて、

    sudo EDITOR=nano mirakurun config tuners

    を実行し、

    - name: PX-S1UD-1
    types:
    - GR
    command: recdvb --dev 0 <channel> - -
    decoder: b25-stream.sh
    isDisabled: false

    - name: PX-BCUD-1
    types:
    - BS
    - CS
    command: recdvb --dev 1 <channel> - -
    decoder: b25-stream.sh
    isDisabled: false

    を追記。
    また、/usr/local/etc/mirakurun/channels.ymlを
    Gamma Installation V2 · Chinachu/Chinachu Wiki · GitHub再編後のチャンネルに対応 · GitHub
    あたりを参考に設定。
    この後、

    sudo mirakurun restart

    を実行する。

  6. Chinachu γインストール
    まず、Chinachu γインストールに必要パッケージを
    sudo apt-get install git-core vainfo
    を実行して、インストール。
    続いて、
    git clone git://github.com/kanreisa/Chinachu.git ~/chinachu
    cd ~/chinachu/
    ./chinachu installer
    でChinachuを(とりあえず)インストールする。
    最後に、
    ./chinachu service wui execute
    を実行してみて、以下のようなエラーが出ないことを確認する。
    Error: Cannot find module '.....'
    出た場合、
    npm install .....
    で不足モジュールをインストールする。
  7. Chinachu設定ファイルの作成
    cp config.sample.json config.json
    echo [] > rules.json
    を実行する。
    config.jsonの設定に関しては、Gamma Configuration · Chinachu/Chinachu Wiki · GitHubを参考に設定する。
    次に、
    ./chinachu service wui execute
    を再度実行し、ChinachuのWeb UIにアクセスできることを確認する。
  8. Chinachuが自動起動するようにする
    自環境ではChinachu導入時に、.nave内にnodejsの実行ファイルが生成されなかったので、前準備として、以下のコマンドでnodejsの実行ファイルを持ってくる。(.nave/node・.nave/npmのリンク先を確認しておくこと。)
    mkdir .nave/installed/<nodejsのバージョン>/bin
    cp /usr/bin/node .nave/installed/<nodejsのバージョン>/bin
    cp /usr/bin/npm .nave/installed/<nodejsのバージョン>/bin
    続いて、以下のコマンドで、スタートアップ時にChinachuを起動するようにする。
    sudo pm2 start processes.json
    sudo pm2 save
  9. ログローテーションの設定をする。
    yoki氏のブログ記事(12)によると、Mirakurun・Chinachuともに(というかpm2で動作しているプロセス)は、自動でログローテーションはしないそうなので、設定しておく。
    以上のブログ記事ではログローテーションに「pm2-logrotate」が必要とされているが、PM2 — Log HandlingPM2 - Log Managementなどを見る限り、システムのlogrotateに頼れば不要のようだ。
    ということで、/usr/lib/node_modules/pm2/lib/templates/logrotate.d/pm2を参考にして以下のように設定。
    sudo pm2 logrotate -u root
    sudo nano /etc/logrotate.d/pm2-root
    ####以下を追記
    /usr/local/var/log/chinachu-operator.stderr.log
    /usr/local/var/log/chinachu-operator.stdout.log
    /usr/local/var/log/chinachu-wui.stderr.log
    /usr/local/var/log/chinachu-wui.stdout.log
    {
    weekly
    rotate 4
    missingok
    notifempty
    compress
    delaycompress
    copytruncate
    create 0644 root staff
    }

    /usr/local/var/log/mirakurun.stdout.log
    /usr/local/var/log/mirakurun.stderr.log
    {
    daily
    rotate 7
    missingok
    notifempty
    compress
    delaycompress
    copytruncate
    create 0644 root staff
    }

【結果】

結果として、導入から数日経った今も安定的に動作している。
また、PX-S1UDとPX-BCUDに加えて、US-3POUTを付け足しても安定動作することを確認した。
なお、BonDriver_Mirakurun+TVTestでも安定して見れることを確認した。

RaspberryPiでの動作時のような途切れも発生しておらず、スペックの差を感じている。

NUCの動作音も気にならない程度なので、リビング動作させてもOKで満足している。

 

製品紹介(Amazon.co.jpアソシエイト)----------------- 
PLEX USB接続ドングル型地上デジタルTVチューナー PX-S1UD V2.0

PLEX USB接続ドングル型地上デジタルTVチューナー PX-S1UD V2.0