Attribute System

ジャンク奇行。 ときどき ラクガキ。

Chinachu on WSL at 2018.07

2018-07-04 05:40:58 | 研究&TIPS
 こんばんはヌキヲです。
今回は録画鯖のソフトを入れ替えた話です。

ある日 BS の 2K/4K 問題によるチャンネル再編のせいで
BSプレミアム が見れないことに気づきました。
もともと私の環境は PT3+TvRock だったのですが、
かなり古いバージョンで更新の仕方が全然わかりません。
そこで、TvRock の更新にこだわらずに、別ソフトへの乗り換えを考えます。
で、最近流行(?)の Chinachu にしてみようということになりました。
備忘録なので、過度の期待は禁物です。


●条件



Windows10 RS4 上に PT3 + BonRecTest + Mirakurun の環境を作ります。
さらに WSL Ubuntu 18.04 LTS 上に Chinachu を入れました。
リアルタイム視聴は Ubuntu 上の Kodi + Harekaze(pvr.chinachu) から行います。

※この環境には問題点があります。
WSL Ubuntu がストアアプリなため自動起動の手段がありません。
また Ubuntu 自体を起動できたとしても、chinachu の自動起動が確立できていません。
この辺は要研究かな。

解決しました。




●PT3 + BonRecTest の準備



詳しくはたくさんのページが存在するので割愛します(笑
かいつまんで解説です。

PT3 のドライバーと SDK を入れます。
必要があれば FPGA の回路更新もしておいてください。

次に必要なものの収集です。
BonRecTest.exe は自分でビルドするか、どっかのアプロダから入手します。
B25Decoder.dll も同様に。
BonDriver は github だったかな。

これらを同一フォルダに展開します。
32bit 64bit 問題ですが、必ず同じ bit 数のモノをそろえてくださいね。
OS が 32bit なら 32bit のモノ一択です。
OS が 64bit なら どちらでも動作しますが、混在はできません。

BonDriver の dll をチューナーの枚数分だけコピーし、リネームします。

さて、ここでコマンドプロンプトか PowerShell を起動し動作確認します。

> ./BonRecTest --decoder B25Decoder.dll --driver BonDriver_PT3-T0.dll --log --output test.ts --channel 11


とかやれば動くはずなのです。
エラーが出る場合は vc_redist が足りないことが多いようです。
また、IB25Decoder の初期化に失敗する場合は、
B-CAS カードが取り付けられているか確認してください。

次に BSチャンネル のアップデートもしてしまいましょう。

「PT3のチャンネル移動対策方法/アースソフト」解説 ~半自動編~

を参考に BonDriver_PT3-S.ChSet.txt を差し替えます。

・・・結構やることありますね(汗



●Node.js + Mirakurun



入れるのは Windows ネイティブ版です。

まずは Node.js ですね。
奇数のバージョンは開発版ですので、必ず偶数のバージョンを入れます。
今現在ですと 8.11.3 LTS とかかな?

次に Mirakurun ですが、README.md を読むと、

# Win32 (Windows PowerShell as Admin)
npm install winser@1.0.3 -g
npm install mirakurun -g --production


とすればいいようです。
Node.js をインストールしたことにより、
PowerShell の管理者権限で npm が使えるようになってると思うので実行します。

Mirakurun の設定ファイルが問題ですよね。
ここでは tunners.yml server.yml はスルーします。
そんなに難しくないので、自分の環境に合わせてください。

cahnnels.yml です。
地上波(GR) はチャンネルスキャンができますが、
Windows 環境に Curl が無いので後回しです。

BS が混沌としている原因ですが、チャンネル番号は Linux とは別で、
BonDriver 上のチャンネルを指定する必要があるからです。
また、BonDriver 側でも、チャンネルが連番でないとダメとか制約があります。

記述の仕方は、総務省の pdf 等を見ながら目的のチャンネルの BS01/TS0 の部分を探します。
例えば、新しく配置された NHK BSプレミアム では BS3/TS1 です。
次にご自分の BonDriver_PT3-S.ChSet.txt から BS3/TS1 の行の、
BonDriver 上のチャンネルを見ます。私の環境では '4' でした。

ServiceId については変更ありません。
BS について検索すれば ch番号 などの名目で出てきます。
先の例では 103ch ですので、'103' と書きます。

一応私の作った一例を紹介します。
ただし、無料放送の本チャンネルのみで、
サブチャンネルや有料放送、CS放送 はスルーします。
CS については私がまだ勉強不足です。

- name: NHK BS1
  type: BS
  channel: '17'
  serviceId: 101
- name: NHK BSプレミアム
  type: BS
  channel: '4'
  serviceId: 103
- name: BS日テレ
  type: BS
  channel: '14'
  serviceId: 141
- name: BS朝日
  type: BS
  channel: '0'
  serviceId: 151
- name: BS-TBS
  type: BS
  channel: '1'
  serviceId: 161
- name: BSジャパン
  type: BS
  channel: '2'
  serviceId: 171
- name: BSフジ
  type: BS
  channel: '15'
  serviceId: 181
- name: BS11
  type: BS
  channel: '8'
  serviceId: 211
- name: TwellV
  type: BS
  channel: '10'
  serviceId: 222
- name: 放送大学BS1
  type: BS
  channel: '13'
  serviceId: 231
- name: D-Life
  type: BS
  channel: '27'
  serviceId: 258


mirakurun の動作確認は、mirakurun-ui で行います。
といっても、確認できるのはチューナーが正しく認識しているか・・・のみですが。



●WSL + chinachu



はい、ここが一番知りたい人が多いのではないでしょうか?
難しいことはありません、順番にインストールしていくだけです。
Mirakurun と同じマシンでも違うマシンでも可能です。
今回は同じマシンで行いました。

Windows の コントロールパネル>Windowsの機能の有効化 から WSL を有効にします。
ストアから Ubuntu 18.04 をインストールします。
起動し、ユーザー名とパスワードを入力しましょう。

> sudo apt install build-essential curl git-core vainfo

> git clone git://github.com/kanreisa/Chinachu.git ~/chinachu
> cd ~/chinachu/
> ./chinachu installer


メニュー画面でフルインストール(Auto?)を選べばすべて入ります。
※Node.js も内包しているみたいで、別途インストールしなくても動きました。

> echo "[]" > rules.json
> cp config.sample.json config.json


設定ファイルをコピーしテキストエディタで編集します。
今回は実行ユーザーは現在のユーザーとします。
uid 欄には Ubuntu の初回起動時に入力したユーザー名を入れます。
mirakurunPath に、"http://録画鯖のIP:40772/", を設定します。

recordedDir に保存フォルダを指定します。
もし、Windows 側のファイルシステムを使う場合は /mnt/c などとすれば
Cドライブにアクセスできます。

ネットワークドライブは少々めんどくさくて、
まず、Windows 側でネットワークドライブを接続します。Zドライブとかね。
次に WSL 側でマウントポイントを作ります。

> sudo mkdir /mnt/z


そして、マウントします。

> sudo mount -t drvfs Z: /mnt/z


再起動してもマウントしないとまずいので、/etc/fstab に記述します。

> sudo vi /etc/fstab
Z:	/mnt/z	drvfs	default	0	0


最初からある行を消さないようにしましょう。



さて、そろったら起動してみます。

> ./chinachu update
> ./chinachu service operator execute
> ./chinachu service wui execute


もし pm2 を使いたい場合は別途 Node.js npm pm2 が必要です。

> sudo apt install nodejs npm
> sudo npm pm2


入った Node.js のバージョンは 8.10.0 でした。
ちょっと古いけど、偶数系だし OK ってことで。
起動には次のようにします。

> cd ~/chinachu
> sudo pm2 start processes.json


うまく起動したら pm2 を保存するのですが、

> sudo pm2 save


マシンを再起動してくると忘れてくれるので問題です。
この辺の解決方法が、私が浅学のためわかりません。
誰か教えてー。


●運用のために



最後に運用のための一押しです。
まず、ポートを開放しましょう。
開放するのは 3 つです。

chinachu 20772 TCP
mirakurun 40772 TCP,UDP

設定>ネットワーク>ファイアウォール>詳細設定>受信の規則
から、新しい規則 を押し、ポートを追加してください。

mirakurun については TCP だけでいいような記述もあるのですが、
逆に UDP だけでもつながるので、両方にしました。

また mirakurun のチャンネルスキャンです。
Ubuntu に curl を入れたのでこちらから行います。

> curl -X PUT "http://鯖IP:40772/api/config/channels/scan"


mirakurun のチャンネル設定を変更したら、chinachu にも教えてあげます。

> ./chinachu update


最後の行で WRITE で書き出していれば OK です。

EPG 取得は結構時間がかかるようです。
30分から1時間くらい放置して、ダメだったら何か手段を考えてみてください。



現在、再起動のたびに WSL と chinachu の起動を手動でしなくてはなりません。
WSL の自動起動とバックグラウンドタスク化が行えるようになるとかなり助かるんですけどね。


●Kodi + Harekaze(pvr.chinachu)



こちらも簡単です。
まず、インストールする前に、
設定 > システム > アドオン
から 不明なソース を オン にしましょう。

マルチプラットフォームのバイナリーが zip で頒布されているので拾ってきます。
kodi > アドオン > zip からインストール

もし、kodi のホーム画面に アドオン がなかったら?
おそらく消してしまったのでしょう。
そういうときもあせらず、
設定 > スキン > メインメニューアイテム
から復活できます。


●自動起動



□2018.07.13 追記
先日 subdiox さんよりコメントいただき、
自動起動について意外に簡単にできそうだったのでまとめます。
ただし、subdiox さんの方法では動かなかったので独自の方法にしています。
コメントの原文は残してありますので、気になる方はそちらからお読みください。

Windows 側。
WSL Ubuntu を自動起動します。

デスクトップか、好きな場所にバッチファイルを作ります。
名前は自由に、拡張子も .bat でも .cmd でも動きます。
内容は以下の通りです。

@echo off
start %USERPROFILE%\AppData\Local\Microsoft\WindowsApps\ubuntu1804.exe
rem pause


これをダブルクリックして実行してみます。
うまく起動しない場合は2行目のスペルミスだと思います。

3行目の rem を外すとコマンドプロンプト終了前に一時停止するので、
エラー文を読むことができるようになります。
最後に rem つけなおしておきます。

Win+R キーを押して、ファイル名を指定して実行 より

shell:startup


と入力します。
開いたフォルダに作ったバッチファイルをコピーすれば OK です。



次に WSL Ubuntu 側。
pm2 で chinachu を自動起動します。
Ubuntu 内で作業します。

ホームフォルダに .bashrc を配置し、ここに記述します。

> vi ~/.bashrc


などとすれば編集できるでしょう。
内容は以下の通りです。

cd chinahu
echo <password> | sudo -S pm2 start processes.json


<password> には各自のパスワードを記述してください。
保存して終わりです。
パスワードを平文で埋め込んでしまうというかなり危険な設定ですが、
まぁ良しとしましょうか。
コメント (2)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 今日のお品。iLoud Portable ... | トップ | 画像を DPI値 に合わせて印刷... »
最新の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
Re : Chinachu自動起動の方法 (ヌキヲ)
2018-07-10 21:37:25
subdiox さん、無事再現できたみたいでよかったです。
こちらこそ、素晴らしいコメントありがとうございます。

自動起動の件とても参考になります。
WSH を使えばストアアプリも起動できる点がとても面白いですね。
Ubuntu 内はログインスクリプトを使えば行けるのかな?とか考えてたのですが、
/etc/startup に記述する方法もあるのですね。

時間が取れたら試してみて、本文の方にもまとめておこうと思います。
ありがとうございました。
返信する
Chinachu自動起動の方法 (subdiox)
2018-07-10 20:36:21
WSLでChinachuを動かすという他にない素晴らしい記事、ありがとうございます。
記事通りにセットアップを進め、無事Chinachuを動作させることに成功しました。

さて、Windowsを再起動するとChinachuを手動で起動する必要があるという欠点ですが、試行錯誤の末、これを克服することができました。ここにその手順を書きます。

※以下で、{Linuxユーザ名}はUbuntuを起動したときに自動でログインするユーザの名前、{Windowsユーザ名}はWindowsを起動したあとログインするユーザの名前に置き換えてください。

まず、Ubuntu内での作業です。
(1) `sudo vim /etc/startup`を実行して以下の内容のファイルを作る
#!/bin/zsh
cd /home/{Linuxユーザ名}/chinachu
pm2 start processes.json
exit
(2) `sudo chmod 700 /etc/startup`を実行する
(3) `sudo visudo`を実行して以下の内容を一番最後に追記する
{Linuxユーザ名} ALL = (root) NOPASSWD: /etc/startup

次に、Windows内での作業です。
(1) C:\Users\{Windowsユーザ名}\startupフォルダを作る(ファイルをまとめるためであり、この手順は本質的でない)
(2) (1)で作ったstartupフォルダ内にstartup.jsファイルを作り、内容は以下の通りとする
var ws = new ActiveXObject("WScript.Shell");
ws.Run("C:\Users\{Windowsユーザ名}\AppData\Local\Microsoft\WindowsApps\ubuntu.exe run "/usr/bin/sudo /etc/startup"", 0);
(3) (1)で作ったstartupフォルダ内にstartup.batファイルを作り、内容は以下の通りとする
@echo off
C:\Windows\System32\wscript.exe "C:\Users\{Windowsユーザ名}\startup\startup.js"
(4) Win+Rキーで「ファイル名を指定して実行」を開き、「shell:startup」と入力してスタートアップのフォルダを開く
(5) (3)で作ったstartup.batのショートカットを(4)で開いたフォルダ内に配置する

必要な作業は以上です。時間があるときにでも試してみてください。
返信する

コメントを投稿

研究&TIPS」カテゴリの最新記事