tsukumijima/ISDBScanner

DVBドライバでPT3を利用した際、ISDB-Sチューナーが認識されない

Closed this issue · 2 comments

環境

Debian 12 + Linux Kernel標準ドライバ(earth_pt3)

root@476e394dee7e:/tmp# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
root@476e394dee7e:/tmp#
root@476e394dee7e:/tmp# ls /dev/dvb/adapter*/frontend*
/dev/dvb/adapter0/frontend0  /dev/dvb/adapter1/frontend0  /dev/dvb/adapter2/frontend0  /dev/dvb/adapter3/frontend0
root@476e394dee7e:/tmp#
root@476e394dee7e:/tmp# grep pt3 /proc/modules
earth_pt3 28672 3 - Live 0xffffffffc042f000
dvb_core 151552 2 tc90522,earth_pt3, Live 0xffffffffc09da000
root@476e394dee7e:/tmp#

再現方法

最新のmasterブランチを取得し --list-tuners を引数として実行するのみです。
ISDB-T チューナーは正常に認識するものの、ISDB-S チューナーが認識されていません。

root@476e394dee7e:/tmp# git clone https://github.com/tsukumijima/ISDBScanner
Cloning into 'ISDBScanner'...
remote: Enumerating objects: 581, done.
remote: Counting objects: 100% (16/16), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 581 (delta 5), reused 12 (delta 4), pack-reused 565
Receiving objects: 100% (581/581), 178.81 KiB | 4.06 MiB/s, done.
Resolving deltas: 100% (390/390), done.
root@476e394dee7e:/tmp# cd ISDBScanner/
root@476e394dee7e:/tmp/ISDBScanner# python3 -m isdb_scanner --list-tuners
================================================================ ISDBScanner version 1.1.2 ================================================================
Available ISDB-T tuners:
  [V4L-DVB] Earthsoft PT3 (Terrestrial) #1 (/dev/dvb/adapter1/frontend0) (Busy)
  [V4L-DVB] Earthsoft PT3 (Terrestrial) #2 (/dev/dvb/adapter3/frontend0) (Busy)
===========================================================================================================================================================
Available ISDB-S tuners:
===========================================================================================================================================================
Available ISDB-T/ISDB-S multi tuners:
===========================================================================================================================================================
root@476e394dee7e:/tmp/ISDBScanner#

不具合原因

https://github.com/tsukumijima/ISDBScanner/blob/master/isdb_scanner/tuner.py#L734

device_infosは直前のforループで利用されているので、device_infos_groupedを元に DVB デバイスのリストを作って返す必要があるように見受けられました。

参考までに、return直前のdevice_infos_groupedの値は下記の通りでした

{
    'Earthsoft PT3 (Satellite)': [
        DVBDeviceInfo(device_path=PosixPath('/dev/dvb/adapter0/frontend0'), tuner_type='ISDB-S', tuner_name='Earthsoft PT3 (Satellite) #1'),
        DVBDeviceInfo(device_path=PosixPath('/dev/dvb/adapter2/frontend0'), tuner_type='ISDB-S', tuner_name='Earthsoft PT3 (Satellite) #2')
    ],
    'Earthsoft PT3 (Terrestrial)': [
        DVBDeviceInfo(device_path=PosixPath('/dev/dvb/adapter1/frontend0'), tuner_type='ISDB-T', tuner_name='Earthsoft PT3 (Terrestrial) #1'),
        DVBDeviceInfo(device_path=PosixPath('/dev/dvb/adapter3/frontend0'), tuner_type='ISDB-T', tuner_name='Earthsoft PT3 (Terrestrial) #2')
    ]
}

修正案

root@476e394dee7e:/tmp/ISDBScanner# git diff
diff --git a/isdb_scanner/tuner.py b/isdb_scanner/tuner.py
index c3866c9..cf02c24 100644
--- a/isdb_scanner/tuner.py
+++ b/isdb_scanner/tuner.py
@@ -731,6 +731,11 @@ class ISDBTuner:
             for i, device_info in enumerate(device_infos):
                 device_info.tuner_name += f' #{i + 1}'

+        # suffix 付与後の DVB デバイスをリストで返却
+        device_infos: list[DVBDeviceInfo] = []
+        for device_info in device_infos_grouped.values():
+            device_infos.extend(device_info)
+
         return device_infos


root@476e394dee7e:/tmp/ISDBScanner#
root@476e394dee7e:/tmp/ISDBScanner# python3 -m isdb_scanner --list-tuners
================================================================ ISDBScanner version 1.1.2 ================================================================
Available ISDB-T tuners:
  [V4L-DVB] Earthsoft PT3 (Terrestrial) #1 (/dev/dvb/adapter1/frontend0) (Busy)
  [V4L-DVB] Earthsoft PT3 (Terrestrial) #2 (/dev/dvb/adapter3/frontend0)
===========================================================================================================================================================
Available ISDB-S tuners:
  [V4L-DVB] Earthsoft PT3 (Satellite) #1 (/dev/dvb/adapter0/frontend0)
  [V4L-DVB] Earthsoft PT3 (Satellite) #2 (/dev/dvb/adapter2/frontend0)
===========================================================================================================================================================
Available ISDB-T/ISDB-S multi tuners:
===========================================================================================================================================================
root@476e394dee7e:/tmp/ISDBScanner#

実は手元に DVB ドライバ対応のチューナーが MyGica VT20 1つしかなく、特に PT3 など ISDB-S 対応 DVB チューナーでは動作確認ができていない状態でして、報告いただけて大変助かりました…!ありがとうございます!🙏🙏

上記問題に関してはおそらく b8cbb18 にて修正されているかと思います。
ただ上記の通り検証環境が手元にないため、ぜひ動作検証いただけると助かります。

もし DVB チューナー関連で他にも問題がありましたら、お気軽に報告いただけますと幸いです。

早速の修正ありがとうございました!問題なく動作することを確認しました。

KonomiTV含めいつも便利に使わせていただいており感謝しております。
もし不具合を見つけた際は報告させていただきます。