概要
Gemtek W1700K Wi-Fi 7ルーターを広帯域ソフトウェア定義受信機(SDR)へ変換する手法 MediaTek MT7996無線チップによる14ビットIQデータの高速キャプチャと10GbE経由のストリーミング 独自ファームウェアのみ利用、MediaTekコード不使用 Linuxホスト上でブラウザUIによるスペクトラム・ウォーターフォール表示 導入・運用方法、注意点、必要環境の解説
Gemtek W1700KをSDR受信機化する概要
- Gemtek W1700K Wi-Fi 7ルーター を 広帯域ソフトウェア定義受信機 (SDR)へ変換する技術
- MediaTek MT7996 無線チップで 14ビット複素IQデータ を最大320 Mspsで取得
- Airoha AN7581 SoC がデータを10 GbEでストリーミング
- Linuxホストで リアルタイムスペクトラム・ウォーターフォール 表示
- 受信機制御(LO、サンプルレート、ゲイン等)は ブラウザUI横のコントロールパネル から操作
機能詳細
- サンプリングレート
- 40, 80, 160, 320 Msps(14ビット複素IQ)
- バンド2では640/2(640 Mspsの半分間引き)も対応
- 対応バンド
- 2.4 GHz(MT7976)、5 GHz・6 GHz(各2基のMT7977)
- バンド切替はストリーム稼働中にレジスタ書き込みで即時切替
- チューニング
- チャンネル固定ではなく 任意の周波数 (LO)はバンドごとに任意Hzで設定可能
- LOの再設定はストリーム中でも約1msで完了
- フロントエンド制御
- AGCまたは手動LNA/ベースバンドゲイン
- アナログフィルタ20〜320 MHz
データ転送・ストリーミング
- SoC内DRAMの1GiBリングバッファ へDMA転送
- カーネルが8KiBごとにUDPデータグラムで10GbEポートへゼロコピー送信
- 320 Msps時にはリンク帯域確保のためサンプルペアを28ビットでパッキング(ロスレス自動処理)
- ホスト側で w1700k-stream がIQストリームを各プロセスに共有メモリで配信
- デシメーションロールオフ補正(flatten)もオプションで可能
- w1700k-spectrum で262,144ポイントFFTを100フレーム/秒でブラウザ表示
- sdr-recv でストリーム録音も可能
ファームウェア・ソフトウェア構成
- 完全自作ファームウェア (ROMパッチ、WM/WA)をMT7996上で実行
- MediaTek純正コード・ファームウェアは一切使用しない
- MediaTek初期化・キャリブレーション手順を解析し、独自に再現
- リポジトリ構成
- platform/:SoC用U-Boot、Linuxカーネル、BusyBox
- kernel/w1700k_sdr/:MT7996ドライバ、DMAリング、10GbEエクスポート等
- firmware/:MT7996用独自ファームウェア
- host/w1700k/:ホスト側制御・ファームウェアロード・ストリーミング・UI
- host/stream/:IQストリーム配信サービス
- host/spectrum/:スペクトラム・ウォーターフォールWebサーバ
- host/recv/:ストリーム録音
- init/:初期導入・アップデート・リカバリ
- include/hw/:MT7996/AN7581レジスタリファレンス
- docs/:アーキテクチャ、ロードマップ
導入手順・必要環境
- 必要機材
- W1700K本体
- 3.3V USBシリアルアダプタ(コンソール接続用)
- LAN3ポート接続用イーサネットケーブル
- 10GbE NICを搭載したLinuxホスト(WANポート直結、例:Intel X710+SFP+モジュール)
- ビルド・導入コマンド例
make:全ビルド(10分程度)make check:テストスイートsudo init/host/link up IFACE:LAN3ポート用IP設定sudo init/host/tftp-forward enable IFACEinit/install:NANDバックアップ・インストール・キャリブ保存sudo init/host/link up IFACE10G 10.77.0.10/24 9216:10GbEリンク設定host/stream/build/w1700k-stream &:ストリーム配信開始host/spectrum/build/w1700k-spectrum --controller "host/bin/w1700k serve" --listen 0.0.0.0:8073:Webサーバ起動- ブラウザで
http://HOST:8073/へアクセスし、▶ボタンで受信開始(初回はファームウェアロードに約2秒)
- CLI操作
host/bin/w1700k load|start|band|tune|gain|filter|stop|statusで各種制御
ビルド要件
- C/C++コンパイラ、make、git、Python 3.10+、Buildroot関連ツール
- clang、ld.lld、llvm-objcopy、llvm-readobj(RISC-Vファーム用)
- openssl(ファームウェア暗号化)、libfftw3-dev、zlib(ストリーム・スペクトラムサーバ用)
- ベンダーファームウェアは一切不要
注意事項・ライセンス
- 本ファームウェアは受信専用
- MediaTekの送信キャリブレーションは一切実行せず、MAC送信経路も無効化
- ただし、アンテナ端子を高感度機器へ直結する場合は必ずアッテネータ挿入を推奨
- ROMパッチはeFuseを書き換えない
- MediaTek純正ROMパッチ(2025年以降)はeFuseゲートビットを一度だけ書き込み、以後恒久的に残る
- 導入時はストックOSを完全に置換
init/installでNAND全体をバックアップ、復元には生NANDライタが必要(本リポジトリには含まず)
- 未公開レジスタアクセスはSoCハング・無線機能停止のリスク
- include/hw/で既知の危険アドレスを明記
- ライセンス
- MIT(Linuxドライバ・カーネルパッチはGPL-2.0、U-BootパッチはGPL-2.0+、一部BSD-3-Clause-Clear)
- 詳細はLICENSE参照