Number of GPS fixes Vs. number of users
Hi John,
Yesterday I noticed that my main public KiWi only had four good GPS fixes, whilst my non-public KiWi had 12 good fixes, even though both KiWi's were being fed from the same passive GPS splitter, and both were running in 4ch mode.
After some experimentation I found that this was due to the number of users on the public KiWi, and that if I kicked them all off so that both KiWi's had zero users, they both continued to have 12 good fixes for most of the time.
I'm aware that this has been discussed before, but I don't remember previously having seen my public KiWi with so few good fixes when it has been fully occupied.
I wondered if anything had changed, perhaps due to the new Kalman filter ?
Regards,
Martin - G8JNJ
Yesterday I noticed that my main public KiWi only had four good GPS fixes, whilst my non-public KiWi had 12 good fixes, even though both KiWi's were being fed from the same passive GPS splitter, and both were running in 4ch mode.
After some experimentation I found that this was due to the number of users on the public KiWi, and that if I kicked them all off so that both KiWi's had zero users, they both continued to have 12 good fixes for most of the time.
I'm aware that this has been discussed before, but I don't remember previously having seen my public KiWi with so few good fixes when it has been fully occupied.
I wondered if anything had changed, perhaps due to the new Kalman filter ?
Regards,
Martin - G8JNJ
Comments
You're right that this has been discussed before, but I'll recap. There are two phases to begin processing a new sat: acquisition and then tracking once the sat is acquired. The acquisition process is very compute intensive on the Beagle. It requires a large FFT, the code of which is uninterruptible (running for many milliseconds). That has big consequences for the realtime requirements of the Kiwi. With many users connected running a large FFT, unless carefully scheduled, could cause the users to experience broken audio. Tracking is not a problem because that is done mostly in the FPGA with dedicated hardware for each GPS channel.
So there is some code to strategically decide when to do acquisitions.
The variables are:
Did the Kiwi just boot and has never had a solution? (hence no frequency calibration of the SDR part of the Kiwi)
How many users are currently connected? (external users, not internal e.g. WSPR-autorun connections)
Are there more than 4 "good" sats currently? (the minimum number required for new solutions, although this has now changed because the Kalman filter can give solutions using fewer good sats)
Is the "always acquire" switch set on the GPS admin page?
The strategy is:
1) If there have never been any solutions at all (Kiwi startup) then always acquire no matter how many connected users until there are enough solutions for the first few Kiwi oscillator corrections to occur. This is so that any large initial frequency offset due to room temperature can be removed.
2) If the "always acquire" switch is set to "yes" then always acquire no matter what.
3) If there are not too many external users (currently means fewer than two users) then always acquire.
4) If there are not enough sats to potentially generate new solutions (i.e. less than 5) then acquire.
So, what does all this mean? If you have two Kiwis connected to the same GPS antenna and one is full of users and the other is empty then the following can happen. They'll both begin acquiring sats, but the Kiwi with users will stop acquiring when the above conditions are met and just maintain roughly the minimum number of sats required for new solutions. If the users don't connect immediately then both Kiwis will load up to the same number of channels possible (e.g. all 12), but then the Kiwi with users will slowly drop down to the minimum described above as sats go out-of-range and are dropped. This is of course because the acquisition process is not running as frequently as on the Kiwi with no users.
Or what you're seeing could just be a bug I need to fix! lol
For the GNSS timestamps and oscillator correction always the combined solution (GPS+Galileo) is used.