汎用SDRでテレビを受信する――LibreYuriDTVの個人開発とシステム統合
汎用SDRとオープンソースソフトウェアを組み合わせ、Windowsから地上デジタル放送を受信・選局できるアプリケーション「LibreYuriDTV」を個人開発しています。
専用チューナーと受信ソフトの組み合わせへの依存を減らし、受信処理を自分で組み立て、途中の状態を確認しながら改良できる環境を目指しています。現在、自分の環境では、SDRで受信したISDB-Tのフルセグ放送をTVTestで映像・音声として再生できています。
この記事では、2026年9月14日時点のWindows+WSL2+TVTest構成をもとに、自分が開発した範囲と、システムをつなぐ際に重視した設計を紹介します。
目次
*受信中のコンソール。デバイスの接続先、復調の同期状態、放送データの出力状態を確認できるようにしています。*
受信から再生までを、役割の異なるソフトウェアでつなぐ
全体の流れは、アンテナから届いた信号をSDRで取り込み、PC側で放送データへ復調し、プレーヤーに渡す構成です。
アンテナ/CATVのISDB-Tパススルー信号
↓
ネットワーク接続のSDR
↓
WSL2:IQ取得・GNU Radio/gr-isdbtによる復調
↓
Windows側の連携処理・BonDriver
↓
TVTest:映像・音声の再生
デバイスとの接続には、ネットワーク経由でIIOデバイスへアクセスできるlibiioを利用しています。ISDB-Tの復調処理は、GNU Radio向けの上流プロジェクトgr-isdbtが担います。
私が開発しているのは、この復調処理をWindowsから扱うためのコントローラー、BonDriver、スキャンとサービスの取り込み、実行環境の構築・起動・停止、状態表示を含む統合部分です。映像・音声の再生には、別途用意したTVTestを使います。
既存の復調器を活用し、その前後にあるデバイス、実行環境、操作画面、プレーヤーを一つの受信経路として成立させることが、この開発の中心です。
重視した三つのこと
1. 設定上の候補と、実際に確認できた結果を分ける
受信設定では、アンテナかCATVかという入力方式に加えて、都道府県や送信所を選びます。ただし、地域の参照表に局が載っていても、その場所で実際に受信できるとは限りません。
そこで、地域設定は探索の出発点として使い、実際の受信結果とは分けて扱っています。スキャンも、まずRFの候補を探し、次に放送の制御情報やTS、含まれるサービスを確認する二段階にしています。
画面上に候補が表示されていることと、TVTestで選べるサービスとして確認できたことを混同しないための設計です。スキャン結果をプレーヤーへ取り込むまでを、受信準備の一連の処理として扱っています。
受信設定画面。地域の参照表は探索候補として使用し、受信の可否はスキャンで確認します。
2. 「映らない」を一つの状態にまとめない
受信経路が複数のソフトウェアにまたがると、最終的に映像が出ないという現象だけでは、どこを確認すべきか分かりません。
そのため、コンソールでは、デバイスからIQデータを取得できているか、OFDMの同期が成立しているか、TSという放送データが得られているかを分けて表示しています。さらに、コンスタレーションやMER・EVMなど、復調状態を確認するための表示も用意しています。
復調までは進んでいるのに再生できない場合と、そもそもデバイスからデータを取得できていない場合では、確認する範囲が異なります。**処理の途中を観察できることを、映像が出ることと同じように、アプリケーションの機能として扱っています。**
3. 環境構築と起動・停止までを開発範囲にする
復調処理が動くだけでは、Windowsから繰り返し使える受信環境にはなりません。必要な実行環境を準備し、受信処理を起動し、プレーヤーにつなぎ、終了時には受信を止めるところまで整える必要があります。
LibreYuriDTVでは、専用のUbuntu 24.04 WSL2環境を構築し、固定したソースコードからgr-isdbtをビルドする入口を用意しています。普段使うLinux環境とは分け、Windows側から対応する環境とTVTestのディレクトリを指定して利用する構成です。
受信とスキャンの操作条件も分けています。スキャンは受信を停止してTVTestを閉じた状態で行い、サービスの取り込み後に受信と再生を開始します。終了時も停止操作を行い、受信処理とRXの停止完了を確認します。
個々のコンポーネントを動かすことに加えて、**利用者がどの順序で操作し、そのときシステムがどの状態にあるべきか**まで整理することを重視しています。
今後の開発
現在は、自分の受信環境で、デバイスの指定、地域設定、スキャン、サービスの取り込み、TVTestでの選局・フルセグ再生までをつなげています。受信中は、同じコンソールから復調とTSの状態を確認できます。
主な評価機材は、Zynq+AD936xを搭載したLibreSDRです。ハードウェア対応はlibiio/ADI系RFデバイスを軸にしていますが、すべてのlibiioデバイスやファームウェアでの動作を確認したわけではありません。
今後は、受信処理の各段階の負荷を調べながら、一部の処理モジュールをFPGA側へ移す構成を検討します。これは今後のTODOであり、今回紹介したWSL2上の復調経路とは区別しています。さらに先の探索方向として、ISDB-Sへの展開も考えています。
研究と並行して取り組む、システムとして使える形への実装
研究では、機械学習・生成モデルを用いた時空間予測に取り組んでいます。それと並行して、アルゴリズムやライブラリを、入力から出力まで実際に使えるシステムへつなぐ開発にも取り組んでいます。
LibreYuriDTVでは、デバイスへの接続、異なるOS間の連携、実行状態の管理、結果の可視化を、一つのアプリケーションの中で扱いました。既存の技術を活用する部分と、自分で実装する部分を分け、その接続部分まで責任を持って作ることに関心があります。
今後も、AI・機械学習の研究開発を軸に、モデルだけでなく、それを支える実行環境や評価・可視化まで含めたソフトウェア開発に関わっていきたいと考えています。