Nowadays, I was trying to get IF signals of GNSS L1 band for my research. However, I always focused on application-specific front-end modules such as NordNav GPS L1 front-end receiver, etc. Then I collected a few IF signals and realized that the performance of the BDS B1C signal captured by the NordNav receiver is unsuitable due to the receiver’s limited bandwidth (<4 MHz).

Then I decided to make my own IF recorder using SDR technology. I already own HackRF One and have unboxed it after a lengthy period of time. Because I didn’t have an L1 antenna at home, I decided to demodulate FM radios as a demonstration to familiarize myself with the logic and procedures.

I discovered a tutorial for FM demodulation using the RTL-SDR, which is an excellent resource that should be highly recommended. It implements and describes the parameters and the theory in a simple way. I just record the signal via HackRF One instead of RTL-SDR. To do this;

  1. Install PothosSDR (for Windows users)
  2. Update HackRF firmware (My version: 2017.02.1)
  3. Be familiar with the “hackrf_transfer” command: Know to receive a signal, set the center frequency, and set the sampling rate. NOTE: To run it, go to the “bin” directory of PothosSDR (i.e. C:\Program Files\PothosSDR\bin). Run “cmd (Windows termibal)” here.
  4. Capture the signal.
  5. Use MATLAB steps as shown in the tutorial.
  6. Consult HackRF community (like me on Discord) (The tutorial would not have been possible without the help of “xaki23” and “straithe”)

As previously stated, my intention was to record the IF signal of GNSS L1 signals. As a practical matter, I attempted to capture an IF signal with an FM radio station. I selected 105.300 MHz since I want to catch it on a 1 MHz interferometric signal. As a logical consequence, I chose a central frequency of 105.300 – 1.000 = 104.300 MHz as the base. I also adjusted the sample rate to 4 MHz at the same time. In accordance with these settings, my output signal has a spectrum covering the frequency range of 102.300 to 106.300 MHz.

MATLAB would be used to process the data after it has been captured, as explained in the tutorial mentioned above.

Here is my signal captured with a HackRF One for FM radio. You can verify your MATLAB code with this one.

I’ll try to record GNSS signals using the same way in the next week, and report back to you how it goes!