RTCMV3 : MSM4 or MSM7 for optimal vertical accuracy

Need optimal vertical accuracy to do field leveling. GPS system is ardusimple rtk3pro x2 with xlr radio on base and lr radio on rover. I want best radio performance with best rtcm option to choose.

I am better with MSM4 messages for lower radio bandwith use or Im better with MSM7 messages to acheive the best vertical accuracy?


1 Like

MSM4 shouldn’t be close to overloading your radios so I think there’s no problem going with msm7. But the main issue is the base usually puts out a burst of data then nothing until the next burst. If we could somehow output a steady stream instead, it should be the most robust. I wonder if the base f9p uart2 baud could be set low, like 4800bps or 9600.

I did some testing, and if I want to keep my rtk age below 1.5sec, I must use MSM4 messages and disable beidou. Same settings on MSM7 rtk age goes up (2-3 sec)

I wonder if it’s the limit of xbee radios? Base is XLR at 1watt output and rover a LR

Or something else to tweak radio bandwith?

Disabling beidou result in 10 sats less

Are you range limited? Difficult to find specs for these radios but one document mentioned three different radio bps figures. The lowest rate does not seem sufficient for MSM7 and all constellations but the next one should be fine.

How are your messages scheduled? If you are sending basic messages every second and at times your latency increases by more than a second, you must be sending low frequency messages in groups. Try to spread them evenly. Did you also check that you do get all messages at the receiver end? 2 to 3 second latency should not be critical as long as you do receive all messages. Not sure but I believe the radio buffer is sufficient for all messages and you would see a much higher latency if the radio was not able to send all incoming messages.

If you need range and the radio is not fast enough, I’d consider keeping MSM7 and all constellations and transmitting RTK message every 2 seconds.

I use my rtk setup for field leveling, that’s why I need optimal vertical accuracy. On that case radio range isn’t important as the base is in the field (must be less than a mile).

Maybe my base and rover was too close one each other when I did those settings tests, I was about 50 feets one from each other.

Will try later with a larger distance

Does 2 seconds really affect the accuracy, especially with the base station right there in the field with you?

I’ve had some problems with the Digi SX modules. I think that the uart buffer in the module is too small and if you feed it too fast it will drop bytes sometimes, before it can encode and transmit them. I did the math and even with MSM7 messages and doing nearly all constellations, a uart baud rate of 57600 is more than enough to transmit them all in far less than half a second. And the over-the-air bandwidth is higher than that, so you’d think it would work, but I often lose bytes and get corrupted RTCMv3 packets on the rover. Very confusing. The over-the-air bandwidth is high enough that you can actually transmit each packet more than once for redundancy and have plenty of time to spare (my base is set to broadcast everything twice, in case a packet gets drown out with interference). So all I can think is that the corruption is coming from the uart. Quite frustrating, to say the least but in practice for my purposes I’ve never had any problems with RTK but my age is typically 2 seconds.

Have you tried setting the serial baud at 57600 or lower? Also, why bother sending everything twice when there’s a new update coming in a second or two?

Yes. I still had problems at 57600.

I agree there’s no point in broadcasting twice. I did that just in case it was over-the-air corruption I was seeing.

Maybe 2 sec rtk age is still ok, I was under the impression that it had to be 1.5 sec max. Im comparing with my main RTK kit that is JD SF6000 and this system is always at 1 sec rtk age.

I will get it a try with full MSM7 when rain will stop. (Looks like it will never LOL)

We did some test:

Basically disable correction → Age goes up (incrased the DGNSS timeout) then watched how the coordinates change.

I guess when the horizontal start to drift the vertical is also bad.

This was stationary and in the morning. Lower is better but not sure that you really need 0 sec.

Vertical accuracy is always half of what horizontal accuracy is. Definitely as age increases, accuracy decreases.

In your video the the test seemed to start at 20 seconds. You need to repeat the test at just 1, 3 or even 5 seconds to be meaningful in this case. My gut feeling is there will be no statistically significant difference between accuracy at up to 4 or 5 seconds of age. 0 seconds is simply not possible.

If everything was perfect, the best you could do would be probably 0.4 seconds. In practice my RTK age is always 1-2 seconds.


I wonder how horizontal & vertical accuracy would compare if you could use only sats on the horizon & overhead respectively.