Pre-Arm message - GPS 1 Failing configuration checks

After a few flights today without this issue, I started getting this pre-arm notification:

GPS 1 Failing configuration checks

Since this message came up before arming, I changed my log parameter to log before arming.

The message would clear by itself - in about a minute or two. I’ve looked through the logs to try to find out what this message is indicating - and everything related to the GPS looks normal to me.

I saw the earlier threads that mention this error message - but nothing seems to apply to my situation.

Maybe someone who is knowledgeable of how to look at the source code can take a look to find out what happens to make this message occur. That would be a great help! Thank you!

Everything was definitely up and running by about 5 seconds before the GPS unit started returning data.
Maybe just unplug and replug the connector, and try
GPS_GNSS_MODE,7 or 67
whichever gives you lowest most reliable HDOP.

It also doesnt hurt to set
BRD_BOOT_DELAY,3000
to allow everything to settle before the flight controller boots up. I do this with all flight controllers now even if they dont have CAN devices, since sometimes just plugging in the battery would cause a bit of craziness.

I guess I’m looking at this a little differently.

I’ve used this exact configuration for a long time - a couple of years. So when all of a sudden a new message pops up, I think it’s important to know why.

Every message generated by ArduPilot is issued because of some condition that has occurred. If one could simply read the code, it would be easy enough to simply look at the condition statements that triggered the message.

But I’m one of those people who don’t read the code. And I suspect I’m in the majority of the ArduPilot users. If the ability to read the code is a requirement for successful ArduPilot usage - the user base will be much smaller.

What’s needed is an error message directory - a listing of all the ArduPilot error messages, and the reasons that the software issues each message. Then the messages could be used effectively for diagnostic purposes.

Strategies such as setting a boot delay might reduce the occurrence of some messages - but in the end, it’s still going to be necessary to know what triggered a message.

Another example just this week was the Data_Autotune_Reached_Limit message. There’s simply no information in the wiki to let a user know if this is a critical message of some sort - or something benign, as it was in the instance that it occurred to me this week. Thanks to the effort @Yuri_Rage made on my behalf, I found that the message was benign.

Without such a directory of messages, three things can happen:

  1. Messages are ignored that should prompt a corrective action.
  2. The kind people like you, Dave and Yuri have to take time out of your busy day to look up what’s the cause of the message.
  3. Users who don’t make the effort to find someone to help them end up needlessly chasing down the problem - and may never find the cause. This can cause people to give up on ArduPilot - and that’s not good for any of us.

Obviously this is a sentiment that needs to be expressed to a different forum - perhaps some DEV forum that considers such things. And as no one gets paid for writing ArduPilot code - there’s not much incentive to make the effort.

One remedy might be to make a rule enforced by the DEVs that no error message can be written into the code unless it’s causes are added to the message “directory.” This isn’t really any different than requiring new code functions be documented in the wiki.

I started working with software back in 1978. This is not a new thing. You wouldn’t believe the volumes of paper IBM published to handle this sort of thing on an OS/360.

OK - I’ll get off my soapbox now. Thank you for allowing me to share my thoughts about this. And I really appreciate all that people like @xfacta @dkemxr and @Yuri_Rage who make the effort to dig into what happens when such undocumented messages pop up.

Thank you!

1 Like

I agree. In this case it seems the GPS unit wasnt responding.
That’s why I suggest unplugging and plugging its cable. Time and vibrations can affect the contact reliability.
Maybe a good opportunity to check all connectors.

Looking through the code, Ardupilot seems to be able to try sending the config a couple of times, and this message comes from Ardupilot indicating it couldnt read the same settings back from the GPS that were sent:

  • PreArm: GPS 1 failing configuration checks

and the details in this message come from the GPS unit itself:

  • GPS 1: u-blox solution rate configuration 0x10208

probably indicating it wasnt happy about complying with the update rate or similar. I couldnt find that ublox error listed anywhere (in a short amount of time).

The GPS unit was having a bad day, or maybe it was too busy receiving a new almanac or something - unsure.
So apart from checking the connectors, GPS_GNSS_MODE,7 or 67 is possibly going to help the situation since selecting only 2 constellations prevents that GPS unit from being overwhelmed by large numbers if satellites, and this definitely affects the update rate.
The default of GPS_GNSS_MODE,0 means “use every constellation you can see in the sky” and can be counter-productive.

It might be unrealistic to have a table of such errors and causes, since they will be different for each GNSS manufacturer and possibly between models.
Also it would be relatively rare, and then we could go looking if the usual reboots and connector checks didnt work.

Here’s an update -

I set the boot delay to 10000 (10 seconds) - and still got no help.

I used u-Center to reset the gps to default parameters. It properly locked on to 32 satellites (four constellations and SBAS) - even indoors.

I checked the gpa.delta in the log - and it was receiving messages properly at 200 ms (5hz).

About the only thing I can think of is if the F9P firmware somehow got corrupted. Before re-flashing it, I put the issue out on the u-Blox forum - maybe someone there can identify the message the F9P returns and propose a solution.

https://portal.u-blox.com/s/question/0D52p0000DudmCiCQI/ardupilot-prearm-checks-failing-f9p-configuration-check

One comment on the uBlox support portal suggested that I look at this ArduPilot bug that was fixed a while back:

It seems vaguely related - so I decided to go ahead and update my firmware to 4.4 to see if anything changed.

Indeed - there are now new messages:

ublox

Now it appears that AdruPilot simply issues an informational message that it’s waiting for the GPS to finish it’s configuration.

I never used to have any of these issues - so I’m wondering if either my GPS (f9p) firmware needs to be re-flashed - or there’s something odd going on in my Orange Cube as it communicates with the GPS over the serial port.

I would go with the F9P update, since Ardupilot doesn’t try to do anything special or tricky with the GNSS unit → only asks it to set documented parameters.
Like I mentioned before Ardupilot makes a couple of attempts, the config is read back from the GNSS to see if it worked (and didnt in your case) and some portion of the messages you see come from the GNSS unit itself.

1 Like

Hey @xfacta and the team,
Issue emerged to one of my friend bird, can someone have.a look on this please, attached below are Logs
11 1-1-1980 3-00-00 AM.bin (676 KB)

Message: PreArm: GPS2 Still configuring this GPS

Some images


The Here3 is a CAN GPS, but in that file it doesn’t look like the GPS has been properly configured. Configuration instructions are in the link below:

Thanks @Allister for your reply
It seems like my guy bird has only one GPS as a hardware but in mind it has been set to receive information from two GPS that is why it keep saying that message.
See the param
GPS_TYPE 9.000000
GPS_TYPE2 9.000000

Do you think this might be the issue before I can ask him to proceed with that config?

First, you are using Copter 4.2.1, which is now years old. Update to 4.5.1.

You have SERIAL3_PROTOCOL and SERIAL4_PROTOCOL both set to GPS. They should be -1 (disabled).

You have GPS_TYPE=1 and GPS_TYPE2=0, however:

GPS_TYPE=9 is the correct value. Leave GPS_TYPE2=0.

Set up the CAN port according to the documentation linked above.

1 Like

Thanks @Yuri_Rage
Will advice him and will share back the outcome for the rest of the community to benefit from.

Action:

  1. Update fw to very latest ver
  2. SERIAL3_PROTOCOL and SERIAL4_PROTOCOL should be set to -1
  3. Leave GPS_TYPE=9 and set GPS_TYPE2=0
  4. Set verify if CAN port are still set according to documentation linked above by @Allister

You need to set GPS_TYPE=9. It is currently not.
The CAN port is also not configured correctly, and the instructions above are clear.

1 Like

You can delete that mess. It literally shows exactly what I described above, as evidenced by your already provided .bin log.

2 Likes