プラットフォームハブ

GNU Radio

多くのSDR作業の出発点となる無償の信号処理フレームワーク。PythonまたはC++で書くフローグラフ、グラフィカルエディタ、主要な無線機向けのドライバを備え、書き直し版の4.0はリリース候補段階にあります。

組織GNU Radioプロジェクト。2026年10月1日に採択された憲章に基づく、LF Charities, Inc.(デラウェア州の非営利法人)の技術プロジェクト
ウェブサイトwww.gnuradio.org/
ライセンスGNU Radio 3.10はGPL-3.0-or-later。GNU Radio 4.0のコアリポジトリはMIT、StudioはGPL-3.0。VOLK 3.xはLGPL-3.0-or-later。radiocondaのインストーラコードはBSD-3-Clause
価格無償でダウンロード可能。有償エディションはなし
更新2026年11月15日

製品と提供内容 #

名称種類位置づけ
GNU Radio 3.10フレームワーク安定版のリリース系列。3.10.12.0は2025年2月20日公開。pybind11によるPythonバインディングを提供
GNU Radio 4.0フレームワーク複数リポジトリに分割されたC++23による書き直し版。4.0.0-RC3がプレリリースとして2026年9月22日に公開
GNU Radio Companionソフトウェアブロック図から実行可能なプログラムを生成するグラフィカルなフローグラフエディタ
VOLKライブラリGNU Radioのブロックが使うベクトル最適化カーネルライブラリ。v3.3.0は2026年2月8日リリース
radioconda
リリース2025.03.14。macOS版とWindows版のインストーラを提供
ソフトウェアGNU RadioにUHD・libiio・bladeRF・HackRF・Lime Suite・RTL-SDR・Airspyのドライバを同梱したcondaベースのインストーラ

どんな組織か

このハブは、無線のサンプルをコンピュータで処理するすべての人を対象としています。GNU Radioは、信号処理ブロックをつないでフローグラフを組み立てる無償のフレームワークです。UHD・libiio・SoapySDRを通じて、広く使われているSDRの大半と通信できます。2026年にはガバナンスが変わりました。プロジェクトは2026年10月1日に技術憲章を採択し、Linux Foundation系の非営利法人であるLF Charitiesのプロジェクトになりました。従来のGeneral Assemblyに代わり、Technical Steering Committeeが置かれています。2026年9月22日には、Linux FoundationがGNU RadioのOCUDU Ecosystem Foundationへの参加を発表しました。同財団は、srsRANから派生した5Gのコードもホストしています。GRCon26は2026年9月21日から24日までノースカロライナ州ローリーで開催され、ノースカロライナ州立大学のAERPAWが主催しました。

ツールとAPI

インストールするもの。 安定版の系列は3.10です。最新リリースの3.10.12.0は2025年2月20日に公開されました。READMEはバイナリパッケージを推奨しており、PyBOMBSはもう推奨しないとしています。Linuxディストリビューションにはパッケージがあります。macOSとWindowsで最も簡単なのはradiocondaです。GNU Radioにデバイスドライバと、gqrxやinspectrumなどのツールを同梱しており、macOS(ArmとIntel)とWindows向けのインストーラを提供しています。conda-forgeにも、Apple Silicon版macOS向けとWindows向けの3.10.12.0があります。Homebrewは3.10.12.0です。MacPortsは当サイトが確認した時点でまだ3.8.5.0だったため、避けてください。

本稿執筆時点のライセンス。 GNU Radio 3.10はGPL-3.0-or-laterです。GPLの義務はリンクするコードにも及ぶことがあるため、クローズドな製品を出荷する前に確認してください。4.0のコアリポジトリは、より制約の緩いMITライセンスです。VOLKはLGPL-3.0-or-laterです。

言語バインディング。 ブロックはC++で書かれ、pybind11を通じてPythonから使えます。pybind11は3.9でSWIGを置き換えました。フローグラフはGNU Radio Companion、素のPython、C++のいずれでも作れます。gr_modtoolはアウトオブツリーモジュールのひな形を生成し、CGRANにはサードパーティ製のモジュールが掲載されています。

対応する無線機。 3.10のソースツリーには、USRP向けのgr-uhd、ADALM-PlutoなどAnalog Devicesの無線機向けのgr-iio、SoapySDRモジュールを持つ機器向けのgr-soapyが含まれます。gr-soapyはHackRF One、RTL-SDRをはじめ多くの機器に対応します。gr-zeromqはプロセス間やマシン間でサンプルを受け渡します。NI・Ettusハブ、Analog Devicesハブ、オープンソースエコシステムハブも参照してください。

最初の確認。 次のヘッドレスなフローグラフは、無線機なしでオフライン実行できます。サンプルレート32 kHzで1 kHzの複素トーンを生成し、4096サンプルで停止して、スペクトラムのピークを確認します。GNU Radioの最初のレッスンではさらに先まで扱います。

# gnuradio
import numpy as np
from gnuradio import gr, blocks, analog

samp_rate = 32_000  # Hz
tb = gr.top_block()
tone = analog.sig_source_c(samp_rate, analog.GR_COS_WAVE, 1_000, 1.0, 0)
head = blocks.head(gr.sizeof_gr_complex, 4_096)
sink = blocks.vector_sink_c()
tb.connect(tone, head, sink)
tb.run()

x = np.array(sink.data(), dtype=np.complex64)
spectrum = np.abs(np.fft.fft(x))
peak_hz = np.fft.fftfreq(x.size, 1 / samp_rate)[np.argmax(spectrum)]
print(f"GNU Radio {gr.version()}: {x.size} samples, peak at {peak_hz:.0f} Hz")

当サイトの環境ではGNU Radio 3.10.12.0: 4096 samples, peak at 1000 Hzと表示されます。

つまずきやすい点。 システムのPythonと別途インストールしたGNU Radioを混在させると、importが失敗します。GNU Radioとそのドライバは一つの環境にまとめてください。GUIブロックにはQtが必要で、ヘッドレスサーバではインストールトラブルの原因になりがちです。

移行メモ

  • 3.10から4.0へ。 GNU Radio 4.0はアップグレードではなく書き直しです。C++23コンパイラ(GCC 14または最新のClang)が必要で、ビルドノートはCommand Line ToolsのApple Clangでは古すぎる場合があると警告しています。当サイトでは3.10からの移行ガイドを見つけられませんでした。4.0がリリース候補段階を抜けるまで、本番のフローグラフは3.10のままにしてください。
  • 3.8以前。 3.9でSWIGバインディングはpybind11に置き換えられました。3.8向けに書かれたアウトオブツリーモジュールには新しいバインディングが必要です。これは3.10のgr_modtoolで生成できます。
  • ファイル。 File Sinkはヘッダなしで生のサンプルを書き出します。サンプルレート・中心周波数・データ型をファイルと一緒に記録するか、SigMFを使ってください。IQの記録と読み込みを参照してください。
  • MATLABやNumPyから。 blocks.vector_source_cとblocks.vector_sink_cでNumPy配列をフローグラフに出し入れできるため、一つのブロックを参照スクリプトと突き合わせてテストできます。

注意点

  • リリースの頻度。 3.10は2025年2月以降リリースがなく、4.0はまだリリース候補です。どちらかの上に長期運用の製品を計画する前に、プロジェクトのニュースを確認してください。
  • GPL。 3.10のライセンスは、リンクするコードにも適用されます。これを基にしたクローズドな製品を配布する前に、法務チームに相談してください。
  • 古いインストール手順。 古いチュートリアルはPyBOMBSやMacPortsを案内しています。radioconda、conda-forge、またはディストリビューションのパッケージを優先してください。