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 6 days ago
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 6 days ago
website banner