Awesome Pocket SDR (Effective use of configuration files)

category: gnss
tags: pocketsdr sdr

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 namehardwarefrequency [MHz] (bw [MHz], mode)
pocket_B1IB2I_12MHzFE2CH1561 (4, IQ), 1207 (4, IQ)
pocket_B1IB3I_24MHzFE2CH1561 (4, IQ), 1269 (16, IQ)
pocket_defaultFE2CH1569 (4, I), 1176 (23, IQ)
pocket_E1E5b_24MHzFE2CH1575 (4, IQ), 1207 (16, IQ)
pocket_G1G2_12MHzFE2CH1602 (9, IQ), 1246 (9, IQ)
pocket_G1G3_24MHzFE2CH1602 (9, IQ), 1202 (16, IQ)
pocket_G1OCG2OC_12MHzFE2CH1601 (4, IQ), 1248 (4, IQ)
pocket_G1OCG3OC_24MHzFE2CH1601 (4, IQ), 1202 (16, IQ)
pocket_L1L2_4MHzFE2CH1575 (3, IQ), 1228 (3, IQ)
pocket_L1L2_6MHzFE2CH1575 (4, IQ), 1228 (4, IQ)
pocket_L1L2_8MHzFE2CH1573 (3, I), 1226 (3, I)
pocket_L1L5_20MHzFE2CH1575 (16, IQ), 1176 (16, IQ)
pocket_L1L5_24MHzFE2CH1575 (4, IQ), 1176 (16, IQ)
pocket_L1L5_32MHzFE2CH1575 (16, IQ), 1176 (16, IQ)
pocket_L1L5_40MHzFE2CH1575 (23, IQ), 1176 (23, IQ)
pocket_L1L6_12MHzFE2CH1572 (4, I), 1279 (9, IQ)
pocket_L1L6_16MHzFE2CH1571 (4, I), 1279 (9, IQ)
pocket_L1L6_24MHzFE2CH1575 (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 namehardwarefrequency [MHz] (bw [MHz], mode)
pocket_ALL_48MHzFE4CH1588 (36, IQ), 1237 (36, IQ), 1191 (36, IQ), 1273 (36, IQ)
pocket_L1G1L2G2_24MHzFE4CH1568 (23, IQ), 1602 (9, IQ), 1228 (4, IQ), 1246 (9, IQ)
pocket_L1G1L5E5b_16MHzFE4CH1568 (16, IQ), 1602 (9, IQ), 1176 (16, IQ), 1207 (16, IQ)
pocket_L1G1L5E5b_24MHzFE4CH1568 (23, IQ), 1602 (9, IQ), 1176 (16, IQ), 1207 (16, IQ)
pocket_L1G1L5E6_24MHzFE4CH1568 (23, IQ), 1602 (9, IQ), 1176 (16, IQ), 1279 (16, IQ)
pocket_L1G1L5L6_16MHzFE4CH1568 (16, IQ), 1602 (9, IQ), 1176 (16, IQ), 1279 (16, IQ)
pocket_L1L2L5E5b_24MHzFE4CH1568 (16, IQ), 1228 (4, IQ), 1176 (16, IQ), 1207 (16, IQ)
pocket_L1L2L5L6_24MHzFE4CH1568 (16, IQ), 1228 (4, IQ), 1176 (16, IQ), 1279 (16, IQ)
pocket_L5E5bB3L6_24MHzFE4CH1176 (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 namehardwarefrequency [MHz] (bw [MHz], mode)
pocket_L1B1G1L2G2L5E5bL6_16MHzFE8CH1575 (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_24MHzFE8CH1575 (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_16MHzFE8CH1568 (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_24MHzFE8CH1568 (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 namehardwarefrequency [MHz] (bw [MHz], mode)
pocket_L1_8CH_12MHzSPIDER1572 (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_16MHzSPIDER1571 (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_24MHzSPIDER1569 (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):