Skip to content

About

TVTest BonDriver adapter for RTL-SDR ISDB-T one-seg

Resources

Stars

19 stars

Watchers

1 watching

Forks

Latest commit

 

History

15 Commits

Folders and files

Repository files navigation

BonDriver-RTLSDR

RTL-SDR(RTL2832U + FC0013)を使い、TVTestで地上デジタル放送のワンセグを視聴するためのWindows x64用BonDriverです。LT-DT306で動作を確認しています。アンテナとlibusb対応のUSBドライバーが必要です。GNU Radioや純正Windowsアプリは実行時に使いません。

USBから取得したI/Qを別プロセスのrtl_oneseg_helper.exeで復調し、共通コアから188バイトのMPEG-TSを出力します。USB処理を分離して、異常がTVTest本体に波及するのを抑えています。

対応環境

  • Windows x64版TVTest(TVTest 0.10.0で確認)。32ビット版には対応しません。
  • RTL2832U + FC0013のUSBチューナー。動作確認機はLT-DT306です。
  • チューナーに対応するlibusb系ドライバーと受信用アンテナ。
  • VCRUNTIME140.dllが見つからない場合は、Microsoft Visual C++再頒布可能パッケージのx64版が必要です。
  • 放送条件はISDB-T Mode 3、ガードインターバル1/8、QPSK、符号化率2/3、時間インターリーブI=4の中央1セグに対応します。その他の条件では受信できません。

ReleaseのZIPから使う

  1. ReleasesからWindows x64用ZIPを取得し、展開します。

  2. 次の4ファイルを同じフォルダーに置きます。TVTestの構成に合わせ、TVTest.exeがあるフォルダー、またはBonDriverを置くフォルダーを使ってください。BonDriver_RTLSDR.dllとrtl_oneseg_helper.exeは必ず同じフォルダーに置きます。

    BonDriver_RTLSDR.dll
    rtl_oneseg_helper.exe
    rtlsdr.dll
    libusb-1.0.dll
    
  3. ZIP内のBonDriver_RTLSDR.ini.exampleを同じフォルダーにコピーし、名前をBonDriver_RTLSDR.iniに変更します。[Source]のMode=Live、RtlSdrLibrary=rtlsdr.dllを確認します。依存DLLを別の場所に置く場合は、RtlSdrLibraryをWindows形式の絶対パスにしてください。

  4. チューナーとアンテナを接続し、TVTestでBonDriver_RTLSDR.dllを選択します。例: TVTest.exe /d BonDriver_RTLSDR.dll。

  5. TVTestのチャンネルスキャンでは、**「信号レベルを無視する」**を有効にします。選局後、復調開始まで数秒かかるため、スキャンの待ち時間を短くしすぎないでください。スキャン後はワンセグのサービスを選びます。SDTにフルセグのサービス名が現れても、このドライバーが出すのは中央1セグのTSです。

GetSignalLevel()は復調後の同期相関から計算した便宜的な品質指標です。表示単位がdBでも、校正済みのRF C/Nや受信電力ではありません。選局直後は0になります。

設定と制約

  • Mode=Liveが通常の実機受信です。Mode=Replayは録画済み中間データの開発用再生で、ViterbiFileとPhysicalChannelの指定が必要です。通常の視聴では変更しません。
  • 初期のチューナー利得はGainTenthsDb=58(5.8 dB)。物理ch13・15には7.1 dBとFC0013のIF利得レジスター0x0fを使い、その他はINIの利得と0x0aを使います。動作確認機の設定であり、受信条件によって調整が必要です。
  • チューナーは放送中心より600 kHz低く同調し、RTL2832U内のIF補正を適用します。この処理に必要な機能を持たない通常版rtlsdr.dllでは起動しません。Release ZIP内の修正版を使ってください。
  • USB受信と復調は約2.06秒の重複窓で処理します。共有コアはRS誤り訂正と、硬判定で復号できないときの限定的な軟判定を行い、部分受信TSにPATが無いときは補完します。選局直後の待ち時間とCPU負荷はハードウェアに依存します。
  • ユーザーのTVTest実視聴で全局の良好受信が報告されています。長時間の無ドロップ性能はまだ定量測定していません。

ソースからビルドする

Visual StudioのMSVC x64、CMake、Ninjaを使用します。TVTestはMSVCのC++ RTTIでBonDriverを判定するため、BonDriver DLLをMinGWでビルドするとクラッシュすることがあります。共通コアのチェックアウトをONESEG_CORE_DIRに指定します。

cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DONESEG_CORE_DIR=C:\src\rtl-sdr-oneseg-core
cmake --build build

加えて、osmocom rtl-sdrのコミット797f8143266d983c56d8f35d2d442527529dd8a5にFC0013/ISDB-T用パッチを適用し、MSVC x64とlibusbでrtlsdr.dllをビルドします。libusb-1.0.dllも必要です。パッチはRTL2832U初期化、デジタルIF補正、FC0013 IF利得設定のエクスポートを追加します。

ライセンス・参照

修正版rtl-sdrは上流のGPL-2.0に従います。配布ZIPにはrtl-sdrとlibusbのライセンス文書を同梱します。共通コアとこのBonDriverのソースは上記リポジトリとReleaseのソース一式を参照してください。

About

TVTest BonDriver adapter for RTL-SDR ISDB-T one-seg

Resources

Stars

19 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages