ubuntu18.04でQRS-UT100 or MonsterTV HDU2を使う

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

大前提
 この方法はまずMonsterTV HDUシリーズのドライバーファイルMTVHDU_080701_Drv.zip(MD5:4F675BB7FC050E63E16916F7B7313572)が無いと動かす事が出来ません。あしからず。

※追記2019/10/02
正確に言うと上記の中にあるSKNET_AS11Loader.sys(MD5:B4C3DD313F0577F4D4C8C709ED720D3C)さえあれば動きます。ネットの海にはまだまだ存在してますね。
追記終わり

QRS_UT100BをCentOS7で使う(失敗編)の続きです。今度はubuntuにしました。CentOS7でも必要なパッケージが整えば使えるかもしれません。

今回は使わなくなったノートPCを復活させてサーバー代わりにしてしまおうという計画の一環です。そしてその機能の一つに今では使い道がなくなってきたMonsterTV HDU2 または QRS-UT100 を接続させて、テレビ視聴が可能な環境を構築するまでを設定します。また今回はrecfriio r5 stz版を使います。HDU2は2チャンネル製品ですが1チューナーしか使えません。

参考HP
https://qiita.com/himalock/items/92c80dc4cff3e96ed19e
Raspberry Pi 3 + Mirakurun + 過去の資産 HDUS でチューナーサーバー構築

前提条件
 1.PC(USBポートが2個以上ついてる又はセルフパワーUSBHUBがついている)にubuntu18.04がインストールされている事(デスクトップ、サーバー問いません)
 2.ICカードリーダー(SCR3310-NTTCom推奨)にBCASカードが取り付けられている事
 3.MonsterTV HDUS(旧) or HDU2(旧) or QRS-UT100が取り付けられている事
 4.アンテナ等十分な受信感度を保てる環境である事(UHF/BS分波器等正常な受信状態)
 5.HDUシリーズのドライバ(MTVHDU_080701_Drv.zip)が手元にある事(これが一番大事)

注意事項
※これらが揃っていない場合利用できません。先に進んでも使えないのでここで終了してください。

1.必要なパッケージの取得
 パッケージは以下の物をapt installで取り込んで下さい。
 libglib2.0-dev libusb-dev pcscd libpcsclite-dev libccid pcsc-tools libboost-dev libboost-thread-dev libboost-system-dev libboost-filesystem-dev git curl

2.カードリーダーの認識確認
 前提条件2が接続されていればpcsc_scanを実行すると行の最後に
 Japanese Chijou Digital B-CAS Card (pay TV)
 と出てループしてると思います。Ctrl+Cで抜けます。

3.ドライバーの入手

$ git clone https://github.com/stz2012/recfriio

 でrecfriio r5 stz版を取ってきます。

4.patchの準備
 そのままではコンパイルが通らないのとHDU2とQRS-UT100が使えません。以下のパッチを作成します。

diff -uprN recfriio/arib25/Makefile recfriio.mod/arib25/Makefile
--- recfriio/arib25/Makefile	2019-09-24 14:27:58.546667689 +0900
+++ recfriio.mod/arib25/Makefile	2019-09-24 14:17:49.581514886 +0900
@@ -18,7 +18,8 @@ td.o: td.c arib_std_b25.h portable.h b_c
 ts_section_parser.o: ts_section_parser.c ts_section_parser.h ts_common_types.h portable.h ts_section_parser_error_code.h
 
 $(TARGET): $(OBJS)
-	$(CC) $(LDLIBS) -o $(TARGET) $(OBJS)
+#	$(CC) $(LDLIBS) -o $(TARGET) $(OBJS) $(LDLIBS)
+	$(CC) -o $(TARGET) $(OBJS) $(LDLIBS)
 
 clean:
 	rm -f *.o
diff -uprN recfriio/recfriior5/Hdp.cpp recfriio.mod/recfriior5/Hdp.cpp
--- recfriio/recfriior5/Hdp.cpp	2019-09-24 14:27:58.550667725 +0900
+++ recfriio.mod/recfriior5/Hdp.cpp	2019-09-24 11:12:45.000000000 +0900
@@ -326,7 +326,15 @@ Hdp::is_friio(const std::string &devfile
 		if (log) *log << "HDP Type: HDP2" << std::endl;
         	tunerCount = 2;
 		return true;
-	} else {
+        } else if ( TARGET_ID_VENDOR_HDUS == usb_desc.idVendor && TARGET_ID_PRODUCT_HDU2 == usb_desc.idProduct) {
+                if (log) *log << "HDU Type: HDU2" << std::endl;
+                tunerCount = 2;
+                return true;
+        } else if ( TARGET_ID_VENDOR_HDUS == usb_desc.idVendor && TARGET_ID_PRODUCT_QRS == usb_desc.idProduct) {
+                if (log) *log << "QRS Type: UT100" << std::endl;
+                tunerCount = 1;
+                return true;
+        } else {
 		return false;
 	}
 }
diff -uprN recfriio/recfriior5/Makefile recfriio.mod/recfriior5/Makefile
--- recfriio/recfriior5/Makefile	2019-09-24 14:27:58.550667725 +0900
+++ recfriio.mod/recfriior5/Makefile	2019-09-18 17:58:30.000000000 +0900
@@ -3,7 +3,7 @@ B25      = -DB25
 HDUS     = -DHDUS
 UDP      = -DUDP
 #HTTP     = -DHTTP
-TSSL     = -DTSSL
+#TSSL     = -DTSSL
 
 ifdef B25
   B25_PATH = ../arib25
diff -uprN recfriio/recfriior5/setting.hpp recfriio.mod/recfriior5/setting.hpp
--- recfriio/recfriior5/setting.hpp	2019-09-24 14:27:58.550667725 +0900
+++ recfriio.mod/recfriior5/setting.hpp	2019-09-17 01:10:29.000000000 +0900
@@ -46,6 +46,8 @@ const uint16_t TARGET_ID_VENDOR_HDU   =
 const uint16_t TARGET_ID_PRODUCT_HDU  = 0x6001; // HDUのidProduct
 const uint16_t TARGET_ID_PRODUCT_HDP  = 0x7010; // HDPのidProduct
 const uint16_t TARGET_ID_PRODUCT_HDP2 = 0x6111; // HDP2のidProduct
+const uint16_t TARGET_ID_PRODUCT_HDU2 = 0x6091; // HDU2のidProduct
+const uint16_t TARGET_ID_PRODUCT_QRS  = 0x7020; // QRS-UT100のidProduct
 const uint16_t TARGET_ID_PRODUCT_FS100U = 0x6081; // LDT-FS100UのidProduct
 #endif

 これをrecfriio.diffとして保存します。
 そして

$ cd recfriio
$ patch -p1 < ../recfriio.diff

 とするとパッチが当たります。

5.as11loaderの作成・読み込み
 4まで成功していれば

$ cd as11loader
$ make

 とするとas11loaderが作成されます。ここに前提条件5番のMTVHDU_080701_Drv.zipの中からSKNET_AS11Loader.sysを抽出し同じフォルダに置きます。その後

$ sudo ./as11loader

 でファームウェアがロードされHDU2又はQRS-UT100が使えるようになります。
 具体的にはlsusbとしたときにas11loaderが実行される前は
 ID 1738:5211で実行後は
 ID 3275:6091(これはHDU2)が帰ってきます。
 
 なお機器を抜いたり、再起動したりするとファームウェアがアンロードされてしまうのでudevでルールを作るなりするといいでしょう。今回は動かす所までなので端折ります

6.recfriioの作成・テスト
 5まできている場合ですと

$ cd ../recfriior5
$ make

 でコンパイルされます。環境にもよると思いますが約3分位でしょうか。中にrecfriioが作成されます。まずは何も指定しないで動かすとusageが表示されるはずです。(参考にしたサイトでも無効化しないと動かない状態がありましたので4のパッチに追加してあります)

$ ./recfriio

 そして実際に録画を実行してみます。HDDに余裕がある事を確認の上root権限で実行します。(root権限というよりデバイスを触れるユーザーなら必要ありませんが)

$ sudo ./recfriio --b25 --hdp 24 5 test.ts

 オプションの意味ですが–b25でBCASカードによる複合化をし、–hdpでHDU2又はQRS-UT100を利用する(–HDUSでHDUSも使えるはず)。24がチャンネルで、5が秒数、test.tsがファイル名となっています。
 これでフォルダ内にtest.tsが作成されているはずです。0バイトだったりなんらかのエラーが出ていない限り成功しています。
 ファイルを母艦に移してtssplitterなどでHD部分を取り出しVLCなどで再生できれば成功です。
 
7.後処理
 今回は手動で録画までできるようになりました。少々長くなったのでここで切りますが、私はこれにmirakurunを導入し、bondriver-mirakurunを母艦にインストール、TVTestで視聴という環境を作りました。この部分についてはいつか記事にしたいと思います。

コメント

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