Awesome Pocket SDR (Effective use of configuration files)
Introduction
The open source software radio [Pocket SDR] (https://github.com/tomojitakasu/PocketSDR) released by Professor Tomoji Takasu of Tokyo University of Marine Science and Technology can receive all positioning satellite signals, including test signals. The radio wave receiving hardware includes:
- 2-channel version
FE2CH
consisting of two front-end (FE) chips, - 4-channel version
FE4CH
, - 8-channel version
FE8CH
, and SPIDER
for radio wave arrival direction estimation.
Positioning satellites simultaneously broadcast multiple signals at different frequencies. With Pocket SDR, you can control the recording of these signals by selecting a configuration file suitable for your application. Here we summarize the configuration files in the conf
directory of the latest Pocket SDR ver.0.14 (hash value f9826b6
).
Configuration Trade-Offs
With the exception of NavIC in India, the radio waves that positioning satellites broadcast to users are broadly divided into the 1.5 GHz band (high band) and the 1.2 GHz band (low band). The reason for using multiple frequency bands is to improve positioning accuracy by estimating the amount of ionospheric delay at the receiver. The specific frequencies and bandwidths for each satellite signal are summarized in signal_bands.pdf
in the doc
directory of Pocket SDR.
On the other hand, the signal recording parameters are:
- Center frequency
- Bandwidth
- Whether to record both the in-phase and quadrature of the synchronous detection output (
IQ
) or only one side (I
) - Sampling frequency
- Bandwidth when only
I
is recorded
For example, by receiving the high-band 1575.42 MHz radio waves with a 4 MHz bandwidth, you can catch many satellite signals, including GPS, all at once.
For example, if you want to receive the BeiDou B1I
signal, you can expand the reception bandwidth. However, expanding the bandwidth increases the channel noise power and the recording file size. This is because the file size is proportional to the sampling frequency. The bandwidth and sampling frequency are selected from predefined candidates.
In addition, by offsetting the recording frequency from the signal frequency, degradation called DC bias caused by circuit mismatch and sneak interference can be mitigated. In this case, a technique is widely used to record only I
, which halves the file size compared to IQ
recording. However, to do this, the bandwidth must be expanded and the sampling frequency must be set higher.
To improve positioning accuracy by receiving multiple frequency bands simultaneously, the sampling frequency is common between all channels. In Pocket SDR hardware, the sampling frequency set for channel 1 is reflected in the other channels. The bandwidth of low-band signal recording tends to be wider than that of high-band signal recording, so the file size may be wasted in the high-band signal recording.
In addition, in FE2CH
, channel 1 is fixed to the high band and channel 2 is fixed to the low band. In FE4CH
and FE8CH
, the center frequency can be freely set for each channel.
Therefore, for efficient data acquisition, it is recommended to use the configuration file for the highest end hardware available.
The latest Pocket SDR applications pocket_dump
and pocket_trk
written in C create a tag file (with the extension tag
) that records the recording date and time and parameters along with the recording file (with the extension bin
). The signal tracking application pocket_trk
reads this tag file and automatically sets the recording parameters.
In addition, the new Pocket SDR application’s Raw mode recording allows multiple channels to be recorded together in a single file. Normally, a recording file is generated for each channel. With pocket_trk
, the channel in the Raw mode recording file is automatically set from the tracking signal name you provide. On the other hand, in Raw mode recording, the effect of compressing the recording file using gzip
is small, and the Python version of the application does not seem to be able to handle Raw mode recording files.
The tag file specifications and the Raw mode recording format are summarized in command_ref.pdf
in the doc
directory.
Configuration for FE2CH
Here is a summary of the configuration files for FE2CH
in the Pocket SDR conf
directory. The configuration file extension conf
is omitted. The sampling frequency is written at the end of the file name. The center frequency and bandwidth are written in megahertz and rounded to the nearest integer.
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) |
Decide on the theme of your data recording and choose a configuration file that suits it.
The configuration files for the pocket_L1L2
series and pocket_L1L5
series, which have different sampling frequencies, are intended to verify the characteristics when the sampling frequency is changed from 4 MHz to 48 MHz. I think it’s fine to use the minimum sampling frequency that can receive the required signal.
To receive QZSS’s CLAS and MADOCA-PPP high-precision positioning augmentation signals, or Galileo’s HAS high-precision positioning augmentation signals, use the pocket_L1L6
series configuration files.
When using BeiDou, use pocket_B1IB2I_12MHz.conf
or pocket_B1IB3I_24MHz.conf
, and when using GLONASS, use the pocket_G
series configuration files.
Configuration for FE4CH
The configuration file for FE4CH
allows, for example, a front-end allocation of 1 channel to the high band and 3 channels to the low band.
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) |
There is also a setting pocket_ALL_48MHz.conf
that aims to record all signals by wideband reception and high-speed sampling. For sampling frequencies of 16 MHz or 24 MHz, there are:
- Low band GLONASS G2 signal reception setting
pocket_L1G1L2G2_24MHz.conf
- Low band Galileo E5b signal reception setting
pocket_L1G1L5E5b
series - Low band QZSS L6 signal and Galileo E6 signal reception setting
pocket_L1G1L5L6_16MHz.conf
Pocket_L1G1L5E6_24MHz.conf
(L6 signal and E6 signal can be used with the same settings) - Allocating all 4 channels to the low band
pocket_L5E5bB3L6_24MHz.conf
I plan to mainly use pocket_L1G1L5L6_16MHz.conf
. The reasons are as follows:
- I am interested in QZSS CLAS and MADOCA-PPP (L6 signal) and Galileo HAS (E6 signal),
- I also want to use GPS and Michibiki’s L1 and L5 signals, and
- I have given up on GPS and Michibiki’s L2 signals.
Configuration for FE8CH
With FE8CH
, you can set the recording mode even more freely. You can record both Galileo E5b and E6 signals at the same time! However, even in Raw mode recording, FE8CH
requires twice the recording file size of FE4CH
. Also, since there is a margin of channel, it is possible to assign multiple channels to the high band.
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) |
I wanted to use FE8CH
to use pocket_L1B1G1L2G2L5E5bL6_16MHz.conf
. This setting is good. I guess that Prof. Takasu used this setting file for the FE8CH
recording data published from the recording file name and tag file contents.
Configuration for SPIDER
On the other hand, SPIDER
is a direction of arrival estimation hardware. The center frequency is set to the same high band for all 8 available channels.
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) |
Conclusion
I checked the Pocket SDR configuration file.
You can specify a configuration file with the -c
option not only with the pocket_dump
application but also with the pocket_trk
application. If you use the -raw
option with the C language version of pocket_trk
, a tag file will be output along with the recorded file.
In the future, for example with FE4CH
, I would like to record data while checking the data as follows.
pocket_trk -c pocket_L1G1L5L6_16MHz.conf -prn 1-32,194-200 -sig L1CB -prn 205 -raw 20250430-031300.bin
Related article(s):
- Pocket SDR captured data 25th April 2025
- Awesome Pocket SDR (realtime positioning function) 13th October 2024
- Galileo E6B signal reception with Pocket SDR, a open source software-defined radio 27th January 2023
- Failure in reflow soldering 19th January 2023
- Pocket SDR hardware production (part 3) 30th September 2022
- Pocket SDR hardware production (part 2) 14th September 2022
- Pocket SDR hardware production (part 1) 4th September 2022
- Awesome PocketSDR (order of hardware parts) 9th April 2022
- I want to use bladeRF with PocketSDR AP, part 2 16th March 2022
- I want to use bladeRF with PocketSDR AP 5th March 2022
- Awesome PocketSDR (snapshot positioning) 23rd February 2022
- Awesome PocketSDR (reducing processing time with FFTW) 19th February 2022
- Awesome PocketSDR (L6 band signal decode) 19th January 2022
- Awesome PocketSDR (pocket_trk) 28th December 2021
- Awesome PocketSDR(pocket_acq) 4th December 2021