Unable to configure CUAV C-RTK 2HP

Hello, my issue is CUAV C-RTK 2HP configuration on CUAV X7+ FC getting 0 satellites.

This drone worked perfectly fine on PX4 but after refresh to Ardupilot I have this issue of No GPS

Ive followed the official CUAV and Ardupilot guide of setting parametres but nothing works.

What Ive tried so far:

  • followed official guides from CUAV and Ardupilot and setting parametres accordingly
  • the initial flash was getting 20 satellites BUT error was “GPS1 unhealthy”
  • then “EKF3 waiting for GPS params”
  • then “EKF3 mag diff too big”
  • I tried different GPS AUTOCONFIG params
  • Disabled compass (COMPASS_ENABLE=0, COMPASS_USE=0 on FC; COMPASS_ENABLE=0, COMPASS_DISBLMSK=1 on node)
  • Cleared DroneCAN DNA database (CAN_D1_UC_OPTION=4 → reboot → back to 0)
  • Tried EK3_SRC1_YAW = 2 (GPS only)
  • Re-flashed AP_Periph firmware on node multiple times via MP DroneCAN Update (latest stable .apj)
  • Connected module directly to PC via USB → UPrecise tool:
    • Confirmed “Moving Base mode”.

    • Enabled all constellations (GPS/BDS/GLONASS/Galileo/QZSS).

    • Set output rate 10 Hz.

    • Enabled NMEA (GGA/RMC) + Unicore (BESTNAV, GSVH, UNHEADING).

    • Saved config.

    • Saw satellites in UPrecise Sky View (SNR bars, flags for US/RU/CN).

Ive ditched all of this and re-flashed Ardupilot again - Re-flashed AP_Periph again and started fresh

Set up params as:
GPS_AUTOCONFIG 2
GPS1_TYPE 9
GPS1_MB_TYPE 1
GPS1_MB_OFS_X -0.24
GPS1_POS_X -0.12
HPS1_POS_Z -0.15
GPS1_DELAY_MS 100
EK3_SRC1_YAW = 2
FS_EKF_THRESH relaxed

Ive went outside for clear sky - connected - rebooted - waited for 5+ minutes and it does not work

My error is: EKF attitude bad

And zero satellites

How to resolve this issue please?

when the GPS1_DELAY_MS is set to 0 as default

errors are:
EKF3 waiting for GPS config
Yaw inconsistent 125deg

when the GPS1_DELAY_MS is set to 100 or 150 - those error disappear

Only the EKF attitude is bad - shown

Still the GPS unable to be configured, has someone came across this behavior please?

This is all self-induced, I’m sure.

Your initial GPS health issue likely stems from using GPS1_RATE_MS,100 instead of 200, per the documentation.

Blindly changing GPS1_DELAY_MS is foolish. Unless you can measure this meaningfully, leave it at the default of 0.

Beyond that, whatever you did in UPrecise may have caused the rest of the issues. Any of these modules I’ve used have worked right out of the box with no need for custom configuration. I’m not familiar enough with the UM982 and CUAV’s implementation to tell you how to reconfigure it to default. Suggest you contact CUAV for support instead of pinging me personally.

To those who may stumble upon this topic, 99.9% of users attempting to improve GNSS module configuration via UPrecise, u-Center, or similar make things worse. It’s almost always unnecessary and causes problems like this one. Let the autopilot firmware configure your module.

EDIT: The root cause appears to be misconfiguration, though we are still troubleshooting. My advice regarding low-level configuration changes at the module level remains valid, even if it turns out not to be causal here.

Sorry if messaging you directly was wrong - Ive found out other topics where you were trying to find solution of similar kind and thought im sending DM not pin

Unfortunately it did not configure upon following the official guides in the first place that’s why I got into searching for solution

I didn’t tweak the GPS1_RATE_MS in the initial setup - only found out that it now stops the messaging EKF3 waiting for GPS config and others - when set higher from the default which is 0 it disappears - I also tried to reflash to the 4.6.2. version firmware where default value is 200 - so even if not tweaked I would be facing two different values

the Uprecise setting is easily reversible by command FRESET - factory reset

But coming fresh and setting params as official guide doesn’t work

Could the firmware version selection help me somehow? - for instance in the 4.6.2. version in the Quick tab the yaw is shown correctly and even reacts to the drone being moved

GPS1_DELAY_MS probably has nothing to do with this, and I suspect it masks rather than fixes an issue.

GPS1_RATE_MS should be 200.

Reverting firmware version is unlikely to change anything. The NMEA driver has not materially changed in some time.

Reverting the module to factory defaults may not be the best course of action. Again, contact CUAV for THEIR default configuration.

While I have used this module with success, I have never altered its configuration from the as-delivered one. My expertise with deeper level settings is primarily with u-Blox modules and with GNSS operation in general.

@miko If you wish to set LOG_DISARMED,1 and share a .bin log, I can take a look. I don’t know that I will be able to find much if the issue is with the GNSS module config itself.

Thank you for having patience with me

I will share the LOG_DISARMED for you to have a look

In the meantime I did additional test of reflashing back to PX4 - went outside and everything works perfectly - 21 sats and 3D fix - Ready to fly - so the GPS module is working fine and the Uprecise FRESET didn’t harm it

This indeed is self inducted OR Ardupilot specific issue / bug - similar to maybe something is saved to the module from the PX4?

I will reflash now back to Ardupilot and set up the official CUAV / Ardu Params as such and provide LOG

Okay I have made a great advancements

FRESET factory reset 2HP in Uprecise
Reflashed to Ardupilot and calibrated sensors
I then proceeded to setting GPS params
Started with GPS1_TYPE. 9
Then waited very long time and it eventually got satelites and 3D fix
I then proceeded to set GPS_MB_TYPE. 1
My setup is Main antenna 1 in the back and slave in the front - they are 24cm apart and the main is 12cm back from the CG and both are 15cm above CG
So I set POS1_X. -0.12. POS1_Z -0.15 and MB1_OFS_X. -0.24

After the MB param set the gps disappeared again - Ive found the issue - So I tried tweaking the params and found out removing the = symbol from the POS1 X and OFS X

removing the minus symbol resolved the issue and now Im getting 21 sats and 3D fix - even tho the guide suggest negative numbers if the master is in the back NOT using it resulted in working GPS

The error EKF attitude bad remained and what’s new is upon powering on the error Gyros inconsistent appears once

I tried to calibrate gyro many times without luck to it disappear - I also tried FS_EKS_THRESH. Relaxed - but it doesn’t resolve the issue

Setting the params one by one and waiting long time before setting MB TYPE lead me into finding either the minus symbol was wrong or setting all at once was wrong

SO the GPS is now finally finally detected (almost having tears in eyes after a week of trying again and again reflashing) and resolved but the “EKF attitude bad” persist

Im attaching the LOG_DISARMED also here

1 Like

These results don’t make much sense. Those offsets SHOULD be configurable to both positive and negative values. In fact, to function properly, they MUST accept both. You’ve probably again masked some other underlying issue or uncovered an egregious bug. I’m leaning toward the former, as I don’t think we’ve had others report similar troubles.

I’ll try taking a look at the log a bit later.

Set SERIAL3_PROTOCOL and SERIAL4_PROTOCOL to -1. You are telling the autopilot to look for serial GPS modules, which is not helping.

If the moving base antenna is aft of CG, set GPS1_POS_X back to a negative value.

Set GPS_AUTO_CONFIG,2 to ensure Unicore config messages are sent for the DroneCAN module in use.

I think your EKF health may have more to do with IMU inconsistency than the GPS. Carefully do another accel calibration, and be sure not to move the autopilot/vehicle during the initialization sequence.

1 Like

Thank you so much for having look into the file and finding time for it!

You are right - in default there are GPS on SERIAL - Ive found those in the previous flash and not disabled -1 them in this one

In the meantime I did another tests and found out that if SRC1_YAW is set to GPS only = the error prearm messages disappear and it let me ARM and fly - but only in Stabilize mode - the PosHold mode giving “Need position estimate” messages and won’t ARM

With this info I then proceeded to recalibrate compasses and found out that it now won’t let me calibrate both of them at the same time (Internal and External which is in GPS) - the bar of progress only goes to half and then stops even when continuing the movement of calibration - but it did let me do both before and choose priorities of them.

So then I tried to calibrate only one compass and disable the other and going back to SRC1_YAW GPS with compass fallback - but had no luck with this method and messages came back with EKF attitude bad and even Check mag diff

I will do the steps as you suggest and will post results

Ive made a list of actions I made:

Reset params to firmware defaults + reboot

frame type set + reboot

set BRD_SAFETYENABLE to 0 - disabled
set SERIAL3_PROTOCOL and SERIAL4_PROTOCOL to -1 + reboot

radio calibration + reboot

set GPS1_TYPE to 9 (DroneCAN GPS)
set GPS_AUTO_CONFIG to 2
set EK3_SRC1_YAW to GPS with compass fallback + reboot

set GPS_MB_TYPE to 1 + reboot

set GPS1_MB_OFS_X to -0.24
set GPS_POS1_X to -0.12
set GPS_POS1_Z to -0.15 + reboot

ACCEL CALIBRATION very precisely done and said “successful” both compasses shown in the green zone best possible + reboot

COMPASS CALIBRATION also said “successful” here the external CAN compass shown slightly worse but still in the green zone + reboot

LEVEL HORIZON + reboot

GYRO CALIBRATION + reboot

In all of this calibrations I made sure to not move when it needed still position - also didn’t move the drone during reboot and made it always point to one direction - east

Went outside for clear sky - battery power on → connect radio → connect USB to qgc

3D lock in a few seconds and 23sats - arrow on the map pointing right direction - east

“EKF attitude bad” showed once then IMU aligned - only what’s left repeated is “Check mag field (xy diff:x 170>100)”

Wait 5 minutes - no change - only fluctuating around 170>100

Disconnect USB and batery and radio - wait 30 sec
reconnect battery - waited for double ringtone - connect radio and USB qgc

Wait 5 min . no change - “Check mag field (xy diff:x 170>100)” repeated

This is the closest I got to run this drone on Ardupilot I think so Im asking for solution to just this one last error before I try something on my own

From softest to hardest solutions what can I do? Relocate to very open field? Disable one of the compasses? Somehow relax the mag diff expectations?

Disable compasses. Share another log.

Disabled all compasses by parameterCOMPASS_ENABLE to0and also set SRC1 YAW to GPS only - to avoid “AHRS error source needs compasses”

It flies ! !

And even 100% smoother than on PX4 - didn’t even need to hit the autotune yet.

Thank you so much for resolving my issue - I was really lost

I am grateful that I was able to switch to Ardupilot and Im going to now implement the Lidar for height and MR72 radar for collision prevention.

But this issue is done I think - I don’t need compass use if I have heading from GPS right? even for AUTO mission mode?

Correct, assuming it is now reporting yaw.