前書き的なもの
自宅のアパートだとBS、CSのアンテナ方向に警察署と市役所があり、さらには窓の向きがほぼ東向きで絶望的状況の為どうにかできないかと調べた結果MyGica T230, T230Cという中華DVB-CチューナーでJCOMが受信できるとの事なので探してみた。
が、現在Amazon、Aliexpress共にMyGica T230もT230Cも日本向けに発送しておらず購入不可。
唯一購入できるのがMyGica T230Cの後継機であるMyGica T230Aだったのでダメもとの人柱覚悟で購入して、1週間格闘し使えるようにした話。
備忘録と今後MyGica T230Aを購入した人向けの記録的なもの
2021/09/12 追記
現在の新しいkernelだとファイル差し替えでdvb_coreがエラーを吐いてdvbデバイスとしてマウントできないのでカーネルごと差し替え推奨です。
また、新しいkernelだと
" sudo cp arch/arm/boot/zImage /boot/$KERNEL.img "
のコマンドでカーネル差し替えの際に" $KERNEL "が空白になってしまい差し替えできないので以下のように
" sudo cp arch/arm/boot/zImage /boot/kernel7l.img "
明確にimgファイルを指定してください。
ちなみに記事中で紹介している以下kernelはバージョン5.10.23で止まっているようです。
Github - pego149 / linux - Added Geniatech MyGica T230C2_LITE and T230A
2021/12/06 追記
新しく書き直した記事の方でラズパイの最新カーネルにパッチを当ててT230Aに対応させる方法を新しく追記し書き直しました。
MyGica T230AでMirakurun&EPGStation環境構築 - Qiita
MyGica T230Aの購入
現在入手できるのはAliexpressのみ。
公式の物はこれのみでお値段¥2,531-(送料無料)
2021年4月12日現在では注文から2週間で届いた。
届いたMyGica T230Aをとりあえず挿してみる
Aliexpressのレビューが最近のもの(主に2019年中頃以降)は低評価が多く怪しいなと不安に煽られていたが、やはり無理だった。
USBデバイスとして認識するものの、DVBデバイスとして認識しておらずドライバーが必要。
で、探してきて以下のサイトにドライバ一式があった。
が、このドライバー不具合があるまま公式が放置で使用不可らしい...
pi@raspberrypi:~ $ lsusb
Bus 002 Device 002: ID 0bda:0411 Realtek Semiconductor Corp.
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 3275:0080 VidzMedia Pte Ltd
Bus 001 Device 004: ID 04e6:5116 SCM Microsystems, Inc. SCR331-LC1 / SCR3310 SmartCard Reader
Bus 001 Device 005: ID 0572:689a Conexant Systems (Rockwell), Inc. <--これがT230A
Bus 001 Device 003: ID 0bda:5411 Realtek Semiconductor Corp.
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
pi@raspberrypi:~ $ dmesg | grep usb
~~~~~~~~~~~~~~~~~~~~//略
[ 2.743672] usb 1-1.2.4: new high-speed USB device number 5 using xhci_hcd
[ 2.905153] usb 1-1.2.4: New USB device found, idVendor=0572, idProduct=689a, bcdDevice= 8.00
[ 2.905202] usb 1-1.2.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 2.905239] usb 1-1.2.4: Product: USB Stick
[ 2.905269] usb 1-1.2.4: Manufacturer: Gen
[ 2.905298] usb 1-1.2.4: SerialNumber: 2017.12.09
~~~~~~~~~~~~~~~~~~~~//略
さらに探すとGithubにてこの問題が質問されてるのを見つける。
Github - How to add new MyGica T230A?
LibreELECのForumにも質問発見。
どうやら今までのT230, T230Cなどと違いGPIOが変わっておりDriverを使いまわすことができないらしいが、有志がとりあえず動くWindows用Driverを解析しLinuxのDriver Module用にPatchを用意してくれた模様。
Github - crazycat69 / linux_media - media: dvb-usb-v2/dvbsky: Mygica T230A support.
RaspberryPiのkernelベースの物も見つけた
Github - pego149 / linux - Added Geniatech MyGica T230C2_LITE and T230A
今回の環境はRaspberryPi 4なのでこちらを利用させてもらう。
GithubからKernelを落としてDriverをBuild & Install
まずは更新してから必要なものをインストール
$ sudo apt update
$ sudo apt upgrade -y
$ sudo apt install -y git bc bison flex libssl-dev make
git cloneでKernel Sourceをダウンロード
RaspberryPi向けの物は公式のGitからforkされているので、通常の「apt upgrade」で更新されるkernelバージョンと同じようだが不安な方はマスターブランチを一応確認するといいかも。
$ git clone --depth=1 https://github.com/pego149/linux
RaspberryPiのドキュメントを参考にKernelをビルドする
Kernel building - Raspberry Pi Documentation
↓ 以下RaspberryPi 4向け手順
gitから落としたソースディレクトリに入ってビルド設定
最近のkernelのMakefileでは3行目の「make bcm2711_defconfig」で必要なconfigファイルが生成されるらしい。
$ cd linux
$ KERNEL=kernel7l
$ make bcm2711_defconfig
Kernelをmakeでビルドする(RaspberryPi4で1時間半くらい)
$ make -j4 zImage modules dtbs
Driver Moduleのインストール
$ sudo cp ~/linux/drivers/media/usb/dvb-usb-v2/dvb-usb-dvbsky.ko /lib/modules/$(uname -r)/kernel/drivers/media/usb/dvb-usb-v2/
$ sudo depmod -A
ついでに必要なファームウェアも入れる
$ wget http://palosaari.fi/linux/v4l-dvb/firmware/Si2168/Si2168-D60/6.0.1/dvb-demod-si2168-d60-01.fw && \
$ wget http://palosaari.fi/linux/v4l-dvb/firmware/Si2141/Si2141-A10/1.1.10/dvb-tuner-si2141-a10-01.fw
$ sudo cp ./{dvb-demod-si2168-d60-01.fw,dvb-tuner-si2141-a10-01.fw} /lib/firmware/
再起動すればドライバが読み込まれ" /dev/dvb "にデバイスがマウントされてT230Aが使えるようになる。
$ ls /dev/dvb
adapter0
モジュールだけインストールして再起動後にエラー吐くならKernelのバージョン違いや不足物等あるので以下の通りにKernel丸ごとインストール。
問題ないなら飛ばして次へ
$ sudo make modules_install
$ sudo cp arch/arm/boot/dts/*.dtb /boot/
$ sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
$ sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/
$ sudo cp arch/arm/boot/zImage /boot/kernel7l.img
dvb-toolsをインストールしてチャンネルスキャン
国内のCATVはDVB-Cとほぼ同じような規格でシンボルレートを合わせてやると受信できるので、まずは「dvb tools」を使用してT230Aを「DVBC/ANNEX_A」に設定する
この時、複数dvbデバイスがある場合は「-a」オプションで番号を指定する。
うちの場合は「adapter1」がT230Aなので「-a1」となる。
$ sudo apt install -y dvb-tools
$ ls /dev/dvb
adapter0 adapter1
$ dvb-fe-tool -a 1 -d DVBC/ANNEX_A
Changing delivery system to: DVBC/ANNEX_A
$ dvb-fe-tool -a 1
Device Silicon Labs Si2168 (/dev/dvb/adapter1/frontend0) capabilities:
CAN_2G_MODULATION
CAN_FEC_1_2
CAN_FEC_2_3
CAN_FEC_3_4
CAN_FEC_5_6
CAN_FEC_7_8
CAN_FEC_AUTO
CAN_GUARD_INTERVAL_AUTO
CAN_HIERARCHY_AUTO
CAN_INVERSION_AUTO
CAN_MULTISTREAM
CAN_MUTE_TS
CAN_QAM_16
CAN_QAM_32
CAN_QAM_64
CAN_QAM_128
CAN_QAM_256
CAN_QAM_AUTO
CAN_QPSK
CAN_TRANSMISSION_MODE_AUTO
DVB API Version 5.11, Current v5 delivery system: DVBT
Supported delivery systems:
DVBT
DVBT2
[DVBC/ANNEX_A]
Frequency range for the current standard:
From: 48.0 MHz
To: 870 MHz
Step: 62.5 kHz
ドライバーに問題なければ上記のように「DVBC/ANNEX_A」に設定できる。
設定できなければドライバに問題があるので「dmesg」コマンドで確認するか、前の項を確認しながら再度Kernelのビルドとインストールをする。
さらに、ファームウェアも問題なければ以下のように「dvbv5-scan」でチャンネルスキャンできるので、そこから生きてるチャンネルを抽出する。
使用しているチャンネルリストはCATVデジタルチューナーT230を使う - にゃののん日記からスクリプトごと借用。
$ dvbv5-scan -C JP -a 1 -N channels.conf
ERROR command BANDWIDTH_HZ (5) not found during retrieve
Cannot calc frequency shift. Either bandwidth/symbol-rate is unavailable (yet).
Scanning frequency #1 93000000
(0x00) Signal= -36.00dBm C/N= 28.25dB UCB= 353 postBER= 14.0x10^-3
Scanning frequency #2 99000000
Lock (0x1f) Signal= -36.00dBm C/N= 29.50dB UCB= 353 postBER= 1.00
ERROR dvb_read_sections: no data read on section filter
ERROR error while reading the SDT table
WARNING: no SDT table - storing channel(s) without their names
Storing Service ID 421: '99.00MHz#421'
Storing Service ID 422: '99.00MHz#422'
Scanning frequency #3 105000000
Lock (0x1f) Signal= -36.00dBm C/N= 30.00dB UCB= 353 postBER= 1.00
Service F|K\1G2h!\;~Be7`4K, provider F|K\1G2hJ|Aw3t<02q<R: digital television
Scanning frequency #4 173000000
(0x00) Signal= -37.00dBm
チャンネルスキャンで信号の受信とチャンネルの確認ができればMirakurunなどでDVBデバイスとして設定することで無料視聴可能なチャンネルが見れるようになる。
以降のMirakurunの設定などもCATVデジタルチューナーT230を使う - にゃののん日記を参考にさせてもらったので、必要な方はそちらへ。
後書き的なもの
とりあえず使えるようにしたものの、すでに地デジアニメ録画用のチューナーが2台あるのでいまいち持て余してる。
ごにょごにょして有料チャンネルも見れたりするらしいがRaspberryPiのスペック的にあんまりエンコードデコードかますのにはちょっと非力で現状PX-S1UD-1と合わせて地デジとBSの無料配信の録画機でおさまってます。