Mygica T230Cを使ってRaspberry PiでJCOMのトラモジ受信。少しだけ躓いたけれど受信ができました。

私は最近、と言っても数か月前ですが、引越しをしてTVの受信環境が変わってしまい、今までアニメの録画などに重宝していたBSのチャンネルが見れなく(録画できなく)なりました。

簡単に私の録画環境を書いておくと、Raspberry PiにPX-W3PE4を使ってDTVシステムを構築しています。これについて詳しく知りたい方は以下のページを見ていただければと思います。

私の録画環境構築の記事

それはさておき、BSは再放送でパススルー方式が許可されたにもかかわらず、JCOMでは従来通りのトランスモジュレーション方式(通称トラモジ)でBSの再放送を行っています。

これが何を表すかというと、普通のチューナーを搭載した受信機器では簡単にBSの再生を行うことができず、専用のSTB(Set Top Box)を用いなければBSの再生をすることすらできません。

しかもこのSTBはBSのデータをHDMI出力の映像データなどでしか再生できないという残念な使用で録画なんてできません。

では、なんとかこのトランスモジュレーション方式の放送を強引に受信できないのかと思って色々調べていると、国際規格におおよそ沿った規格で配信されていることがわかりました。

これに合うチューナー探せばよいと思ってさらに調べると、すでにLinuxでT230というチューナーを使ってトラモジの受信に成功している方がいました。

しかし、T230とT230Cは別物です。加えて言うならT230Aというのもありこれも別物。そして、実際にその手順通りでやってみるとわからないこと、表記ミス、レポジトリが違うなど色々躓いたことがあったので記事を書くことにしました。

そのため、この記事はT230CをRaspbery Piで使うことについての記事です。おそらくfirmware自体は共通だと思うので、Intel環境などでも大丈夫だと思いますが、Raspberry Pi以外での動作は確認していないので悪しからず。

目次

何ができるようになる?

冒頭のリード文で書きましたようにトランスモジュレーション方式の放送の受信ができるようになります。

具体的には、再放送でノンスクランブルであるものが見れるようになるので、地デジやBSの再放送されているものが視聴可能となります。そのため、スクランブルのかかっていないCSや4K放送も見ることができます。

逆に言えば、スクランブルのかかっているCSなどのCATV領域はデータを受信すること自体はできますが、スクランブルを外すのが難しいのです。もちろん、外せないわけではないでしょうが、難しいという話です。Windowsならまだしも、Linuxならなおさらです。

私の場合はBS11あたりがアニメ録画で見れたら嬉しいので、CSをみれる必要性が無いというのが今回やってみようと思った理由でもあります。

T230Cについて&必要なもの

T230CはMygicaの販売する海外向けのテレビチューナーです。DVB-T/T2などといった規格に対応しています。

気を付けていただきたいのが、T230CとT230、T230AとT230っぽい名前の機種は3種類存在していて、それぞれ微妙に違うというのに気を付けてください。なので、この記事はあくまでT230用なので、T230AやT230では微妙に違うところが存在しており動かないので注意です。

じゃあなんで海外向けのチューナーで日本の放送見れるのかという話ですが、CATVの放送規格であるISDB-Cは海外の放送方式をほぼそのままにしているからです。そのため、チューニングスペースや変調方式があってさえいれば受信できるというわけです。

そこで安価に受信できるものとして目を付けられたのがT230Cという製品なわけです。

T230Cを製造しているのはGeniatechで、この会社は日本向けのチューナを製造しているメーカなので信頼性という点でも問題ないメーカーになっています。PLEXの製品の一部はgeniatech社製というので有名ですね。

ちなみに、購入はAliexpressでMygica Official Storeから購入しました。なんと50日以上かけてやってきましたが、中華通販なのでここら辺は覚悟していました。

では、これを買って終わりかというとそいうわけではなく、T230Cは海外向けの製品なだけあって端子の形状が違うために、別途端子を変換するアダプターが必要になります。

PAL端子→F型端子への変換です。こんなやつです。

F型がメス、PALの方がオスなので間違えないようにしましょう。不安ならリンクの踏めば間違いはないかと。

実際に試した環境

次に、私の環境を示します。

  • Raspberry Pi 4 Model B 4GB
    • OS:Raspberry Pi OS Buster
    • microSD:8GB SanDisk Industrial
    • 電源:5V3A
    • EPGStation+mirakurun
    • SoftCas
  • チューナー1:Mygica T230C
  • チューナー2:PX-W3PE4
  • NASに録画

このようになっています。おそらくLinuxであればAMD/Intel環境でもいけるとは思うのですが、当方では未確認なのでやる方がいれば自己責任でお願いします。できたら教えてください。

mirakurunのバージョンは古すぎると正しく動作しません。Ver3.6.0以降推奨です。私は昔のmirakurun2.13.0で動作されているデバイスでは正しく動作せず、3.6.0以降のバージョンで正しく動作することを確認しました。

ちなみに、予定としてはT230Cを2個接続出来たらいいなと思っていますが、今回は検証も兼ねて最初は1個のみで設定してみます。

最終的には2個での設定もできたので、2台設定する場合の方法も残しておきます。

手順

ファームフェアやツールのインストール

はじめにファームフェアをインストールします。

sudo apt-get install -y git
git clone https://github.com/osmc/dvb-firmware-osmc.git
sudo cp dvb-firmware-osmc/{dvb-demod-si2168-d60-01.fw,dvb-tuner-si2141-a10-01.fw} /lib/firmware/

次にDVBツールを入れて動作モードを変更します。本来日本向けの規格はANNEX Cですが、その動作モードは存在しないので、一番規格的に近いANNEX.Aをしています。他にもANNEX.Bとかもありますが、ここら辺の何がメインで変わってくるかと言えばQAMの話なのでほぼ同じのANNEX.Aを選びましょうということです。ANNEX.Aとかの規格はITU-Tが策定しているので、もっと知りたい方はそちらを見てください。

sudo apt-get install -y dvb-tools
dvb-fe-tool -a0
dvb-fe-tool -a0 -d DVBC/ANNEX_A

上記のコマンドを実行するとデバイスの確認ができるので、T230Cで間違いないかを確認して、最後の行でANNEX.Aに設定しています。

また、今回私の場合は"adapter0"としてT230Cが認識されていたので、"-a0"のようにしていますが、最後の数字は"adapter~"の数字の部分にしてください。例えば、T230Cが"adapter1"として認識されていた場合は以下のようにしてください。

dvb-fe-tool -a1

チャンネルリストの作成

次に、チャンネルリストを作成します。これはT230の設定を行っていた別の方の記事の物とほぼ同じです。6MHzずつ周波数をステップさせていくだけです。

nano mkchconf.sh
cat << 'EOT' > mkchconf.sh
#!/bin/sh
for ch in `seq 1 3`; do
	fr=`expr \( $ch - 1 \) \* 6 + 93`
	echo "[${ch}]"
	echo "\\tFREQUENCY = ${fr}000000"
	echo "\\tSYMBOL_RATE = 5274000"
	echo "\\tDELIVERY_SYSTEM = DVBC/ANNEX_A"
	echo ""
done
for ch in `seq 4 12`; do
	if [ $ch -lt 8 ]; then
		fr=`expr \( $ch - 4 \) \* 6 + 173`
	else
		fr=`expr \( $ch - 8 \) \* 6 + 195`
	fi
	echo "[${ch}]"
	echo "\\tFREQUENCY = ${fr}000000"
	echo "\\tSYMBOL_RATE = 5274000"
	echo "\\tDELIVERY_SYSTEM = DVBC/ANNEX_A"
	echo ""
done
for ch in `seq 13 62`; do
	fr=`expr \( $ch - 13 \) \* 6 + 473`
	echo "[${ch}]"
	echo "\\tFREQUENCY = ${fr}000000"
	echo "\\tSYMBOL_RATE = 5274000"
	echo "\\tDELIVERY_SYSTEM = DVBC/ANNEX_A"
	echo ""
done
for ch in `seq 13 22`; do
	if [ $ch -lt 22 ]; then
		fr=`expr \( $ch - 13 \) \* 6 + 111`
	else
		fr=`expr \( $ch - 22 \) \* 6 + 167`
	fi
	echo "[C${ch}]"
	echo "\\tFREQUENCY = ${fr}000000"
	echo "\\tSYMBOL_RATE = 5274000"
	echo "\\tDELIVERY_SYSTEM = DVBC/ANNEX_A"
	echo ""
done
for ch in `seq 23 63`; do
	if [ -n "$1" -a $ch -gt 23 -a $ch -lt 28 ]; then
		fr=`expr \( $ch - 24 \) \* 6 + 233`
	else
		fr=`expr \( $ch - 23 \) \* 6 + 225`
	fi
	echo "[C${ch}]"
	echo "\\tFREQUENCY = ${fr}000000"
	echo "\\tSYMBOL_RATE = 5274000"
	echo "\\tDELIVERY_SYSTEM = DVBC/ANNEX_A"
	echo ""
done
EOT

シェルスクリプトができたら実行権限を与え実行します。私の使っているnanoの影響なのか、1回目の実行だと、シェルスクリプトにEOTの情報が書かれるだけでプログラムが実行されないので、2回シェルスクリプトを実行してください。

chmod +x mkchconf.sh
./mkchconf.sh > channels.conf
sudo mkdir /usr/local/etc/t230
sudo cp channels.conf /usr/local/etc/t230/

次に、以下のコマンドを用いて、設定に従ってどのチャンネルが受信可能かを調べます。これも、ANNEX.Aを設定したときと同じで、 -aの後ろ引数は"adapter(数字)"の数字に合わせます。

sudo dvbv5-scan -C JP -a 0 -N /usr/local/etc/t230/channels.conf

これを実行すると、以下のような表示になると思います。

スキャン実行時の画像

しっかりC/N値が表示されていれば問題ありません、サービスプロバイダや放送局が文字化けしていますが、これに関しては仕様なので問題ありません。

ただ、問題となるのは0.00dBmなどになり常に認識できていない状態だと何か設定が上手くいっていないか、違うファームフェアの可能性があるので気をつけてください。私は、T230の方の記事を参考に作業したために、当該症状が出てしばらく考え込んでいました。

このコマンドを実行すると、実行したディレクトリにdvb_channel.confというファイルが作成されます。

さて、その実行結果を参考にしつつ、EPGStationでも使えるように、mirakurunのchannels.ymlのデータを作成します。もし、EPGStationを利用していない場合で、mirakurunのチャンネル設定ファイルの放送局名をそのまま使う場合は、どのチャンネルがどの放送局かを調べる必要があるので、参考にしたサイトのスクリプトを少し改造して放送局をできるかぎり把握する必要があります。

以下どちらかの方法でやってください。

mirakurunのchannels.ymlの放送局名を正しく記入する場合

シェルスクリプトを作成します。

nano catvrec.sh

以下のようにして、4,6行目の最後の.tsとなっているところは好きなディレクトリに変更して、適切に読み替えて使ってください。 また、ANNEX.Aを設定したときと同じで、 -aの後ろ引数は"adapter(数字)"の数字に合わせます。 中身としては10秒間それぞれのチャンネルを録画するコマンドです。

cat << 'EOT' > catvrec.sh
#!/bin/sh
for ch in `seq 1 62`; do
	dvbv5-zap -C JP -a 0 -c /usr/local/etc/t230/channels.conf -r -P ${ch} -t 10 -o ${ch}.ts
done
for ch in `seq 13 63`; do
	dvbv5-zap -C JP -a 0 -c /usr/local/etc/t230/channels.conf -r -P C${ch} -t 10 -o C${ch}.ts
done
EOT

実行権限を与えて実行します。

chmod +x catvrec.sh
./catvrec.sh

これもEOTを記入する必要があるので、シェルスクリプトを2回実行すれば正しくシェルスクリプトを実行できます。

このシェルスクリプトの中身は、それぞれのチャンネルで10秒録画を行うというものになっています。

あとは、この録画できたファイルを外部のTSファイルを解析できるソフトに持っていき、そのデータ解析で放送局を特定する作業を行い、対応する録画ファイルの数字に合わせて以下のchannels.ymlのname以降を書き換えます。私はWindowsに持っていって調べてみました。

ただ、この手順で気を付けて欲しいことがあり、TSMFの関係で録画ファイルは生成できても放送局がわからない場合というのもあったりするので、その際はとりあえず"CATV:(チャンネル)"のような形で名前を付けておくと後々放送局がわかったとき修正しやすいのでおすすめです。何回かこのバッチを実行してみると、前に実行したときには録画できなかったのに、今回はできたみたいなこともあったので、細かいことは気にしすぎない方が良いかもしれません(C-CASがなければCS領域はどうせみれません)。

さて次に、channels.ymlを開きましょう。

sudo nano /usr/local/etc/mirakurun/channels.yml

以下のようなフォーマットで延々とチャンネルスキャンでチューナーがロックされたチャンネル(スキャンの時に緑色の文字が表示された周波数帯)を登録していきます。CATVの項目は存在しないので、今回はSKYとして登録しておきます。緑の文字で表示されたのはdvbv5-zaoコマンドを実行したディレクトリにdvb_channnels.confというファイルがあるのでそちらを見てください。文字化けはしていますが、役に立ちます。

- name: 'nhk総合'
  type: SKY
  channel: '13'
- name: 'BS11'
  type: SKY
  channel: '16'

これを延々と手動で繰り返さないといけないのが面倒ですが、環境によってどのチャンネルに何が放送されているかというのがわからないのが現状です。なので、頑張って手動で打ち込むのが良さげです。面倒ですが我慢しましょう。

これを繰り返したらmirakurunでchanneles.ymlに名前を設定するケースは終わりです。

EPGStationの場合

やることはmirakurunのファイルに放送局を手動で登録する場合と何ら変わりません。ですが、EPGStationはmirakurunのchannels.ymlの名前が適当でも正しい放送局名をデータから読み取ってくれるので、チャンネルの設定だけが正しく行えていれば問題ありません。

さて、チャンネルスキャンの後、いきなりチャンネルファイルを編集します。

sudo nano /usr/local/etc/mirakurun/channels.yml

チャンネルスキャンの結果を見ながら、受信できるチャンネルをchannels.ymlに追記していきます。例としては以下のような感じです。他の環境になったときになるべく邪魔をしないように、"SKY"のとしてトラモジ配信を登録します。

- name: 'CATV:50'
  type: SKY
  channel: '50'
- name: 'CATV:C13'
  type: SKY
  channel: 'C13'

これを受信できるチャンネルの数だけ書きます。このとき、"name"の項はEPGStation利用に限ってはどうでも良いです

これは最初に書いた通り、EPGStation側でデータから正しい名前を拾ってくれるためです。名前は適当でもいいって楽です。

他にも、mirakurunに正しい名前を登録するときのように、TSファイファイルを保存しても良いです。ただ、TSMFの関係で、数秒の録画だと、正しい情報が受け取り切れず、放送局がわからなかったり、チャンネルロックがなぜかできずに容量が0だったりするケースもあるので、チャンネルスキャンの結果を見て設定するのが一番だと思います。

ちなみに、私はdvbv5-scanで得た、文字化けしているdvb_channels.confを全て数字に書き換えました。一部抜粋すると以下のようになっています。

[1]
	SERVICE_ID = 421
	VIDEO_PID = 5120
	AUDIO_PID = 5124 5125
	FREQUENCY = 99000000
	MODULATION = QAM/AUTO
	INVERSION = AUTO
	SYMBOL_RATE = 5274000
	INNER_FEC = AUTO
	DELIVERY_SYSTEM = DVBC/ANNEX_A

[2]
	SERVICE_ID = 400
	NETWORK_ID = 65534
	TRANSPORT_ID = 1
	VIDEO_PID = 5184
	AUDIO_PID = 5188
	PID_06 = 6144
	FREQUENCY = 173000000
	MODULATION = QAM/64
	INVERSION = AUTO
	SYMBOL_RATE = 5274000
	INNER_FEC = NONE
	DELIVERY_SYSTEM = DVBC/ANNEX_A

[3]
	SERVICE_ID = 753
	NETWORK_ID = 65534
	TRANSPORT_ID = 1
	VIDEO_PID = 5120
	AUDIO_PID = 5124 5125
	FREQUENCY = 173000000
	MODULATION = QAM/64
	INVERSION = AUTO
	SYMBOL_RATE = 5274000
	INNER_FEC = NONE
	DELIVERY_SYSTEM = DVBC/ANNEX_A

そして、以下のシェルスクリプトを作成、及び実行しました。

nano chyml.sh
cat << 'EOT' > chyml.sh
#!/bin/sh
for ch in `seq 1 176`; do
        echo "- name: CATV:${ch}"
        echo "  type: SKY"
        echo "  channel: '${ch}'"
done
EOT

「seq 1 176」の部分は私の場合は176項目あったからそうしています。適切に読み替えてください。その後、好きな形で書き出します。

sudo chmod +x chyml.sh
./chyml.sh > channels_sky.yml

これをchannels.ymlに書き加えたら終わりです。

さて、チャンネルファイルを設定し終わったら、次はチューナーの設定を行います。

チューナーの設定

チューナーの設定はmirakurunの設定に追記するだけです。

sudo nano /usr/local/etc/mirakurun/tuners.yml

以下を追記します。

- name: T230C_1
  types:
    - SKY
  command: dvbv5-zap -C JP -a 0 -c /usr/local/etc/t230/channels.conf -r -P <channel> 
  dvbDevicePath: /dev/dvb/adapter0/dvr0
  decoder: arib-b25-stream-test

一番下に有効か無効かを示す、isDisabledとか追記しても大丈夫ですが、どうせ使うので書かなくても良いでしょう。

例によって、"command"の行の"-a"の引数の数字は"adapter(数字)"の数字に合わせてください。この行は見ての通り録画するためのコマンドを指定していて、dvb5-zapコマンドで録画しています。

また、"dvbDevicePath"はそれぞれの"adapter(数字)"のパスを書いてください。

加えて、dvbコマンドではrecpt1のようにコマンド側でB25デコードを行えないので、decoderを別途"arib-b25-stream-test"で指定してやる必要があります。デコーダを入れていないのであれば入れておきましょう。

これを保存したら再起動して設定は終了です。

sudo reboot

番組表が映らない…?

一度再起動すると、私の場合は従来まで見れていた地上波などの番組表も見れなくなっていました。

設定を間違えたのか等を考えていましたが、結局一晩眠ると正しく番組表が表示されました。しっかり待てばよいだけです。

時間が経過すると番組表が表示された

2台つなげる場合

2台つなげる場合は2台目のT230Cにおいて以下のANNEX.Aに設定するコマンドを実行します。

dvb-fe-tool -a0 -d DVBC/ANNEX_A

このとき最初に指定したdvbデバイスではなく、2台目のdvbデバイスを指定するようにします。

あとは、チャンネルのデータなどですが、ここら辺は使いまわしがきくので同じファイルを指定してしまいます。なので、tuners.ymlに同じようなものを追加して再起動すれば2台目の接続が完了です。

- name: T230C_2
  types:
    - SKY
  command: dvbv5-zap -C JP -a 1 -c /usr/local/etc/t230/channels.conf -r -P <channel> 
  dvbDevicePath: /dev/dvb/adapter1/dvr0
  decoder: arib-b25-stream-test

commandの-aの引数の数字とdvbDevicepathを適切に書き換えるだけです。

2台目はかなり簡単に増設できます。

(追記)Raspberry Pi環境は非推奨

色々試行錯誤していて、気づいたことがありました。仮に利得が足りなかったとして、ブースターで正しく増幅できれば頻繁にドロップするのはおかしいのでは?ということに気づき、一度他のミニPCの環境で試しました。使ったのはCHUWIのHeroBox Proです。

スペックなどは上記ページに書いているのでそちらを参照してもらうとして、簡単に言えば低スペックPCの括りのものになります。そんな大層なPCではないです。

このPC上にUbuntu Serverを使って同様の環境を構築してみたところ、ほぼドロップはなくなりました。稀にドロップしますが、MEPEG2 Videoの部分で1とかなので、大して気になりません。一方でRaspberry Piでは1番組あたり50とかドロップしています。

正直何が原因というのは微妙に判断がつかないのですが、わかっているのはRaspberry Piではドロップが頻発し、HeroBox Proではドロップがほぼ発生しないということ。スペック不足の可能性も否めませんが、一番可能性が高いのはUSBの電圧が不安定であることです

必要なものを全て接続した上で、180mAを要求するだけで低電圧警告が出るくらいの運用でしたので、電源やその他色々疑って交換などを試してみたのですが、どうも安定しませんでした。

なので、私の結論としては、Raspebrry PiでT230Cを使うのはあまりおすすめできないかなと思いました。制御の問題も考えられるのでもしかしたら別OSを試してみると違う結果が得られるかもしれませんが、私は諦めました。

私の場合はかつて、Chinachu+PX-W3PE4で録画システムを組んでいたので、それに比べたらチューナーも増えて、EPGStationにも乗り換えてシステム自体が高性能を要求するようになってきていたので、ちょうどよい区切りでした。しばらくは手持ちのHeroBoxProを使ってシステムを組みつつ、何か良いミニPCがあればそちらを購入して録画サーバーに切り替えようと思います。

結果

試しにBS朝日を録画してみたところ録画できました

それ以外にも録画を試してみたところドロップを頻発したチャンネルが存在したのですが、安定しているものとしていないものの差を考えると利得の問題のようなので、T230Cが悪いというわけではなさそうなので、ここらへんはブースターなどを買ってみて試してみようと思います。

(追記:2021/10/20)ブースターを入れた結果しっかりと見れるようになりました。ブースター自体の使い方が良く分かっていなかった節もあるのですが、我が家では入力波形が傾斜しているらしく、波面がフラットになるように調整した問題なく結果見れるようになりました。

(追記:2021/10/28)どのブースターを使っているのかというのも需要があるみたいなので、使っているブースターのレビュー記事を書きました。卓上ブースターなので気軽に使えます。

DXアンテナの「TCF03S」

Amazonで5,000円強で販売されていて気軽に使えて、なおかつCATV領域を増幅できるのでイチオシのブースターですよ。

何はともあれ、とりあえずはトラモジを受信できたということで一安心です。

まとめ

何点かヒヤッとしたり、躓いた点はありましたが、DVB-C対応チューナを適切に設定すればトラモジを受信できました。

なので、今後は引っ越してもBSのアンテナがないとか悲観することはなくなりそうです。

こんなニッチな記事は役に立たなそうですが、トラモジをどうしても受信したいという方の助けになれば幸いです。

以上です。お読みいただきありがとうございました。

投稿日:
カテゴリー: DTV

2件のコメント

  1. お世話になります。
    同じくT230Cでいろいろ試させていただいているのですが、特定チャンネル(トラモジでBS朝○)がドロップ多発して見れない状況です。
    ブースターで改善されたとのことですが、どの製品を購入されましたでしょうか。
    BS/CS用のブースターでは利得は向上しないとは思うのですが、情報頂けると大変たすかります。

    1. コメントありがとうございます。

      表記の内容につきましては、BS/CSブースター以外にも、CATV用ブースターというものが存在しているのでその手のものを使用するのがおすすめです。私は以下の製品を利用しています。
      DXアンテナ 卓上用ブースター
      ただし、ブースターの使用条件として、DVBデバイスをオープンしているときに表示されているBER(Bit Error Rate)値が十分に低いことが条件になりますので、十分に気を付けてください。T230Cではどこら辺が閾値になるかは私もよくわかりません。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です