Pocket SDRすごい(設定ファイル有効活用編)
はじめに
東京海洋大学の高須知二先生が公開されているオープンソースのソフトウェア無線Pocket SDRは、試験信号を含めたあらゆる測位衛星電波を受信できます。その電波受信ハードウェアとして、
- 2つのフロントエンド(FE)チップからなる2チャネル版
FE2CH
、 - 4チャネル版
FE4CH
、 - 8チャネル版
FE8CH
、 - 電波到来方向推定のための
SPIDER
があります。
測位衛星は、周波数の異なる複数信号を同時に放送します。Pocket SDRでは、用途に適した設定ファイルを選択することで、この電波収録を制御できます。そこで、最新のPocket SDR ver.0.14(ハッシュ値f9826b6
)のconf
ディレクトリにある設定ファイルをまとめます。
設定のトレードオフ
測位衛星が利用者向けに放送する電波は、インドのNavICの例外を除き、1.5 GHz帯(ハイバンド)と、1.2 GHz帯(ローバンド)に大別されます。複数周波数帯を使うのは、受信機にて、電離層遅延量推定により測位精度を高められるようにするためです。具体的な衛星信号ごとの周波数や帯域幅は、Pocket SDRのdoc
ディレクトリのsignal_bands.pdf
にまとめられています。
一方、信号収録パラメータとしては、
- 中心周波数
- 帯域幅
- 同期検波出力の同相(in-phase)と直交(quadrature)の両方を収録するか(
IQ
)、片側のみを収録するか(I
) - 標本化周波数
- Iのみ収録のときの帯域幅
があります。
例えば、ハイバンドの1575.42 MHzを4 MHz帯域幅にて電波受信すれば、GPSをはじめとする、多くの衛星信号をまとめてキャッチできます。
例えば、さらにBeiDou B1I
信号も受信したければ、受信帯域幅を拡げることも考えられます。しかし、帯域幅を拡げると、チャネル雑音電力が増加し、収録ファイルサイズも大きくなります。ファイルサイズは標本化周波数に比例するからです。帯域幅や標本化周波数は、あらかじめ用意された候補から選択されます。
また、収録周波数を信号周波数からオフセットさせると、回路不整合や回り込みなどで生じる、直流バイアスと呼ばれる劣化を緩和できます。このときにI
のみの収録にし、IQ
収録と比較して、ファイルサイズを半分にするテクニックも広く用いられます。しかし、そのためには、帯域幅を拡げ、標本化周波数をより高く設定しなければなりません。
複数周波数帯の同時受信による測位精度向上のため、標本化周波数は、すべてのチャネル間で共通です。Pocket SDRハードウェアでは、チャネル1に設定した標本化周波数が他チャネルのそれに反映されます。ローバンド信号収録の帯域幅はハイバンド信号収録の帯域幅よりも広くなりがちなので、ハイバンドの信号収録においてファイルサイズの無駄が生じることがあります。
また、FE2CH
では、チャネル1がハイバンドに、チャネル2がローバンドに固定されています。FE4CH
やFE8CH
では、チャネルごとに中心周波数を自由に設定できます。
したがって、利用可能な最も上位ハードウェア向けの設定ファイルを利用することが、効率的データ収録の点で、好ましい言えます。
C言語版の最新Pocket SDRアプリケーションpocket_dump
とpocket_trk
では、収録ファイル(拡張子はbin
)とともに、収録日時やパラメータを記録するタグファイル(拡張子はtag
)が作られます。信号追尾アプリケーションpocket_trk
では、このタグファイルが読み込まれ、収録パラメータが自動設定されます。
また、新しいPocket SDRアプリケーションで追加されたRawモード収録では、複数チャネルを単一ファイルにまとめて収録できます。通常は、チャネルごとに収録ファイルが生成されます。pocket_trk
では、与えた追尾信号名から、Rawモード収録ファイル内のチャネルが自動設定されます。一方、Rawモード収録では、gzip
による収録ファイル圧縮効果が小さく、また、Python版のアプリケーションではRawモード収録ファイルを扱えないようです。
タグファイル仕様やRawモード収録フォーマットについては、doc
ディレクトリにあるcommand_ref.pdf
にまとめられています
FE2CH向け設定
Pocket SDRのconf
ディレクトリにあるFE2CH
向けの設定ファイルをまとめます。設定ファイル拡張子conf
を省略します。ファイル名末尾には、標本化周波数が記述されています。中心周波数や帯域幅はメガヘルツ単位で表記し、小数点以下を四捨五入しています。
configuration name | hardware | frequency [MHz] (bw [MHz], mode) |
---|---|---|
pocket_B1IB2I_12MHz | FE2CH | 1561 (4, IQ), 1207 (4, IQ) |
pocket_B1IB3I_24MHz | FE2CH | 1561 (4, IQ), 1269 (16, IQ) |
pocket_default | FE2CH | 1569 (4, I), 1176 (23, IQ) |
pocket_E1E5b_24MHz | FE2CH | 1575 (4, IQ), 1207 (16, IQ) |
pocket_G1G2_12MHz | FE2CH | 1602 (9, IQ), 1246 (9, IQ) |
pocket_G1G3_24MHz | FE2CH | 1602 (9, IQ), 1202 (16, IQ) |
pocket_G1OCG2OC_12MHz | FE2CH | 1601 (4, IQ), 1248 (4, IQ) |
pocket_G1OCG3OC_24MHz | FE2CH | 1601 (4, IQ), 1202 (16, IQ) |
pocket_L1L2_4MHz | FE2CH | 1575 (3, IQ), 1228 (3, IQ) |
pocket_L1L2_6MHz | FE2CH | 1575 (4, IQ), 1228 (4, IQ) |
pocket_L1L2_8MHz | FE2CH | 1573 (3, I), 1226 (3, I) |
pocket_L1L5_20MHz | FE2CH | 1575 (16, IQ), 1176 (16, IQ) |
pocket_L1L5_24MHz | FE2CH | 1575 (4, IQ), 1176 (16, IQ) |
pocket_L1L5_32MHz | FE2CH | 1575 (16, IQ), 1176 (16, IQ) |
pocket_L1L5_40MHz | FE2CH | 1575 (23, IQ), 1176 (23, IQ) |
pocket_L1L6_12MHz | FE2CH | 1572 (4, I), 1279 (9, IQ) |
pocket_L1L6_16MHz | FE2CH | 1571 (4, I), 1279 (9, IQ) |
pocket_L1L6_24MHz | FE2CH | 1575 (4, IQ), 1279 (9, IQ) |
データ収録のテーマを決めて、それに適した設定ファイルを選びます。
異なる標本化周波数のpocket_L1L2
シリーズやpocket_L1L5
シリーズの設定ファイルは、標本化周波数を4 MHzから48 MHzまで変化させた時の特性検証用のものだと思います。標本化周波数は、必要な信号を受信できる範囲で最小限のものでも良いように思います。
みちびきのCLASやMADOCA-PPP高精度測位補強信号や、GalileoのHAS高精度測位補強信号を受信するためには、pocket_L1L6
シリーズの設定ファイルを利用します。
BeiDouを利用するときにはpocket_B1IB2I_12MHz.conf
やpocket_B1IB3I_24MHz.conf
を、GLONASSを利用するときにはpocket_G
シリーズの設定ファイルを利用します。
FE4CH向け設定
FE4CH
向けの設定ファイルでは、例えば、ハイバンドに1チャネル、ローバンドに3チャネルのフロントエンド割り当てが可能です。
configuration name | hardware | frequency [MHz] (bw [MHz], mode) |
---|---|---|
pocket_ALL_48MHz | FE4CH | 1588 (36, IQ), 1237 (36, IQ), 1191 (36, IQ), 1273 (36, IQ) |
pocket_L1G1L2G2_24MHz | FE4CH | 1568 (23, IQ), 1602 (9, IQ), 1228 (4, IQ), 1246 (9, IQ) |
pocket_L1G1L5E5b_16MHz | FE4CH | 1568 (16, IQ), 1602 (9, IQ), 1176 (16, IQ), 1207 (16, IQ) |
pocket_L1G1L5E5b_24MHz | FE4CH | 1568 (23, IQ), 1602 (9, IQ), 1176 (16, IQ), 1207 (16, IQ) |
pocket_L1G1L5E6_24MHz | FE4CH | 1568 (23, IQ), 1602 (9, IQ), 1176 (16, IQ), 1279 (16, IQ) |
pocket_L1G1L5L6_16MHz | FE4CH | 1568 (16, IQ), 1602 (9, IQ), 1176 (16, IQ), 1279 (16, IQ) |
pocket_L1L2L5E5b_24MHz | FE4CH | 1568 (16, IQ), 1228 (4, IQ), 1176 (16, IQ), 1207 (16, IQ) |
pocket_L1L2L5L6_24MHz | FE4CH | 1568 (16, IQ), 1228 (4, IQ), 1176 (16, IQ), 1279 (16, IQ) |
pocket_L5E5bB3L6_24MHz | FE4CH | 1176 (16, IQ), 1207 (16, IQ), 1269 (16, IQ), 1279 (9, IQ) |
広帯域受信と高速標本化により、すべての信号収録を目指す設定pocket_ALL_48MHz.conf
もあります。標本化周波数が16 MHzまたは24 MHzでは、
- ローバンドでGLONASS G2信号受信設定
pocket_L1G1L2G2_24MHz.conf
- ローバンドでのGalileo E5b信号受信設定
pocket_L1G1L5E5b
シリーズ - ローバンドでのみちびきL6信号とGalileo E6信号受信設定
pocket_L1G1L5L6_16MHz.conf
Pocket_L1G1L5E6_24MHz.conf
(L6信号とE6信号は、同一設定にて利用可能です) - 4チャネルすべてのローバンドへの割り当て設定
pocket_L5E5bB3L6_24MHz.conf
もあります。
私は、
- みちびきCLASとMADOCA-PPP(L6信号)やGalileo HAS(E6信号)に興味があり、
- GPSやみちびきのL1信号やL5信号も利用したいので、
- GPSやみちびきのL2信号をあきらめて、
pocket_L1G1L5L6_16MHz.conf
を中心に利用しようと思っています。
FE8CH向け設定
FE8CH
では、さらに自由に収録モードを設定できます。GalileoのE5b信号とE6信号の両方を同時収録できます!ただし、Rawモード収録であっても、FE8CH
はFE4CH
の2倍の収録ファイルサイズを要します。また、チャネルに余裕がありますので、ハイバンドに複数チャネルを割り当てる設定も可能です。
configuration name | hardware | frequency [MHz] (bw [MHz], mode) |
---|---|---|
pocket_L1B1G1L2G2L5E5bL6_16MHz | FE8CH | 1575 (16, IQ), 1561 (16, IQ), 1602 (9, IQ), 1228 (16, IQ), 1246 (9, IQ), 1176 (16, IQ), 1207 (16, IQ), 1273 (16, IQ) |
pocket_L1B1G1L2G2L5E5bL6_24MHz | FE8CH | 1575 (4, IQ), 1561 (4, IQ), 1602 (9, IQ), 1228 (4, IQ), 1246 (9, IQ), 1176 (16, IQ), 1207 (16, IQ), 1274 (16, IQ) |
pocket_L1G1L2G2L5E5bB3L6_16MHz | FE8CH | 1568 (16, IQ), 1602 (9, IQ), 1228 (4, IQ), 1246 (9, IQ), 1176 (16, IQ), 1207 (16, IQ), 1269 (16, IQ), 1279 (9, IQ) |
pocket_L1G1L2G2L5E5bB3L6_24MHz | FE8CH | 1568 (23, IQ), 1602 (9, IQ), 1228 (4, IQ), 1246 (9, IQ), 1176 (16, IQ), 1207 (16, IQ), 1269 (16, IQ), 1279 (9, IQ) |
私は、pocket_L1B1G1L2G2L5E5bL6_16MHz.conf
の利用のために、FE8CH
が欲しくなりました。この設定、いいですね。高須先生が公開されているFE8CH
収録データについても、収録ファイル名やタグファイル内容から、この設定ファイルを利用されたと推測しています。
SPIDER向け設定
一方、SPIDER
は到来方向推定用ハードウェアです。利用可能な8チャネルすべてで中心周波数を同一のハイバンドに設定しています。
configuration name | hardware | frequency [MHz] (bw [MHz], mode) |
---|---|---|
pocket_L1_8CH_12MHz | SPIDER | 1572 (4, I), 1572 (4, I), 1572 (4, I), 1572 (4, I), 1572 (4, I), 1572 (4, I), 1572 (4, I), 1572 (4, I) |
pocket_L1_8CH_16MHz | SPIDER | 1571 (4, I), 1571 (4, I), 1571 (4, I), 1571 (4, I), 1571 (4, I), 1571 (4, I), 1571 (4, I), 1571 (4, I) |
pocket_L1_8CH_24MHz | SPIDER | 1569 (4, IQ), 1569 (4, IQ), 1569 (4, IQ), 1569 (4, IQ), 1569 (4, IQ), 1569 (4, IQ), 1569 (4, IQ), 1569 (4, IQ) |
おわりに
Pocket SDRの設定ファイルを確認しました。
pocket_dump
アプリケーションだけでなく、pocket_trk
アプリケーションでも、-c
オプションにて設定ファイルを指定できます。C言語版pocket_trk
の-raw
オプションを用いると、収録ファイルとともにタグファイルも出力されます。
今後は、例えばFE4CH
では、次のようにデータ確認しながら、データ収録しようと思います。楽しくなってきました。
pocket_trk -c pocket_L1G1L5L6_16MHz.conf -prn 1-32,194-200 -sig L1CB -prn 205 -raw 20250430-031300.bin
関連記事
- Pocket SDR収録データ 25th April 2025
- SmartCom 2024(アーヘン)と6GEM(バッファトベルク) 13th November 2024
- Pocket SDRすごい(リアルタイム測位機能) 13th October 2024
- Pocket SDRを用いたGalileo E6B信号の受信 27th January 2023
- リフローでやらかしました 19th January 2023
- Pocket SDRハードウェア製作(第3報) 30th September 2022
- Pocket SDRハードウェア製作(第2報) 14th September 2022
- Pocket SDRハードウェア製作(第1報) 4th September 2022
- PocketSDRすごい(パーツ購入編) 9th April 2022
- PocketSDR APにてbladeRFを使いたい(その2) 16th March 2022
- PocketSDR APにてbladeRFを使いたい 5th March 2022
- PocketSDRすごい(スナップショット測位編) 23rd February 2022
- PocketSDRすごい(FFTWによる高速化) 19th February 2022
- PocketSDRすごい(L6信号デコード編) 19th January 2022
- PocketSDRすごい(pocket_trk編) 28th December 2021
- PocketSDRすごい(pocket_acq編) 4th December 2021