RasPi 3で録画サーバー構築（Chinachu）

#まえがき
最近、TV番組をリアルタイム視聴するのが苦になってきたので、番組録画ができるものを探していました。
しかし、既製品を買うのはなんだか面白くないので、ラズパイで宅内用に録画サーバー構築に挑戦することにしました。
色々試行錯誤したので、忘れないためにも投稿。

##注意書き
- 個人的に利用することを目的として構築しています。録画データをWEBにアップロードしたりすると、著作権に触れると思われるのでご注意ください。
- ド素人が書いていますので、手順に謝り等がある可能性がございます。もしご自身でサーバ構築される際は、自己責任でお願い致します。


#用意したもの
###ラズパイ本体
Raspberry Pi3 Model B ボード＆ケースセット 3ple Decker対応 (Element14版, Pink)
`￥4,571`

###ICカードリーダー
SCM ICカードリーダー／ライター B-CAS・住基カード対応 SCR3310/v2.0
`￥1,899`

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

###SDカード
家にあった16GBを使用。8GBあれば良いようです。

###コード類
USB式のキーボード、HDMIケーブル、LANケーブル

###外付けHDD
I-O DATA HDD 外付けハードディスク 2TB PC/テレビ録画/日本製/土日サポート EX-HD2CZ
`￥6,708`
2TBじゃ少ないかも。。。（知人曰く5TBは必要らしい）


#ラズパイの設定
##RaspbianをSDカードに焼くまで
###RaspbianのDL
[公式サイト](https://www.raspberrypi.org/downloads/raspbian/) で`RASPBIAN STRETCH LITE`のZIPファイルをDLする。
![スクリーンショット 2018-01-01 10.12.32.png](https://qiita-image-store.s3.amazonaws.com/0/185846/e6a5681a-7353-5f9d-64bc-397ab7bffe89.png)

###SDカードをフォーマット（Mac）
[SDカードのフォーマット](https://qiita.com/hanlio/items/74cabec45976c44e921f) を参照ください。

###RaspbianをSDカードに焼く(Mac)
[MACでOSイメージを焼く](https://qiita.com/mogetarou/items/b193be4974f9b0282cc6) を参照ください。


##ラズパイを起動
キーボードとモニターに接続して、電源ON。
`raspberry login:` と表示されれば起動OK！

###画面右上に`イナズママーク`がチラチラ表示される(トラブルシューティング)
こんな表示が右上に表示される場合は、`電源供給不足`です。
参考：[Raspberry Pi 3 Model B で遊んでみる － 電力不足になったら](http://pinky-blog.com/raspberry-pi/raspberry-pi-3-model-b-で遊んでみる-－-電力不足になったら/)

私もUSBポートから電源供給していたので、このマークが出ていてOSが起動しませんでした（これで1時間くらい足止め・・・）


##ログイン
初期は、以下の通り。

| 項目 |  |
|--:|:-:|
|login ID|  ***pi*** |
|Password| ***raspberry***  |


##SSH接続設定
###raspi-configでSSHを設定
```
sudo raspi-config
```
その後以下選択
5 Interfacing Options >>  P2 SSH >> Yes

###ロケーション設定
SSH設定から続き、raspberry-configでロケーションを設定
4 Localisation Options >> I2 Change Timezone >> Asia >> Tokyo

#録画サーバーの設定
##同軸ケーブルとB-CASの認識確認
>```
$ lsusb | grep VidzMedia
Bus 001 Device 004: ID 3275:0080 VidzMedia Pte Ltd

>$ ls /dev/dvb
adapter0

>$ sudo apt -y install build-essential automake pkg-config
~~(中略)~~
utomake (automake) in auto mode
```

何を見ているかは不明。
とりあえず出てくればOK？

##PX-S1UD firmware のインストール
>ドライバは kernel に組み込まれていますが、別途 firmware が必要なので配置します。

>```
sudo apt -y install unzip
>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
>sudo reboot now
```

再起動が終わったら、以下続き。
##カードリーダーの設定
###aptのupdate
```
sudo apt-get update
```

###ドライバのインストール
```
sudo apt -y install pcscd libpcsclite-dev pcsc-tools
#少し時間かかる。
```

###読み込み確認
```
pcsc_scan
```

以下のように表示されれば、OK

```
Japanese Chijou Digital B-CAS Card (pay TV)
```

>なお、このコマンドの結果が
`Card state: Card inserted, Unresponsive card,`
などと表示されて止まってしまう場合は、B-CASカードの挿入の裏表が逆になっていないか確認してください。
通常白地に注意事項がたくさん書かれている側が、LEDランプ側に来るように挿します。また正常に挿されている場合は緑のLEDランプが点滅します。LEDランプが点灯（ついたまま）になっている場合は読めていません。
http://linux-memo.net/kaden/chidejiserver_ubuntu9-10_4configure.html


###インストール
```
cd /usr/local/src
curl -sL https://github.com/stz2012/libarib25/archive/09770e3.tar.gz | sudo tar zxv
cd libarib25-09770e334837f6c67268c41c1c15784373d35e5b
sudo chown -R $(whoami) .
make
sudo make install
cd /usr/local/src
curl -sL http://www13.plala.or.jp/sat/recdvb/recdvb-1.3.1.tgz | sudo tar zxv
cd recdvb-1.3.1
sudo chown -R $(whoami) .
./autogen.sh
./configure --enable-b25
make
sudo make install
```

###VLC等でストリーミング再生可能
####ホワイトリスト登録
再生可能するには、再生する端末のIPアドレスを、ホワイトリストに入れる必要ある。

```
#Viで/etc/hostsを開く。
sudo vi /etc/hosts

#以下表示内容
127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

127.0.1.1       raspberrypi
192.168.1.4     win7         #この行追加
```

*viコマンド*

|動作|コマンド|
|:-:|:-:|
|カーソルの右側に挿入|a|
|カーソルの左側に挿入|i|
|入力モードから抜ける|[esc]|
|保存して閉じる|:wq|
|保存せずに閉じる|:q!|

####再生開始
```
$ recdvb --b25 --strip --http 8080
```

###VLCで再生
VLC > ファイル > ネットワークストリームを開く

![スクリーンショット 2017-12-29 16.41.25.png](https://qiita-image-store.s3.amazonaws.com/0/185846/ada6cc5e-080b-4581-c27a-6276f96e11c9.png)

`http://192.168.1.10:8080/25`と入力し、*再生*を押す。
再生できれば、成功。
![スクリーンショット 2017-12-29 16.39.10.png](https://qiita-image-store.s3.amazonaws.com/0/185846/573aa772-3abf-f4d6-bb98-45f2e5fe79f4.png)

####うまくいかない場合
当たり前ですが、USBの抜き差しとraspiの再起動。

##Node.jsインストール
MirakurunはNode.jsのver8には非対応とのこと
>![スクリーンショット 2017-12-29 16.48.01.png](https://qiita-image-store.s3.amazonaws.com/0/185846/5aa5926f-64b3-e5a5-c4fb-25fa30faa71e.png)
https://github.com/Chinachu/Mirakurun

```
#ver6をインストール
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs
```

##Mirakurunをインストール
公式参照　https://github.com/Chinachu/Mirakurun

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

##Rivarunもインストール
```
sudo npm install rivarun -g
```
これはなんだろう？


##チューナーの設定
>Mirakurunがインストールされると、/usr/local/etc/mirakurunに3つの設定ファイルが生成される。
設定が必要なのは、tuners.ymlとchannels.ymlの2つ。
tuners.ymlでは、チューナーの設定を行う。

とのことですので、viで設定追記。

```
$Vi /usr/local/etc/mirakurun/tuners.yml

#以下追加内容
- name: PX-S1UD-1
  types:
    - GR
  command: recdvb --b25 --strip <channel> - -
```

追記が終わったら、再起動

```
sudo mirakurun restart
```

##チャンネル情報の取得
```
curl -X PUT "http://localhost:40772/api/config/channels/scan"
```
うまくいけば、こんな感じで表示されます。
![スクリーンショット 2017-12-29 17.30.29.png](https://qiita-image-store.s3.amazonaws.com/0/185846/a87d17c0-1ce3-a083-6d04-e8bbf1ce3ead.png)


##Chinachuのインストール

まずはGitのインストール

```
sudo apt-get install git
```

公式参照　https://github.com/Chinachu/Chinachu/wiki/Gamma-Installation-V2

```
git clone git://github.com/kanreisa/Chinachu.git ~/chinachu
cd ~/chinachu/
./chinachu installer
# Auto を選択
```
このAutoのインストールが長い長い。
実際測ったことがないのですが、***数十分では終わりません＾＾；***
***Autoを実行したら、放置***が得策。

##設定
```
cp config.sample.json config.json
vi config.json
```
とりあえず以下だけ設定すれば、動きました。
>"uid" には通常 1000 または "実行ユーザー名" を指定します。

後は必要に応じて設定ください。

##空ファイルの作成。
```
echo [] > rules.json
```

##動作チェック
```
./chinachu service wui execute
# 問題なく起動できたらCtrl+\で終了

./chinachu update
# EPG取得テスト（エラーが出た場合は恐らく Mirakurun に接続できていません）
```

##サービス開始・スタートアップ登録
```
sudo pm2 start processes.json
sudo pm2 save

#最後に再起動。
sudo reboot now
```

#ブラウザでChinachu起動
http://192.168.1.10:20772/ にアクセスして表示されればOK！
![スクリーンショット 2017-12-30 15.35.39.png](https://qiita-image-store.s3.amazonaws.com/0/185846/eb832f60-0f3b-5d12-06a7-5cfe6a6b9250.png "Chinachu")


#実際に使ってみての感想
##なぜか、ライブ視聴ができない？
私だけかもしれませんが、ライブ視聴（ストリーミング視聴も）ができませんでした。
まあ録画用のため、ライブ視聴はできなくても問題はありませんが、気持ち悪い。。。
ラズパイのスペック不足かな？？

##案外容量を食う
だいたい３０分アニメで2.6GB、紅白だと30GBくらい食いそう。
mp4にエンコードすれば、多少小さくできるようですが、ラズパイにそれをやらせるとヒートアップしそうなのでやめた。
まあDLしてWinで [XMedia Recode](https://forest.watch.impress.co.jp/library/software/xmediarecode/) 使ってエンコードでもしようか　と考え中。

##これだけ出来れば、十分
ルール設定で、歌手やグループの名前から予約せってもできる。
あまりテレビを見ない私にとっては、これだけできれば十分。

#参考
以下サイトを参考にさせていただきました。
ありがとうございます。

- [Chinachu公式サイト](https://github.com/Chinachu/Chinachu/wiki/Gamma-Installation-V2)
- [Raspberry Pi 3 Model B をインストールしてSSH接続できるようにしてみる](http://techblog.clara.jp/2016/04/raspberry-pi-3-model-b_install_and_ssh_connect/)
- [Raspberry Pi 3+Chinachuで地デジ録画サーバー構築](https://qiita.com/shotasano/items/3809b8f3e0b62d51d3c3)
- [Raspberry Pi 3 で TV チューナー鯖構築](https://qiita.com/ww24/items/0adc36c013511524da80)
- [MACでOSイメージを焼く](https://qiita.com/mogetarou/items/b193be4974f9b0282cc6) 
- [viコマンド集](http://www.ritsumei.ac.jp/%7Etomori/vi.html)