ケーブルテレビはVHFローバンド1~3ch(93~105MHz)、ミッドバンドC13~C22ch(111~167MHz)、VHFハイバンド4~12ch(173~219MHz)、スーパーハイバンドC23~C63ch(225~465MHz)、UHFローバンド13~34ch(473~599MHz)、UHFハイバンド35~62ch(605~767MHz)の93~767MHzで配信されている。
地デジはケーブルテレビで配信している周波数帯で配信されているので、チャンネルが異なる場合はあるけれど、ケーブルテレビの地デジ再配信がパススルー方式の場合は、ISDB-Tに対応した地デジチューナーで受信できるが、トランスモジュレーション方式の場合は、ISDB-Cに対応したCATVデジタルチューナーでなければ受信できない。
BSデジタルはそもそもケーブルテレビで配信している周波数帯と異なるので、パススルー方式は使えない上、パススルー方式(17Mbps)だとBSデジタル(24Mbps)がそのまま配信できないので、ケーブルテレビでBSデジタル再配信を行っている場合は、64QAMで変調したトランスモジュレーション方式(30Mbps)を使っている(より効率の良い256QAMを使う例もある模様)。
PCで使えてTS抜きが出来るISDB-T対応の地デジチューナー(PLEX PX-S1UD等)のように、ISDB-C対応のCATVデジタルチューナーは見かけないが、海外のCATV規格であるDVB-CのシンボルレートをISDB-Cで使っている値に変更すれば、実質的に使えると知ったのでDVB-C対応CATVデジタルチューナーのMyGica DVB-T2 HDTV USB Stick T230を購入して使ってみた。
今回はAliExpressのMYGICA Official Storeから2,782円でT230を購入した。台湾からの発送のようで注文から配達まで2週間ちょいかかった。PX-S1UDのようにアンテナ端子部分にPALコネクタ→F型コネクタ変換が付いてないので別途用意する必要がある。
Linux(Raspberry Pi OS)で使う
PX-S1UDと同じようにファームウェアさえ配置しておけば取り付けるだけでDVBデバイスとして使える。ファームウェアはOpenELECのdvb-firmwareに含まれている。取り付けたら、DVBデバイスのアダプタ番号も確認しておく。
sudo apt-get install -y git git clone https://github.com/OpenELEC/dvb-firmware.git sudo cp dvb-firmware/firmware/dvb-demod-si2168-b40-01.fw /lib/firmware/ sudo cp dvb-firmware/firmware/dvb-tuner-si2158-a20-01.fw /lib/firmware/ ls /dev/dvb/
出荷時はSupported delivery systemsがDVB-T(DVBT)に設定されているので、DVB-C(DVBC/ANNEXA)に変更する。この設定は電源が切れても反映されたままの模様。尚、DVBC/ANNEX_Aを指定したチャンネルリストを使う場合は、別に設定を変更しなくても使える模様。DVBデバイスのアダプタ番号が0以外の場合は-aオプションを適切に修正する。
sudo apt-get install -y dvb-tools dvb-fe-tool -a0 dvb-fe-tool -a0 -d DVBC/ANNEX_A
チャンネルリストは要はVHF 1~12ch、UHF 13~62ch、CATV C13~C63chの中心周波数をMHz未満切り捨てで、シンボルレート5.274Mbaud、伝送方式をDVBC/ANNEX_Aで指定するだけなので以下のようにスクリプトで作成した。
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 chmod +x mkchconf.sh ./mkchconf.sh > channels.conf sudo mkdir /usr/local/etc/t230 sudo cp channels.conf /usr/local/etc/t230/
作成したチャンネルリストをイニシャルファイルとして指定して、チャンネルスキャンを行うと、カレントディレクトリにスキャン結果のチャンネルリストのdvb_channel.confが作成される。DVBデバイスのアダプタ番号が0以外の場合は-aオプションを適切に修正する。
dvbv5-scan -C JP -a 0 -N /usr/local/etc/dvbconf/dvbv5_channels_t230_dvbc.conf
スキャン結果のチャンネルリストに通常と異なるC24~C27の周波数が含まれているかを確認する。
grep 'FREQUENCY = 233000000' dvb_channel.conf grep 'FREQUENCY = 239000000' dvb_channel.conf grep 'FREQUENCY = 245000000' dvb_channel.conf grep 'FREQUENCY = 251000000' dvb_channel.conf
含まれていたら、先程のスクリプトに適当な引数(-c)を指定して通常と異なるC24~C27の周波数を含むチャンネルリストを再度作成する(J:COM神戸など)。
./mkchconf.sh -c > channels.conf sudo cp channels.conf /usr/local/etc/t230/
Mirakurunのチャンネル設定を作成するために自前でチャンネルスキャンを行う。まずは、1~62、C13~C63を4秒ずつ録画する。
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 4 -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 4 -o C${ch}.ts done EOT chmod +x catvrec.sh ./catvrec.sh
4秒ずつ録画したTSファイルからチャンネル名などを抽出して出力する。TSファイルからチャンネル名を抽出するために自作プログラムのtschputを使っている。
(2024/03/15にtsmkput、tschput、tssdoutに相当するバグ修正版プログラムのtsnameとservicenameを作成した。)
sudo apt-get install -y gcc nkf wget http://www.areanine.gr.jp/~nyano/archives/nikki/tschput.c gcc tschput.c -o tschput cat << 'EOT' > chlist.sh #!/bin/sh for ch in `seq 1 62`; do if [ -f ${ch}.ts ]; then ./tschput ${ch}.ts | nkf --ic=CP932 | sed -e "s/^ */${ch}\t/;s/ */\t/g" fi done for ch in `seq 13 63`; do if [ -f C${ch}.ts ]; then ./tschput C${ch}.ts | nkf --ic=CP932 | sed -e "s/^ */C${ch}\t/;s/ */\t/g" fi done EOT chmod +x chlist.sh ./chlist.sh > channels.txt
チャンネル名などを抽出して出力したテキストファイルを元にMirakurunのチャンネル設定ファイルを作成する。地デジやBSデジタルの再配信は別にしたいけれど、他のチューナーとの併用も考えて放送波種別はとりあえずSKYにしている。
cat << 'EOT' > mkchyml.sh #!/bin/sh lch="" while read ch onid tsid sid scramble type channel; do if [ ! "$ch" = "$lch" ]; then echo "- name: $channel" echo " type: SKY" echo " channel: '${ch}'" echo "" fi lch="$ch" done EOT chmod +x mkchyml.sh ./mkchyml.sh < channels.txt > channels.yml test ! -f /usr/local/etc/mirakurun/channels.yml.orig && sudo cp /usr/local/etc/mirakurun/channels.yml /usr/local/etc/mirakurun/channels.yml.orig sudo cp channels.yml /usr/local/etc/mirakurun/channels.yml
Mirakurunのチューナー設定ファイルを作成する。
cat << EOT > tuners.yml - name: T230 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 EOT test ! -f /usr/local/etc/mirakurun/tuners.yml.orig && sudo cp /usr/local/etc/mirakurun/tuners.yml /usr/local/etc/mirakurun/tuners.yml.orig sudo cp tuners.yml /usr/local/etc/mirakurun/tuners.yml
これでMirakurunを再起動すれば、以降はEPGStationやBonDriver_Mirakurunを使ってTVTest等でも使うことが出来る。
明石ケーブルテレビとJ:COM神戸の配信状況
明石ケーブルテレビは地デジをパススルーのみで再配信しており、トラモジでの再配信は行っていない。BSはトラモジで再配信しており、WOWOWも含まれているので契約しているB-CASカードがあれば視聴できる。尚、BS12 トゥエルビは含まれていない。
J:COM 神戸は地デジをパススルーとトラモジで再配信しており、エリア外のテレビ大阪と、独自チャンネルのJ:COMテレビ、J:COMチャンネルが含まれている。BSはトラモジで再配信しており、WOWOWも含まれているので契約しているB-CASカードがあれば視聴できる。尚、BS12 トゥエルビは含まれておらず、CSで放送されている。CSは契約しているC-CASカードが必要になるが、ショップチャンネルやQVC、ジャパネットchDXは4Kチャンネルもすべてノンスクランブルで放送されている。
今回は集合住宅のアンテナが明石ケーブルテレビになっていて契約していない環境と、J:COM神戸を契約している環境でホームターミナルを使わずに、T230を使って地デジ、BS、CSが受信できることを確認した。