以下省略!

タイダルウ(ry ほぼ毎日1記事執筆運動実施中。 ※記事に広告(アフィリエイト)リンクを掲載している場合があります。

Geniatech MyGica S270(Siano製チップ搭載)+Ubuntu 14.04(Xenialカーネル使用)で地デジを受信してみた

f:id:abyssluke:20201209174014j:plain:w200:left隠していた事解禁。AliExpressで注文していた、ISDB-T対応 TVチューナー Geniatech MyGica S270が先日届いたのでLinux環境で使ってみた。Siano製のチップセットが搭載されているチューナー。何故買ったのかは「AliExpressで買ってみた」でのお楽しみとして、本編は続きを読むから。

目次

注意

  • ビルドの過程についてはbuild-essentialやautomakeなどのビルド関係のツール(cmakeを除く)がすでにインストールされているものと仮定している。
  • 後述のlibarib25で放送波の復号を行ってみたい場合はB-CASカードとICカードリーダーが必要なので何とかして用意すること(入手方法についての解説は行いません)。
  • この記事の内容はあくまで研究、実験等の目的で書かれたものであり、著作権法などの法律に反する行為を助長するものではありません。録画した番組をインターネット等にアップロードする行為は違法となります。
  • この記事の内容に関する質問等は一切受け付けません。

ファームウェアを入れる

Ubuntu 14.04のXenialカーネル 4.4.0-62-genericにはすでにSianoのチップセットドライバが組み込まれているので挿せばチューナーとして認識する。が、ファームウェアを入れないとエラーを吐いて正常に動かないのでドライバCDのDriver/x64/x64Inf内にあるisdbt_rio.inpを/lib/firmwareにぶっこむ。

$ sudo cp /media/(user_id)/TV_Stick/Driver/x64/x64Inf/isdbt_rio.inp /lib/firmware/
$ sudo chmod 644 /lib/firmware/isdbt_rio.inp

すでにチューナーを挿してしまっている場合はぶっ込んだ後チューナーを挿し直せばいい。

ファームウェアが無いときのカーネルログ
[25132.712057] usb 1-4.4: new high-speed USB device number 6 using ehci-pci
[25132.805522] usb 1-4.4: New USB device found, idVendor=187f, idProduct=0600
[25132.805528] usb 1-4.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[25132.805531] usb 1-4.4: Product: MDTV Receiver
[25132.805534] usb 1-4.4: Manufacturer: MDTV Receiver
[25134.152569] smsusb:smsusb_probe: board id=18, interface number 0
[25134.370686] usb 1-4.4: Direct firmware load for isdbt_rio.inp failed with error -2
[25134.370697] smsmdtv:smscore_load_firmware_from_file: failed to open firmware file 'isdbt_rio.inp'
[25134.371212] smsmdtv:smscore_init_ir: IR port has not been detected
[25134.371216] smsusb:smsusb_probe: Device initialized with return code 0
[25134.456809] DVB: registering new adapter (Siano Rio Digital Receiver)
[25134.457990] usb 1-4.4: DVB: registering adapter 0 frontend 0 (Siano Mobile Digital MDTV Receiver)...
[25134.458330] smsdvb:smsdvb_hotplug: DVB interface registered.
[25134.462790] usbcore: registered new interface driver smsusb
蛇足:isdbt_rio.inpのハッシュ値とか
  • File size: 88308 bytes
  • MD5: ad6bb7d9390c76034f92257dbed64620
  • SHA1: c92e579709dfb6a473ba8ebaced9f588bffa6b6b
  • SHA256: 8e67916d92e734022d5fc3347c732d6e80de4418b3ed284e1a32a21033230846

b25をビルドする

放送波をB-CASカードを用いて復号してみる場合はlibarib25をインストールする。

$ sudo apt-get install cmake pcscd pcsc-tools libpcsclite1 libpcsclite-dev libccid
$ git clone https://github.com/stz2012/libarib25
$ cd libarib25
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install

recdvbをビルドする

libarib25をインストールした場合は./configureのオプションに--enable-b25を与える。

$ wget http://www13.plala.or.jp/sat/recdvb/recdvb-1.3.1.tgz
$ tar xzvf recdvb-1.3.1.tgz
$ cd recdvb-1.3.1
$ ./autogen.sh
$ ./configure --enable-b25
$ make
$ sudo make install

試しに録画してみる

recdvbを使って早速録画してみる。録画には物理チャンネル番号が必要だが、マスプロ電工のサイトから確認できる(ただし執筆時点で2014/03/31更新のデータの為それ以降の開局・チャンネル変更は反映されていない)。
--enable-b25付きでビルドしている場合はオプションに--b25 --stripを与えると復号処理も行う(ICカードリーダーにB-CASカードをセットした状態にすること)。与えなかった場合、ワンセグ以外は別途復号しない限り再生できない。
--sidには録画対象のサービスを指定する。hdとした場合は最初のサービス(論理チャンネルでいうとxx1chにあたる)、1segとした場合はワンセグサービス、--sidを指定しない場合はすべてのサービスを含めて録画する。
15の部分は物理チャンネルを指定している。ここでは札幌などでのNHK総合の物理チャンネルを指定している。30は録画する秒数、test.tsは出力先のファイル名を指定している。

$ recdvb --b25 --strip --sid hd 15 30 test.ts

うまくいくとtest.tsが出来上がるのでこれをvlcなりで再生してみる。うまく再生できれば成功。
もしB25絡みでエラーが出てくる場合は復号ができていないのでICカードリーダーの接続の確認やB-CASカードの再セットなどを行うべし。

ストリーミングサーバー

recdvbは--httpオプションを与えるとストリーミングサーバーとして稼働させることができる。ポート番号はお好みで(ここでは8800を指定している)。録画時と同じく--enable-b25でビルドしている場合はオプションに--b25 --stripを与える。

$ recdvb --b25 --strip --http 8800

VLCなどでhttp://[IPアドレス]:[指定したポート]/[物理チャンネル]/[サービス:hd/1seg]を開くと見れるはず。

今後について

今回は使われていないアンテナケーブルを隣の部屋から持ってきてやってみたが、その部屋にあまり使っていないRaspberry Piを置いて録画サーバーでも組んでみるかなぁ。ストレージ等の必要機器を調達しないといけないから資金の問題も出てくるが…