MyGica T230Aでトラモジ受信してみた

# 前書き的なもの

自宅のアパートだと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](https://github.com/pego149/linux/commit/b890047329dde74ab9271e4212f228b8c309bed9)

### 2021/12/06 追記

新しく書き直した記事の方でラズパイの最新カーネルにパッチを当ててT230Aに対応させる方法を新しく追記し書き直しました。

[MyGica T230AでMirakurun&EPGStation環境構築 - Qiita](https://qiita.com/yosiaki/items/be5c9a4e76a18116c713)

# MyGica T230Aの購入

現在入手できるのはAliexpressのみ。

[Aliexpress - Dvb-t2 geniatech mygica usb tvチューナースティックT230A DVB-C dvb-t hdテレビロシア、タイコロンビアヨーロッパWin10アンドロイドos](https://ja.aliexpress.com/item/1883597971.html?spm=a2g0s.9042311.0.0.304b4c4ddMiQ4M)

公式の物はこれのみでお値段￥2,531-(送料無料)

2021年4月12日現在では注文から2週間で届いた。

# 届いたMyGica T230Aをとりあえず挿してみる

Aliexpressのレビューが最近のもの(主に2019年中頃以降)は低評価が多く怪しいなと不安に煽られていたが、やはり無理だった。

USBデバイスとして認識するものの、DVBデバイスとして認識しておらずドライバーが必要。

で、探してきて以下のサイトにドライバ一式があった。

[MyGica -　Support](https://www.mygica.com/support/)

が、このドライバー不具合があるまま公式が放置で使用不可らしい...

```bash:lsusb&#x20;dmesg
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?](https://github.com/tbsdtv/linux_media/issues/224)

LibreELECのForumにも質問発見。

[LibreELEC - MyGica T230A](https://forum.libreelec.tv/thread/23142-mygica-t230a/?pageNo=1)

どうやら今までのT230, T230Cなどと違いGPIOが変わっておりDriverを使いまわすことができないらしいが、有志がとりあえず動くWindows用Driverを解析しLinuxのDriver Module用にPatchを用意してくれた模様。

[Github - crazycat69 / linux_media - media: dvb-usb-v2/dvbsky: Mygica T230A support.](https://github.com/crazycat69/linux_media/commit/e1ef47d604775c550a8f0d1bda276c113f882c9b)

RaspberryPiのkernelベースの物も見つけた

[Github - pego149 / linux - Added Geniatech MyGica T230C2_LITE and T230A](https://github.com/pego149/linux/commit/b890047329dde74ab9271e4212f228b8c309bed9)

今回の環境はRaspberryPi 4なのでこちらを利用させてもらう。

# GithubからKernelを落としてDriverをBuild & Install

まずは更新してから必要なものをインストール

```bash:apt&#x20;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バージョンと同じようだが不安な方はマスターブランチを一応確認するといいかも。

```bash:git&#x20;clone
$ git clone --depth=1 https://github.com/pego149/linux
```

RaspberryPiのドキュメントを参考にKernelをビルドする

[Kernel building - Raspberry Pi Documentation](https://www.raspberrypi.org/documentation/linux/kernel/building.md)

↓ 以下RaspberryPi 4向け手順

gitから落としたソースディレクトリに入ってビルド設定

最近のkernelのMakefileでは3行目の「make bcm2711_defconfig」で必要なconfigファイルが生成されるらしい。

```bash:Build&#x20;Configuration&#x20;Set(Raspberry&#x20;Pi&#x20;4)
$ cd linux
$ KERNEL=kernel7l
$ make bcm2711_defconfig
```
Kernelをmakeでビルドする(RaspberryPi4で1時間半くらい)

```bash:make&#x20;Build
$ make -j4 zImage modules dtbs
```

Driver Moduleのインストール

```bash:Module&#x20;Install
$ 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
```

ついでに必要なファームウェアも入れる

```bash:Firmware&#x20;Install
$ 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が使えるようになる。

```bash:ls&#x20;/dev/dvb
$ ls /dev/dvb
adapter0
```

モジュールだけインストールして再起動後にエラー吐くならKernelのバージョン違いや不足物等あるので以下の通りにKernel丸ごとインストール。

問題ないなら飛ばして次へ

```bash:Kernel&#x20;Install(Raspberry&#x20;Pi&#x20;4)
$ 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」となる。

```bash:Install&#x20;dvb-tools&#x20;&&#x20;dvbv5-scan
$ 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を使う - にゃののん日記](https://nyanonon.hatenablog.com/entry/20200820/1597932000_1)からスクリプトごと借用。

```bash:Install&#x20;dvb-tools&#x20;&&#x20;dvbv5-scan
$ 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を使う - にゃののん日記](https://nyanonon.hatenablog.com/entry/20200820/1597932000_1)を参考にさせてもらったので、必要な方はそちらへ。

# 後書き的なもの

とりあえず使えるようにしたものの、すでに地デジアニメ録画用のチューナーが2台あるのでいまいち持て余してる。

ごにょごにょして有料チャンネルも見れたりするらしいがRaspberryPiのスペック的にあんまりエンコードデコードかますのにはちょっと非力で現状PX-S1UD-1と合わせて地デジとBSの無料配信の録画機でおさまってます。