SDRでGNSS信号を送る

LimeSDR XTRX / Mini 2.0 でGPS・QZSSのL1 C/Aを生成 — 受信機に「ちょうどいい」信号強度を設計する

⚠ 法律上の注意(必読): GNSS帯(L1など)の電波を空間に放射することは日本の電波法で禁止されています(免許は事実上取得不可。GPSリピータも国内では違法)。実験は必ず同軸ケーブル直結+十分な減衰器、またはシールドボックス内で行ってください。このページのシミュレーターはその「正しい減衰量」を設計するためのものです。

送信リンクバジェット — SDR出力から受信機入力まで

送信ボード:
送信出力(TXゲイン) −20 dBm
減衰器(アッテネータ) 60 dB

数値は教材用の目安(最大出力は周波数・設定・個体で変わる)。ケーブル・コネクタ損失として一律1dBを含む。実衛星の受信レベルは約−130dBm(dBと信号強度参照)。

周波数精度 — そのボードの信号を受信機は見つけられるか

−40 kHz受信機の捕捉サーチ範囲(±5kHz目安)+40 kHz

基準クロックの誤差(ppm)はそのまま搬送波周波数のズレになる: Δf = 1575.42MHz × ppm。受信機の捕捉サーチはドップラー±5kHz程度を想定しているので、これを大きく超えるとサーチ範囲拡大や周波数補正が必要になる(捕捉の2次元サーチ参照)。

ワークフロー — gps-sdr-simでL1 C/Aを作って再生する

定番の流れ: ① IGS等から航法データ(RINEXファイル brdc)を入手 → ② gps-sdr-sim -e brdcXXX.24n -l 35.68,139.77,50 -s 2600000 のように任意の位置・時刻を指定してI/Qファイルを生成 → ③ LimeSuite(limeplayer)やSoapySDRでSDRから再生。受信機には「東京駅にいる」ように見える信号が届きます。

QZSS(みちびき)はL1 C/AがGPS互換(PRN 193〜)なので、対応シミュレータでは同じ枠組みでQZSS衛星も生成できます。生成信号のサンプルレートは2.6Msps程度でC/A帯域(±1MHz)をカバーできます — LimeSDR Mini 2.0/XTRXなら余裕です。

用途は受信機の動作確認・タイムスタンプのテスト・耐妨害の研究など。他人の受信機を欺く行為(スプーフィング)は犯罪です。自分の装置に、閉じた経路で。

なぜ130dBも減衰させるのか — 「強すぎる信号」の何が悪いか

SDRの出力0dBmは、実衛星の−130dBmの10¹³倍(10兆倍)です。ケーブル直結でそのまま入れると: ①受信機のLNAやAGCが飽和して逆にまともに動かない、②漏れ電波ですら周囲の本物のGNSS受信を妨害する(カーナビ・スマホ・基地局の時刻同期まで!)、③最悪フロントエンドを壊す。だからTXゲインを絞った上で、固定減衰器(20dB/30dB品を直列に)で−120〜−135dBmまで落とすのが正しい作法です。

受信機側の見え方はC/N₀で確認します: 実衛星相当なら40dB-Hz台。50dB-Hz後半に張り付いていたら強すぎ。dBと信号強度のリンクバジェットと同じ考え方が、そのまま実験設計になります。

実務のコツ — ハマりどころ

DCブロック必須: GNSS受信機のアンテナ端子はアクティブアンテナ用に3〜5Vのバイアス電圧を出しています。SDRのTX端子に直結するとこの電圧が流れ込むので、DCブロック(数百円のコンデンサ内蔵コネクタ)を必ず挟むこと。

スマホのテストはシールドボックス: スマホは内蔵アンテナなのでケーブル直結ができません。合法にテストするなら電波暗箱(シールドボックス)内で微弱に放射します。

時刻に注意: 過去日時の信号を掴んだ受信機は時計が過去に飛びます。GNSS時刻同期している機器(PC、基地局系)を同じ受信系につながないこと。

受信で先に遊ぶのも手: 送信環境を作る前に、RTL-SDR+GNSS-SDRで本物のL1を受信・解読してみると、受信の流れの理解が一気に深まります。