夏だ!海だ!録画サーバー構築だ!!archlinuxとPT2でmirakurun、chinachuγ環境を構築 2017年8月版

メインマシンとarchlinuxとPT2でmirakurun&chinachuγを利用して録画サーバーを構築しました。目的はありませんw

ネットには優れた解説が掲載されていますが時期によりいろいろ変化していますので、私の環境において引っかかったところを備忘録としてまとめます。

※2017年8月現在

ハードウエアと環境構築

  • OS : archlinux (DesktopEnviroment : MATE gtk3)
  • CPU : amd PhenomII X1080
  • MEM : DDR3-1333MHz 16GB
  • M/B : asus 890FXチップセット
  • GPU : amd Radeon R7 360
  • SDD : apacer 1TB
  • HDD : Toshiba 3TB x 2, WesternDigital 2TB x1
  • Tunerboard : earthsoft PT2 (GR,BS/CS)
  • Smartcard Reader : SCM (NTTのやつ)

アースソフトチューナーボードPT2とrecdvb

archlinuxデスクトップPCにインストールします。

PT2とスマートカードリーダーを指しておきます。認識しているかをターミナルから確認します。

$ lsusb
$ Bus 003 Device 003: ID 04e6:511a SCM Microsystems, Inc.

$ lspci
$ 01:05.0 Multimedia controller: Xilinx Corporation Device 222a (rev 01)

必要なライブラリ等の導入

$ yaourt -S nodejs npm pcsc-tools ccid

node.js環境とpcscライブラリをインストールします。

その後B-CASカードをスマートカードリーダーに挿して読み込めているか確認。

$ pcsc_scan | grep B-CAS
$      Japanese Chijou Digital B-CAS Card (pay TV)

表示が出たら成功です。pcscデーモンを起動時から有効になるようsystemdに登録します。

$ sudo systemctl enable pcscd

DVB版ドライバearth-pt1とrecdvb

以前はPT2用にchardev版のドライバをビルドして利用していました。シンプルですがカーネルバージョンアップごとに再ビルドが必要でした。現在はlinuxに標準でサポートされているDVB版を利用します。

DVBドライバが読み込まれているか確認。

$ lsmod | grep dvb
$ dvb_core 114688 1 earth_pt1

DVBデバイスを操作するrecdvbをインストール

b25○○ライブラリをビルドします。

$ git clone https://github.com/stz2012/libarib25
$ cd libarib25
$ cmake .
$ make
$ sudo make install

そして録画コマンドrecdvbをb25有効化してビルドします。注意点はrecdvb系列には2017年8月現在1.2.x系列と1.3.x系列が有りますが、PT2とBS/CSの組み合わせて利用する場合1.2.x系列を使ってください。1.3.x系列はBS電波の受信ができませんでした。

$ git clone https://github.com/dogeel/recdvb
$ cd recdvb
$ ./autogen.sh
$ ./configure –enable-b25
$ make
$ sudo make install
$ sudo vim /etc/ld.so.conf.d/local.conf
/usr/local/lib
$ sudo ldconfig

電波受信テスト

ではrecdvbを使ってみます。

$ recdvb –help

recdvb Ver 1.2.1.1
Usage:
recdvb [–b25 [–round N] [–strip] [–EMM]] [–udp [–addr hostname –port portnumber]] [–http portnumber] [–dev devicenumber] [–lnb voltage] [–sid SID1,SID2] channel rectime destfile

Remarks:
if rectime is ‘-‘, records indefinitely.
if destfile is ‘-‘, stdout is used for output.

LNB control: recdvb –dev devicenumber –lnb voltage

Options:
–b25: Decrypt using BCAS card
–round N: Specify round number
–strip: Strip null stream
–EMM: Instruct EMM operation
–udp: Turn on udp broadcasting
–addr hostname: Hostname or address to connect
–port portnumber: Port number to connect
–http portnumber: Turn on http broadcasting (run as a daemon)
–dev N: Use DVB device /dev/dvb/adapterN
–lnb voltage: Specify LNB voltage (0, 11, 15)
–sid SID1,SID2,…: Specify SID number in CSV format (101,102,…)
–help: Show this help
–version: Show version
–list: Show channel list

Available Channels:
13-62: Terrestrial Channels
101ch: NHK BS1
103ch: NHK BS Premium
141ch: BS Nittele
151ch: BS Asahi
161ch: BS-TBS
171ch: BS Japan
181ch: BS Fuji
191ch: WOWOW Prime
192ch: WOWOW Live
193ch: WOWOW Cinema
200ch: Star Channel1
201ch: Star Channel2
202ch: Star Channel3
211ch: BS11 Digital
222ch: TwellV
231ch: Housou Daigaku 1
232ch: Housou Daigaku 2
233ch: Housou Daigaku 3
234ch: Green Channel
236ch: BS Animax
238ch: FOX bs238
241ch: BS SkyPer!
242ch: J SPORTS 1
243ch: J SPORTS 2
244ch: J SPORTS 3
245ch: J SPORTS 4
251ch: BS Tsuri Vision
252ch: IMAGICA BS
255ch: Nihon Eiga Senmon Channel
256ch: Disney Channel
258ch: Dlife
C13-C63: CATV Channels
CS2-CS24: CS Channels
BS1_0-BS23_1: BS Channels(Transport)
0x4000-0x7FFF: BS/CS Channels(TSID)

ということで、地上波13チャンネルを10秒間録画してみます。

$ recdvb –dev 1 –b25 –strip 13 10 test.m2t

–dev 1 は録画用デバイスの番号です。PT2は地上波と衛星波をそれぞれ2つ受信可能です。デバイス番号の調べ方は下記の通り。

$ ls /dev/dvb/

adapter0 adapter1 adapter2 adapter3

末尾の番号を–devのパラメータに設定するとそのデバイスを利用します。PT2は偶数が衛星用、奇数が地上波となります。

VLCによるリアルタイム視聴
VLCによるリアルタイム視聴

VLCプレイヤーを利用して無事に再生できました。

ついでにリアルタイム視聴も行います。

$ recdvb –dev 1 –b25 –strip –http 8080

これでdaemonとして起動しますので、VLCプレイヤーの「メディア」から「ネットワークストリームを開く」を選びます。

http://localhost:8080/13

と入力すると、地上波13チャンネルが表示されます。

 

チューナー管理サービスmirakurun

正常にrecdvbが動作しましたら、チューナー管理を行うmirakurunをインストールします。mirakurunは想像が難しいサービスですが、チューナーデバイスと録画サービスの間に入って空いているチューナーや専有しているチューナー、さらには新たに追加したチューナーなどどれを今使ってどれが使えないかを気にすることなく利用できるようになります。

例えば、

  1. 「録画しながら空いているチューナーでリアルタイム視聴できる」
  2. 「録画する際に空いているチューナー番号を知らなくても良い」
  3. 「LAN内部でチューナーからの映像をリアルタイムで配信できる」
  4. 「ネットワークの複数デバイスで同じチューナーを共有する」

などを実現するサービスです。Windowsで言えばSpinelです。

では早速インストールしましょう。

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

これでしばらくダウンロードとビルドが始まります。時間は回線速度にもよりますが、20分位かかりました。

ついでにアップデート方法。

$ sudo npm install mirakurun@latest -g –unsafe –production

アンインストール方法。

$ sudo npm uninstall mirakurun -g –unsafe

まずは /usr/local/etc/mirakurun/ ディレクトリにあるtuners.ymlを編集します。標準ではPT3のサンプルが添付されています。

– name: PT2-S1
types:
– BS
– CS
command: recdvb –b25 –dev 0 –lnb 15 <channel> – –
isDisabled: false

– name: PT2-S2
types:
– BS
– CS
command: recdvb –b25 –dev 2 –lnb 15 <channel> – –
isDisabled: false

– name: PT2-T1
types:
– GR
command: recdvb –b25 –dev 1 <channel> – –
isDisabled: false

– name: PT2-T2
types:
– GR
command: recdvb –b25 –dev 3 <channel> – –
isDisabled: false

次に channnels.yml を編集します。当方沖縄なので地上波はシンプルですw

– name: PT2-S1
types:
– BS
– CS
command: recdvb –b25 –dev 0 –lnb 15 <channel> – –
isDisabled: false

– name: PT2-S2
types:
– BS
– CS
command: recdvb –b25 –dev 2 –lnb 15 <channel> – –
isDisabled: false

– name: PT2-T1
types:
– GR
command: recdvb –b25 –dev 1 <channel> – –
isDisabled: false

– name: PT2-T2
types:
– GR
command: recdvb –b25 –dev 3 <channel> – –
isDisabled: false

ここで注意点はBS/CSチューナーには –lnb 15 を追加してLNB電源を供給します。またisDisabled: falseにして有効化します。これを忘れるとそのチューナーデバイスはmirakurunから見えなくなります。

設定完了しましたら早速実行しましょう。

$ sudo mirakurun start

動作しているか確認するときは次を。

$ sudo mirakurun status

┌─────────────────┬─────────────────────┐
│ App name   │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │
├────────┼────────────┼──────┼──────────┤
│ mirakurun-server │ 0 │ fork │ 18795 │ online │ 1 │ 7h │ 0% │ 161.6 MB │ root │ disabled │
└────────────────┴────────────┴──────────┘

この表示で status項が online と表示されていたら正常に動作しています。

mirakurunの動作確認

VLCを使ってリアルタイム視聴をしてみます。VLCプレイヤーのネットワークストリームまでは同じですが、表記が異なります。

http://localhost:40772/api/channnels/GR/17/stream

これを入れて映像が表示されたらmirakurunの動作は正常です。ポート番号40772はserver.ymlにて変更可能です。

 

予約録画サービスChinachuγ (gamma)

最後の締め、Chinachuγのインストールです。公式ドキュメントの通りで何も問題は起きませんでした。

$ mkdir ./chinachu
$ cd chinachu
$ git clone https://github.com/Chinachu/Chinachu.git
$ ./chinachu installer

インストール方法はAuto、1番を選んでエンターキーを押します。

エラーが出なければインストール完了です。

Chinachuの設定

$ cp config.sample.json config.json
$ vim config.json

詳しくはこちらをご覧ください。”uid”を”実行ユーザ名”にする、番組保存ディレクトリ “recordedDir” : “保存先パス”を設定するくらいでしょうか。

空のルール設定ファイルを作成します。

$ echo [] > rules.json

サンプルのルール設定ファイルはアニメ録画しまくり設定となっているようです。

$ ./chinachu service wui execute

起動してエラーが起きなければCtrl+/を押して停止させます。その際にコアダンプ吐いている様子。

$ ./chinachu update

EPG取得させます。これ問題なければサービス開始とスタートアップ登録です。

$ sudo pm2 start processes.json
$ sudo pm2 save

Chinachuγの番組表を表示させる

適当なブラウザを開いてURIを入力します。

http://chinachuがインストールされたマシンのIP:20772/

ポート番号20772はconfig.jsonにて変更できます。

chinachuγ番組表
chinachuγ番組表

予約録画やリアルタイム視聴も問題なく行えています。しばらくはこれで楽しみますか。

 

 

夏だ!海だ!録画サーバー構築だ!!archlinuxとPT2でmirakurun、chinachuγ環境を構築 2017年8月版” への2件のフィードバック

  1. Debian stretch でカーネルの更新があり、pt1_drv が使えなくなりました。そんな折、このサイトのDVB版のドライバ(Linux標準)とMirakurun、Chinachu γの情報を発見し助かりました。

    1. Yamamotoさんはじめまして、Moriyanです。
      私も過去にカーネルのバージョンアップでpt1_drvが使えなくなった経験があります。
      シンプルな記事ですがお役て立てて何よりです。

コメントを残す