ubuntu20.04にEPGStation2.3.10をインストール

スポンサーリンク
スポンサーリンク

用意した物

  • intel D510MO
  • PT2
  • SCR3310-NTTCom + B-CAS
  • 適切な2TBHDD(型名忘れただけ)

ソフト内容

  • ubuntu20.04server
  • Dockerは使わない(弄ってみたけどメモリが足りなさそう)
  • Node14系
  • DKMS対応honeyplanet版PT2ドライバ
  • recpt1
  • Mirakurun3.5.0
  • EPGStation2.3.10
  • MariaDB

概要

とうとう3回目となるサーバーがお亡くなりになりました。SATAポートが死んだみたいです。
そこで倉庫の中から使えそうなマザーを探してきて何とかしてみたいと思います。
倉庫には昔サーバーとして使っていたIntel D510MOというマザーが眠っていて、丁度PCIスロットが1個使える為、PT2も刺せるという事で引っ張り出しました。
ググってみると昔にPT2を刺して使ってる方を見かけ追ってみると、なにやら大変苦労したとの事です。どうもBIOSが古くてubuntuでrecpt1が動かなかったとの事です。
では自分のはと電源を入れるとBIOSが古い古いwまずはそれをUpdateする事から始めました。
既にintelのサイトでは配布も終わっていて探すのに苦労しました。インターネットアーカイブからなんとかサルベージしてきて最新にアップデートしました。

OSインストール

最初はマザーとHDDとメモリとネットだけ接続してubuntuをインストールします。
ubuntu20.04はserver版を選択しました。ここはたいして苦労せずインストールできました。どうもdesktop版はエラーが出るそうです。
インストールにはかなり時間がかかります。余計なモジュールはセットせずSSHだけチェックを入れてもネットつないだ状態でインストールすると、オンラインアップデートが同時に走って結局2時間位かかってしまいました。まあマシンスペックはAtom+MEM4GBですからね。致し方無し。
無事ubuntuはインストール出来ました。upgradeやローケルやら日本語環境などを追加して一旦電源を落として、PT2やらBCASなどを刺して起動します。
lspciなどで接続を確認したあとドライバをインストールします。
まずは必要なモジュールをインストールします。

$ sudo apt -y install pcscd libpcsclite-dev libccid pcsc-tools python2.7 mercurial ffmpeg build-essential unzip pkg-config automake cmake g++ autoconf git dkms linux-headers-`uname -r` nodejs npm mariadb-server

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

ドライバのダウンロードとリビジョンの取得

$ hg clone http://hg.honeyplanet.jp/pt1
$ cd pt1
$ REVISION=`hg log -r tip | sed -n -e '1s/.*://p'`

PT1ドライバのパッチを当てます。

$ cd ..
$ sed -i -e '/^static int pt1_release(struct inode \*inode, struct file \*file)$/,/^}$/s/mutex_unlock(&channel->ptr->lock);/\/\* mutex_unlock(\&channel->ptr->lock); \*\//' pt1/driver/pt1_pci.c
$ sed -i -e '/^static int pt1_release(struct inode \*inode, struct file \*file)$/,/^}$/s/^\treturn 0;$/\tmutex_unlock(\&channel->ptr->lock);\n\n\treturn 0;/' pt1/driver/pt1_pci.c

dkmsのフォルダへコピー

$ sudo cp -r pt1/driver/ /usr/src/pt1_drv-$REVISION/

dkmsへの登録

$ cat << EOT | sudo tee /usr/src/pt1_drv-$REVISION/dkms.conf
PACKAGE_NAME="pt1_drv"
PACKAGE_VERSION="$REVISION"
MAKE[0]="make KVER=\${kernelver}"
CLEAN[0]="make clean"
BUILT_MODULE_NAME[0]="pt1_drv"
DEST_MODULE_LOCATION[0]="/kernel/drivers/video"
AUTOINSTALL="YES"
EOT

ビルド&インストール

$ sudo dkms add -m pt1_drv -v $REVISION
$ sudo dkms build -m pt1_drv -v $REVISION
$ sudo dkms install -m pt1_drv -v $REVISION

これでドライバは登録できました。ただubuntu標準のドライバが登録されてしまっているので使われないようブラックリストに登録します。

$ echo "blacklist earth_pt1" >> /etc/modprobe.d/blacklist.conf

これで一旦再起動します。

$ sudo reboot

arib25モジュールとrecpt1コマンドの作成

arib25モジュールはBCASカードと連動して復号化させるためのモジュールです。arib25はPT1ドライバの昔のリビジョンに戻してarib25フォルダを復活させます。

$ cd ~/pt1/
$ hg revert -r c44e16dbb0e2 --all
$ hg revert -r tip --all
$ cd arib25
$ make
$ sudo make install

次にrecpt1を作成します。

$ cd ../recpt1
$ ./autogen.sh
$ ./configure --enable-b25
$ make
$ sudo make install

nodejs、pm2、mirakurunのインストール

最新のmirakuru,EPGStationでは推奨がnode14系なのでnで14系をインストールする。

$ sudo npm install -g n
$ sudo n 14.17.1

pm2のインストール

$ sudo npm install pm2 -g

Mirakurun,rivarunのインストール

$ sudo npm install mirakurun -g --unsafe --production
$ sudo npm install rivarun -g

Mirakurunの設定

先ほどのmirakurunのインストールで既に起動された状態ではありますが、設定が必要です。チューナーの設定とチャンネルの設定です。
まずはチューナーの設定から

$ sudo mirakurun config tuners

以下はPT2の設定です。

- name: PT2-S1
  types:
    - BS
    - CS
  command: recpt1 --b25 --device /dev/pt1video0 --lnb 15 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: false

- name: PT2-S2
  types:
    - BS
    - CS
  command: recpt1 --b25 --device /dev/pt1video1 --lnb 15 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: false

- name: PT2-T1
  types:
    - GR
  command: recpt1 --b25 --device /dev/pt1video2 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: false

- name: PT2-T2
  types:
    - GR
  command: recpt1 --b25 --device /dev/pt1video3 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: false

S1及びS2の

--lnb15

ですがどこかでアンテナに給電されているのであれば不要です。

次にチャンネル設定です。

$ sudo mirakurun config channels

以下の設定は私の部屋に来ている電波の拾えるチャンネル一覧になります。CS等拾える方は別途設定してください。

- name: NHK総合1・東京
  type: GR
  channel: '27'

- name: NHKEテレ1東京
  type: GR
  channel: '26'

- name: 日テレ1
  type: GR
  channel: '25'

- name: TBS1
  type: GR
  channel: '22'

- name: フジテレビ
  type: GR
  channel: '21'

- name: テレビ朝日
  type: GR
  channel: '24'

- name: テレビ東京1
  type: GR
  channel: '23'

- name: TOKYO MX1
  type: GR
  channel: '16'

- name: J:COMテレビ
  type: GR
  channel: '13'

- name: tvk1
  type: GR
  channel: '18'

- name: J:COMチャンネル
  type: GR
  channel: '37'

- name: NHKBS1
  type: BS
  channel: 'BS15_0'
  serviceId: 101

- name: NHKBS1
  type: BS
  channel: 'BS15_0'
  serviceId: 102

- name: NHKBSプレミアム
  type: BS
  channel: 'BS3_1'
  serviceId: 103

- name: NHKBSプレミアム
  type: BS
  channel: 'BS3_1'
  serviceId: 104

- name: BS日テレ
  type: BS
  channel: 'BS13_0'
  serviceId: 141

- name: BS日テレ
  type: BS
  channel: 'BS13_0'
  serviceId: 142

- name: BS日テレ
  type: BS
  channel: 'BS13_0'
  serviceId: 143

- name: BS朝日1
  type: BS
  channel: 'BS1_0'
  serviceId: 151

- name: BS朝日2
  type: BS
  channel: 'BS1_0'
  serviceId: 152

- name: BS朝日3
  type: BS
  channel: 'BS1_0'
  serviceId: 153

- name: BS-TBS
  type: BS
  channel: 'BS1_1'
  serviceId: 161

- name: BS-TBS
  type: BS
  channel: 'BS1_1'
  serviceId: 162

- name: BS-TBS
  type: BS
  channel: 'BS1_1'
  serviceId: 163

- name: BSテレ東
  type: BS
  channel: 'BS1_2'
  serviceId: 171

- name: BSテレ東2
  type: BS
  channel: 'BS1_2'
  serviceId: 172

- name: BSテレ東3
  type: BS
  channel: 'BS1_2'
  serviceId: 173

- name: BSフジ・181
  type: BS
  channel: 'BS13_1'
  serviceId: 181

- name: BSフジ・182
  type: BS
  channel: 'BS13_1'
  serviceId: 182

- name: BSフジ・183
  type: BS
  channel: 'BS13_1'
  serviceId: 183

- name: WOWOWプライム
  type: BS
  channel: 'BS3_0'
  serviceId: 191

- name: WOWOWライブ
  type: BS
  channel: 'BS5_0'
  serviceId: 192

- name: WOWOWシネマ
  type: BS
  channel: 'BS5_1'
  serviceId: 193

- name: スターチャンネル1
  type: BS
  channel: 'BS9_1'
  serviceId: 200

- name: スターチャンネル2
  type: BS
  channel: 'BS15_1'
  serviceId: 201

- name: スターチャンネル3
  type: BS
  channel: 'BS15_1'
  serviceId: 202

- name: BS11イレブン
  type: BS
  channel: 'BS9_0'
  serviceId: 211

- name: BS12トゥエルビ
  type: BS
  channel: 'BS9_2'
  serviceId: 222

- name: 放送大学ex
  type: BS
  channel: 'BS11_2'
  serviceId: 231

- name: 放送大学on
  type: BS
  channel: 'BS11_2'
  serviceId: 232

- name: グリーンチャンネル
  type: BS
  channel: 'BS21_2'
  serviceId: 234

- name: BSアニマックス
  type: BS
  channel: 'BS13_2'
  serviceId: 236

- name: BSスカパー!
  type: BS
  channel: 'BS11_1'
  serviceId: 241

- name: J SPORTS 1
  type: BS
  channel: 'BS19_1'
  serviceId: 242

- name: J SPORTS 2
  type: BS
  channel: 'BS19_2'
  serviceId: 243

- name: J SPORTS 3
  type: BS
  channel: 'BS19_3'
  serviceId: 244

- name: J SPORTS 4
  type: BS
  channel: 'BS19_0'
  serviceId: 245

- name: BS釣りビジョン
  type: BS
  channel: 'BS11_3'
  serviceId: 251

- name: WOWOWプラス
  type: BS
  channel: 'BS21_0'
  serviceId: 252

- name: 日本映画専門ch
  type: BS
  channel: 'BS21_1'
  serviceId: 255

- name: ディズニーch
  type: BS
  channel: 'BS23_0'
  serviceId: 256

- name: 放送大学ラジオ
  type: BS
  channel: 'BS11_2'
  serviceId: 531

- name: スカパー!ガイド
  type: BS
  channel: 'BS11_1'
  serviceId: 840

長い設定で申し訳ありません。
Mirakurunの再起動をします。

$ sudo mirakurun restart

ログ設定

mirakurunのログをある程度で抑える為ログローテーションの設定を行います。
pm2-logrotateをインストールします。

$ sudo pm2 install pm2-logrotate

1日分でログを圧縮し1週間分保存する設定を行います。

$ cat << 'EOT' | sudo tee /etc/logrotate.d/mirakurun
/usr/local/var/log/mirakurun.stdout.log
/usr/local/var/log/mirakurun.stderr.log
/{
daily
compress
rotate 7
missingok
notifempty
}
EOT

mirakurunに変更を通知します。

$ sudo mirakurun restart

mariadbのインストール

最初にaptでインストールしてあるので初期設定を行います。

$ sudo mysql_secure_installation

私ここのログを取ってなかったので設定をどうしたか忘れましたが、最初にパスワード等を設定した後は質問に従って進めればOKです。
その後epgstation用データベース、ユーザー、パスワードを設定します。

$ mysql -u root -p
MariaDB [(none)]> CREATE DATABASE epgstation CHARACTER SET utf8;
MariaDB [(none)]> GRANT ALL ON epgstation.* TO epgstation@localhost IDENTIFIED BY 'mirakurun';
MariaDB [(none)]> exit

これでデータベース名epgstation、ユーザー名epgstation、パスワードmirakurunになりました。

EPGStationの導入

投稿時最新のEPGStation2.3.10をインストールします。最初node10系でインストールしてたらエラーが出てインストール出来ませんでした。

$ git clone https://github.com/l3tnun/EPGStation.git
$ cd EPGStation
$ npm run all-install

atomではダメなのかと思う位時間かかりました。

$ npm run build

同上w。その後初期設定用config類を作成します。

$ cp config/config.yml.template config/config.yml
$ cp config/operatorLogConfig.sample.yml config/operatorLogConfig.yml
$ cp config/epgUpdaterLogConfig.sample.yml config/epgUpdaterLogConfig.yml
$ cp config/serviceLogConfig.sample.yml config/serviceLogConfig.yml

設定ファイルの編集を行います。

$ vi config/config.yml

最初の方だけ載せます。

port: 8888
mirakurunPath: http+unix://%2Fvar%2Frun%2Fmirakurun.sock/

dbtype: mysql
mysql:
    host: localhost
    port: 3306
    user: epgstation
    password: mirakurun
    database: epgstation

epgUpdateIntervalTime: 10

conflictPriority: 1
recPriority: 2

#recordedFormat: '%YEAR%年%MONTH%月%DAY%日%HOUR%時%MIN%分%SEC%秒-%TITLE%'
recordedFormat: '%TITLE% [%CHNAME%] [%YEAR%%MONTH%%DAY%-%HOUR%%MIN%]'
recordedFileExtension: .ts
recorded:
    - name: recorded
#      path: '%ROOT%/recorded'
      path: '/home/samba/video'
-以下略-

dbtypeとmysqlの設定を書き、recordedFormatとpathを変更してあります。適宜設定を変更してください。
大丈夫かどうか手動で起動してみます。

$ npm start

これでhttp://{サーバーアドレス}:8888でクライアントからアクセスして動いているかどうか確認できます。
動作確認出来たら自動で起動できるよう設定します。

$ sudo pm2 startup
$ sudo pm2 start dist/index.js --name "epgstation"
$ sudo pm2 save

ざっと書いてみましたがいかがでしょうか。私の方では通常録画、予約録画、キーワード予約など動作していることを確認しました。
EPGStation@1系から愛用していますが2系になってダークモードに対応など色々と設定できる事が増えていて改めて作者の方に敬意を表したいと思います。

コメント

タイトルとURLをコピーしました