UM982 isn't providing heading data

We bought H-RTK Unicore UM982 (Dual Antenna) from Holybro a few months ago to use in our UAV.

Purpose of using UM982:
The purpose of buying this item was to fix the YAW problem (UAV not turning in Mission flight) which was due to the higher amount of EMF around the GPS module (M8N) and the Pixhawk 4.

UAV Setup details:

GPS Module: H-RTK Unicore UM982 (Dual Antenna)
AutoPilot: Pixhawk 6C (GPS port 1)
Firmware: PX4 (1.14.0 stable)
Antennas Configuration: Primary Antenna (Nose), Secondary Antenna (Tail) (distance among both is almost 50cm)

We followed all the installation instructions on the PX4 and Holybro UM982 websites.


  • We aren’t getting the data of the heading. Moreover, we are losing the GPS position data as well.

  • Our UAV shows it’s in position flight mode, but the logs show the position data is missing during the flight (Position mode).

  • We tried to do a mission flight, but it immediately went to Altitude mode because of no global position. Here (flightreview) is the log of that flight.

Verification of Heading Data on Uprecise application:
To verify the heading data from the UM982, we connect the UM982 directly with laptop using the USB C type cable and installed the Uprecise application.

Upon checking the heading information from the “Messages” tab under the “NMEA” section, we found out that the “HDT” & “TRA” are disabled and no heading data is available in the “VTG” tab also.

We checked the configurations under the “Receiver Configurations - Message configuration” and found out that all “NMEA Message” protocols are unchecked.

Upon enabling all options under the “NMEA Message” and HEADING/HEADING2 options under “Unicore Message”, we found out that now heading information is appearing in the “Message - VTG”. After seeing the data of heading in “Message - VTG”, we connected the UM982 with Pixhawk as told above, but still the heading data isn’t available in the mavlink inspector section.

We then again connected the UM982 with laptop via USB C cable, and found out that the “Message - VTG” is again not showing the data.

Upon disconnecting and connecting the UM982 again to laptop after saving the “NMEA Message”, the heading data goes away. (Maybe an EPROM issue)

Tried solutions?
1- We reset the UM982 module using the Uprecise application and the instructions from the Holybro documentation. But the result is same.
2- Tried the command UNIHEADINGA COM1 0.2 in Uprecise. But still the result is same.
3- Tried the following commands, but the solution is still not working.

GPGGA COM1 0.2  
config com1 230400

All the detailed snapshots are attached with this post.
Please do let us know if you need more information.

One comment on “heading: nan”. This is because the heading field is always immediately set back to nan after a value is published. So when you do gps status, it’s likely nan.

This means that heading should still work even if you see NaN there.

Now, do you have a flight log, or just a log outside where it logs GPS data? If so, please upload it with and share the link here, and I’ll take a look.

Yes, I do have the logs.

Here are the links of flight logs we carried with the installation of UM982.

Log # 1 - Mission flight:

Log # 2 - Position flight:

Log # 3 - Position flight:

Right, I don’t see any heading information in the log. :thinking:

Can you try building from latest release/1.14 branch (not tag) which includes this [BACKPORT v1.14] gps: update submodule by julianoes · Pull Request #22019 · PX4/PX4-Autopilot · GitHub.

So it would be something like:

git switch release/1.14
git pull
git submodule update --init --recursive

And then clean build and flash.

I created the new build from the branch that you gave.
Performed a flight from that build and the log is given below.


I didn’t feel any difference in the performance, but actually, the behavior was aggressive.

Thanks for testing. I still don’t see it.

I will have to test this next week.

Ok, I’m trying to reproduce this.

I have flashed latest release/1.14 branch (not the v1.14.0 tag).

And I see this:

    heading: nan
    heading_offset: 0.00000
    heading_accuracy: 0.01496

So heading is nan because it gets overwritten after publishing with NaN each time, however, heading_accuracy is set and tells me it’s working.

And actually, in one of your screenshots above I can see it working as well!

I did a quick test flight and you can see that the heading accuracy is logged but heading itself is not. (I will create a pull request to fix logging of heading for the future.)

You can also see that heading is used in the estimator though.

I will also try to test again in a couple of days hopefully, but what about the test I had done with my drone?

Log # 1 - Mission flight:

It just rejected the Mission flight mode from the arming and went to Altitude mode.

But it’s in position mode?

Sorry, sent the wrong log.
Here is the correct log link:

We gave a mission and the drone immediately switched to the “Altitude” mode.
Message is visible in the Log messages.

I had a look at the log and I see estimator_status.filter_fault_flags go from 0 to 65536. This means bit 16 is set which is:

# 16 - true if bad vertical accelerometer data has been detected