"Unhealthy GPS signal" message while board arming, 3D-Fix with 10+ sats is stable

It looks like the “Unhealthy GPS Signal” string is coming from MissionPlanner, and is associated with “BadGPSHealth”.

I don’t know this code, but it looks like it’s coming from MissionPlanner/ExtLibs/ArduPilot/CurrentState.cs:

else if (!sensors_health.gps && sensors_enabled.gps && sensors_present.gps)
{
    messageHigh = Strings.BadGPSHealth;
}

That in turn looks like it’s coming from GCS_MAVLINK::send_sys_status() in Ardupilot, where control_sensors_health comes from a call to gcs().get_sensor_status_flags, which in turn calls GCS::update_sensor_status_flags(). That in turn seems to be running this check:

    if (gps.is_healthy() && gps.status() >= min_status_for_gps_healthy()) {
        control_sensors_health |= MAV_SYS_STATUS_SENSOR_GPS;
    }

In the screenshot near the beginning of the thread it’s reporting that it has a 3D fix, which means that it passes the min_status_for_gps_healthy() threshold, which seems to imply that gps.is_healthy() is failing. That in turn could be due to lost frames, frame rate below 5Hz, or other driver-specific things.

Sorry, but I got troubles with SD-card compatibility and so failed to write and download logs for analysis. Postpone checks to the next weekend - will take three SD-cards of different brands with me to avoid such a problem for sure next time.

Probably too many GNSS constalations are bringing the data rate bellow 5 Hz.
Try limiting the number of constellations in the GPS_GNSS_MODE parameter

This has fixed this kind of problem in other threads of this forum.

I know this thread and tried to go this way. Unfortunately issue stays in place without any changes.

Final result is a little bit confusing - after sd-card has been installed and initialized this annoying “Unhealthy GPS signal” message stopped to appear when arming. Here is the picture of GPA:deltas log showing that at arm/disarm data stream rate dropdown to 260ms when between this actions it is stable 200ms.

Arming runs a lot of checks, and that might increase the processor load and cause the data dropdown.
You could take a look at processor load as well.

What is the name of parameter which I have to look at?

Ardupilot have very bad threads management - if some thread break other - this is bad behaviour and for me - this is serious reason why im not using AP now.

What autopilot do you use that has better thread management?

Now im using betaflight and flying only in acro mode.
But if need auto modes - for me only ardupilot best choice for this. Inav very bad imho…
As im remember old versions AP dont have problems with gps health warnings, because im think dont have crossfire protocol which introduce some problems in AP.
Imho…

Do you mean that mentioned problems has been invoked just by CRSF protocol support introduction in AP or they takes place only if this protocol is used for communication between FC and RC receiver?

As I remember yes use of crsf - creates problems. But if you test AP well after 4.0.7 you will see that it started throwing internal errors when you download logs or when you calibrate compass or whatever…
This is just due to one thread interrupting another and not maintaining the exact time frame for each thread.
I had a copter crash from 150 meters once and the first time in all the use of the ardupilo just on version 4.1+ Perhaps due to some kind of internal error …
And that was enough for me. At the same time, this error did not exist on earlier versions 4.1+ - it somehow appeared later …

How do you think - is it safer to use simple PPM as a communication protocol between FC and RC-receiver instead of CRSF (thanks God it is supported still)?
To be honest I’m not interested in CHSF telemetry channel at all due to SiK modems usage and OSD telemetry projection, CHSF low latency benefit is also not relevant to long range planes.

Im think you can using all wat you want , but need testing - maybe for your configuration AP working good and without any problems.