Need help in debugging a Galileo sdr simulator

0 votes

Hi, I'm writing a Galileo sdr simulator for research.

My simulator generates a bin file with i/q data. The problem is that when I pass my generated file to gnss-sdr, (an open-source software gnss-reciever), it successfully tracks the generated signals, extracts the nav data and gets the expected 3D fix. But when I transmit my generated file to my u-blox M8 GNSS Evaluation-Kit it only tracks the right prns but doesn't succeed in extracting the nav data.

in the UBX->NAV->SAT->Qi my satellites only get 3. which means "signal detected but unusable" according to ublox manual.

I know of 2 issues with my simulator that I don't think are related to this problem.

1. I don't generate valid almanac data  - instead I send 0 bits. I don't think it's related because a fix can be achieved by using solely the ephemeris data + I expect that the receiver would extract the ephemeris or at least the time, and would not use the almanac.

2. I generate my i/q with sample rate of 4M samples, while the Galileo satellites generates the real signals in 24.552M samples. It means that I lose a lot of the E1 code in the resampling. but I don't think this is related because I generated my file with 12.276M samples (I don't have a RF front-end that can transmit in 24M, and in 12.276M data shouldn't be lost) and the behavior was the same. +  I recorded a real Galileo signal from the sky in 4M samples and when I transmit it to the ublox-reciever I get 3D fix.

so I have no idea where to look for the bug in my code.

I will really appreciate your help with this.

Thanks, David

by David Ramati asked Jan 10
0 votes
As the play-back model works I'd be suspicious that the anti-spoofing is sanity checking the data/sub-frames, and the data relationship to the carrier and modulation.

You might want to demodulate and then remodulate actual valid data, and observe if that is accepted.
by clive1 answered Jan 10
0 votes
u-blox firmware performs certain sanity checks of the almanac contents.

AFAIR it could successfully catch the forged sqrt(A) being out of range, where other GPS receivers crashed on sqrt(A)=0.
by helge answered Jan 10
website banner