Dual GPS status holds to last best value

We have a working dual GPS set up with a Pixhawk 1 (well, a Chinese made one labeled 2.4.8) and Mission Planner. We have the M8N GPS/compass module feeding into SERIAL3 and our own RTK GPS solution feeding NMEA messages to SERIAL4. GPS_AUTO_SWITCH is set to “UseBest”.

Set up works, except for one interesting quirk.

When I force a “failure”, where SERIAL4 no longer gets any data, Mission Planner holds the GPS status it had for the second GPS. So if we reached “rtk Fixed”, MP continues to display “rtk Fixed”.

The interesting quirk is that the Pixhawk is well aware that it is not getting any data on SERIAL4 and properly switches over to the SERIAL3 feed. However, the GPS status displayed in the HUD remains at “rtk Fixed” instead of changing to “3D dgps”.

If I cut the MAVLink connection and re-establish it, Mission Planner will start to display the correct status message.

Using the Quick display to show values for “Gps Status”, “Gps Status2”, “Sat Count”, and “Sat Count2”, their displayed values are consistent with the quirk I just described above. Once we stop getting any updates for the second GPS, Mission Planner holds on to the last values it received.

It feels like a refresh issue, but I can’t seem to find a parameter or preference setting that will clear that value.

I’m using Mission Planner 1.3.68 build 1.3.7105.26478. I have a feeling this will be true of any ArduPilot firmware, but the above quirk was noticed with ArduCopter 3.6.9.

Could anyone provide pointers to where we can have Mission Planner clear the GPS data when no new data is received? Thank you.

@kanker When you disconnect the serial link and no data comes in we deallocate the parser and go back to searching for a valid GPS input/reconfigure it. The assumption is the device experienced a reset. Unfortunately we don’t send data about the second GPS to the GCS if it isn’t around. The issue describing this is here: https://github.com/ArduPilot/ardupilot/issues/2697 The correct fix in ArduPilot is to keep sending the status on the second GPS once it’s been detected the first time.

I figured this was not a new issue, but I was unsuccessful in finding that thread in GitHub. I will follow up over there for thoughts on the ArduPilot side, but from the Mission Planner side…

Does this mean that the GPS status shown in the heads-up display is calculated “locally” by Mission Planner, given whatever information it believes it has from the telemetry feed? I’m guessing that this is the case, given behavior we’ve seen. If that is the case, a time-out feature in Mission Planner could be a possible solution for some (not all). We know the update rate, so some multiple of that could be used to zero out the GPS data if no new data is received. This in now way address situations where the telemetry may be flakey, but that’s something the end-user should be dealing with anyway.

I can see the concern with forcing ArduPilot send “zero value” messages all the time. And, internal to ArduPilot, it seems to be aware that it doesn’t have the second GPS anymore, so this is more of a quirk when trying to monitor/troubleshoot the rover or drone.

Anyway, thank you for the pointing out the other thread that directly answers the question. Now it’s the search for an appropriate solution. :slight_smile: