RTCM support in NEO-M8N or NEO-M8L

+1 vote

Hello, we are currently evaluating the use of RTCM corrections to increase accuracy of NEO-M8 GPS receivers in areas not covered by SBAS. However we are not able to get receiver to accept RTCM messages, inside monitor, they always fall into category USER3 (as seen in u-center).

I can also see that we are not the only one with an issue: https://forum.u-blox.com/index.php?qa=3367&qa_1=why-ublox-m8n-not-accepting-rtcm-messages-through-the-usb-port

Our RTCM messages comes either from NovAtel OEM615 base station or from verified NTRIP EGNOS servers. We tried pretty much everything - Receiver is in GPS only mode, SBAS is turned off, ports are configured to accept RTCM.

At this point, we ruled out pretty much any issue with configuration.

Has anyone had ever success in getting RTCM data into NEO-M8N/L receivers?

Edit:

We managed to get it working after all (atleast for NEO-M8N). The problem was that the guy working on it used Windows 10 and apparently faced this issue: https://forum.u-blox.com/index.php?qa=3619&qa_1=usb-serial-problem-with-multiple-gnss-receivers-windows-10 which caused messages sent to GPS receiver being malformed. Unfortunately, the NEO-M8L eval kit which we had got somehow damaged and we cannot test on it anymore. For future reference, we think that to get it to work on NEO-M8L, the ADR has to be disabled, though there is currently no datasheet available to support it.

by formatsh asked Jun 16, 2016
by formatsh edited Jul 11, 2016
2,654 views
Hello,formatsh.I meet the same question with you,at present .I tried to make a  Pseudorange DGPS with m8n. And I have put the RTCM23 data into the m8n,but I found that it did not work through reading NMEA-GGA, or UBX-MON-MSGPP ,or UBX-NAV-SVINFO in Ucenter software.Besides,I found no digital in category rtcm in ucenter. There is no symbol in category user in ucenter.So ,how do you solve the problem ?Can you tell me the approach? I would appreciate you very much .My email is 515417569@qq.com.Thans again.
0 votes

>>Has anyone had ever success in getting RTCM data into NEO-M8N/L receivers?

Yes, though I had an NEO-M8T to hand

$GNGGA,112132.00,4205.xxxxx,N,08832.xxxxx,W,2,11,0.84,276.3,M,-33.7,M,2.8,0218*51
Mequon,WI
RBn Antenna Location:	43 11.69 N, 088 03.59 W
REFSTA Ant Location (A):	43 11.632700 N, 088 03.571635 W
REFSTA Ant Location (B):	43 11.633031 N, 088 03.591775 W
REFSTA RTCM SC-104 ID (A):	218
REFSTA RTCM SC-104 ID (B):	219
Broadcast Site ID:	777
Transmission Frequency:	304 KHZ
Transmission Rate:	200 BPS
Signal Strength:	100uV at 230KM

by clive1 answered Jun 16, 2016
by formatsh selected Jul 11, 2016
Flag
Best answer
Thanks Clive,
good to see it's not completely dead end.

Can you perhaps recall anything about configuration that is not immediately obvious? We already spent quite a lot of resources in making it work and we took the forums as a last resort.

Unfortunately, in our region(Central Europe), we can't use nice Ashtech gadget like you so we are forced to use expensive base station or NTRIP service.. And AFAIK there is no easy way to verify if RTCM messages have the right corrections - but at least the U-Blox chip should accept them as RTCM data - not throw them away (or mark as USER3).
The US has them dotted around the coast and navigable waterways. This one over 100 miles away as I recall, but with the right atmospherics I can pull stations 1000's miles away.

There used to be DGPS stations around the UK and Irish coasts. Either way its these RTCM 1.04 messages these receivers (uBlox, et al) are designed to use. These days I think this type of DGPS is of marginal value, you're not trying to remove 100's metres of S/A dither, and you're left with a metre or so of error you still can't resolve with these pseudo-range methods.
0 votes
The u-blox receivers since antaris4 can process only 4 RTCM2.x messages (1,2,3,9). Which RTCM messages are you sending to NEO-M8N ?
by helge answered Jun 16, 2016
We tested RTCM v2.1/2.3 with messages 1,3,9 (and others, for example from NTRIP streams - but we understand those would be rejected).
All of those messages were rejected by our receiver.

Furthermore, the NovAtel base station is not able to generate type 2 message, but according to the RTCM specification, that message should only be send while updating Ephemeris data, so it should not be mandatory.

Our receiver uses firmware version 2.01 & protocol version 15.01.
0 votes

Adding an additional answer, as it's the only way to format text and pictures...

Verbosely decoding...

COM Port : 3, Baud Rate : 9600, Stop Bits 1
30 : 11011100 01011000 00000001-001001   0 0 (1 0 0 1 1 0)
30 : 11111111 00011001 01011101-110110   0 1 (0 0 1 1 0 1)
30 : 00000001 01011110 11100011-111111   1 0 (1 0 0 1 1 1)
30 : 00111000 11011110 01100111-011000   1 1 (1 1 1 0 0 1)
14 S 01100110 00011000 11011010-101100 # 0 0 (0 0 0 0 0 0) *
Sync
Preamble
30 : 01100110 00011000 11011010-101100 # 0 0 (0 0 0 0 0 0) *
Message ID :  6, Station ID :  218 - GPS Null Frame
30 : 10100011 01001010 00001000-010001 # 0 0 (0 0 0 0 0 0) *
ZCount : 5225, Sequence : 2, NumberOfWords :  1, StationHealth : 0 (UDRE Scale Factor = 1)
30 : 01010101 01010101 01010101-101001 # 0 1 (0 0 0 0 0 0) *
 6618DA A34A08 555555
-----------------------------------------------------------------------------
Message ID :  6, Station ID :  218 - GPS Null Frame
ZCount : 5225, Sequence : 2, NumberOfWords :  1, StationHealth : 0 (UDRE Scale Factor = 1)
-----------------------------------------------------------------------------
Preamble
30 : 01100110 00100100 11011010-110000 # 0 1 (0 0 0 0 0 0) *
Message ID :  9, Station ID :  218 - GPS Partial Correction Set
30 : 10100011 01100011 00101011-111100 # 0 0 (0 0 0 0 0 0) *
ZCount : 5228, Sequence : 3, NumberOfWords :  5, StationHealth : 3 (UDRE Scale Factor = 0.3)
30 : 00101110 11111110 10101101-111001 # 0 0 (0 0 0 0 0 0) *
30 : 00000000 00100101 00110000-100010 # 0 1 (0 0 0 0 0 0) *
30 : 11111111 11001010 00000000-011001 # 1 0 (0 0 0 0 0 0) *
30 : 00110101 00110110 11111111-101001 # 0 1 (0 0 0 0 0 0) *
30 : 10101010 00000000 00011110-100110 # 0 1 (0 0 0 0 0 0) *
 6624DA A3632B 2EFEAD 002530 FFCA00 3536FF AA001E
-----------------------------------------------------------------------------
Message ID :  9, Station ID :  218 - GPS Partial Correction Set
ZCount : 5228, Sequence : 3, NumberOfWords :  5, StationHealth : 3 (UDRE Scale Factor = 0.3)
Satellite : 14, PRC :   -6.78 m, RRC : +0.000 m/s, IOD : 25, UDRE : > 0.30 metres <= 1.20
Satellite : 16, PRC :   -1.08 m, RRC : +0.000 m/s, IOD : 35, UDRE : > 0.30 metres <= 1.20
Satellite : 22, PRC :   -1.72 m, RRC : +0.000 m/s, IOD : 1E, UDRE : > 0.30 metres <= 1.20
-----------------------------------------------------------------------------
Preamble
30 : 01100110 00011000 11011010-000101 # 1 0 (0 0 0 0 0 0) *
Message ID :  6, Station ID :  218 - GPS Null Frame
30 : 10100011 01100100 00001000-101010 # 0 1 (0 0 0 0 0 0) *
ZCount : 5228, Sequence : 4, NumberOfWords :  1, StationHealth : 0 (UDRE Scale Factor = 1)
30 : 01010101 01010101 01010101-010110 # 1 0 (0 0 0 0 0 0) *
 6618DA A36408 555555
-----------------------------------------------------------------------------
Message ID :  6, Station ID :  218 - GPS Null Frame
ZCount : 5228, Sequence : 4, NumberOfWords :  1, StationHealth : 0 (UDRE Scale Factor = 1)
-----------------------------------------------------------------------------
Preamble
30 : 01100110 00011000 11011010-000101 # 1 0 (0 0 0 0 0 0) *
Message ID :  6, Station ID :  218 - GPS Null Frame
30 : 10100011 01100101 00001000-100100 # 0 1 (0 0 0 0 0 0) *
ZCount : 5228, Sequence : 5, NumberOfWords :  1, StationHealth : 0 (UDRE Scale Factor = 1)
30 : 01010101 01010101 01010101-111111 # 0 0 (0 0 0 0 0 0) *
 6618DA A36508 555555
-----------------------------------------------------------------------------
Message ID :  6, Station ID :  218 - GPS Null Frame
ZCount : 5228, Sequence : 5, NumberOfWords :  1, StationHealth : 0 (UDRE Scale Factor = 1)
-----------------------------------------------------------------------------
Preamble
30 : 01100110 00100100 11011010-011001 # 1 1 (0 0 0 0 0 0) *
Message ID :  9, Station ID :  218 - GPS Partial Correction Set
30 : 10100011 01111110 00101011-011111 # 0 1 (0 0 0 0 0 0) *
ZCount : 5231, Sequence : 6, NumberOfWords :  5, StationHealth : 3 (UDRE Scale Factor = 0.3)
30 : 00110111 00000000 00101100-111100 # 1 1 (0 0 0 0 0 0) *
30 : 00000000 00001001 00111010-110101 # 0 0 (0 0 0 0 0 0) *
30 : 00000000 00010001 00000000-100000 # 0 1 (0 0 0 0 0 0) *
30 : 00100011 00111101 11111110-110001 # 0 0 (0 0 0 0 0 0) *
30 : 01010101 00000000 00100010-111000 # 0 1 (0 0 0 0 0 0) *
 6624DA A37E2B 37002C 00093A 001100 233DFE 550022
-----------------------------------------------------------------------------
Message ID :  9, Station ID :  218 - GPS Partial Correction Set
ZCount : 5231, Sequence : 6, NumberOfWords :  5, StationHealth : 3 (UDRE Scale Factor = 0.3)
Satellite : 23, PRC :   +0.88 m, RRC : +0.000 m/s, IOD : 09, UDRE : > 0.30 metres <= 1.20
Satellite : 26, PRC :   +0.34 m, RRC : +0.000 m/s, IOD : 23, UDRE : > 0.30 metres <= 1.20
Satellite : 29, PRC :   -8.54 m, RRC : +0.000 m/s, IOD : 22, UDRE : > 0.30 metres <= 1.20
-----------------------------------------------------------------------------

 

by clive1 answered Jun 16, 2016
My friend, I struggle to compose RTCM stream format from the values obtained from Neo-m8t or m8n GPS board. I designed the boards which work with u-blox chips. I don't work with beacons, I parse some data from ublox-ubx messages. I parse PRC and ECEF coordinates to apply message 1,2,3 to the other GPS board aiming to get my own DGPS. My goal is not to read RTCM format from any device, it is to obtain the DGPS device. I intended to learn reading RTCM format so that I can create RTCM stream easily. So I need to byte array of RTCM message 1,2,3 to activate GPS into the mode DGPS on. But, I couldn't know how should I compose the words and messages.  I examined RTCM 2.3 official document, I can compose words of message  like in the document (30bits-consist of PRC,ECEF data). But how can I flow them through GPS board's serial port? Message by message? (32bits or 30 bits)?
I found out finally. From this link, Fig-1.1 and 1.2 represent the situation.
http://kom.aau.dk/~borre/masters/receiver/rtcm2asc.htm#ref3
I could not find RRC formula on the website, I searched it for about one hour. Range rate correction must be the rate of the change of correction. So ___(PRC(t1)-PRC(t0)) / (t1-t0)______ But they don't match with the sample obtained from the link above for single and dual RTCM feeds.
Yes, so basically generate the frame of 24-bit words (3x 8-bit)
Add the parity, which is also dependent on last word, so you go from 24-bit to 30-bit
Then break the 30-bit down into 5x 6-bit and then add 2-bit '10' to each so you end up with 5x 8-bit.

Change from one period to the next, and depending on the time delta. I attempted to decode the message here, not recompute the averages/rate-of-change. There are perhaps 9 satellites split over 3 messages, the ordering is not fixed, I would have to maintain a lot of state information to try and decompose and verify these.

I wrote the code to decode this well over a decade ago (figure 2006-2007), and I had L1 RTK receivers from the 1990's. As observed earlier in these threads the value of this type of DGPS is marginal in the absence of S/A (Selective Availability), and at optimal levels might get you to a 1 metre or so.
If doing this today with minimal cost hardware, I'd run a NEO-6P/7P in PPP mode and feed it a DGPS RTCM stream. Or throw off data from a remote NEO-6M and do Inverse-DGPS at a server.

More practically the NEO-M8P would provide a better outcome, even if it stayed in RTK Float. The data can be broadcast over multiple KM from a base using LoRa.
0 votes
In recent tests I have confirmed the LEA-M8S, NEO-M8N and NEO-M8U accept RTCM messages (1, 2, 3 and 9)
by clive1 answered Jun 6, 2017
0 votes

Posting a new answer to add an image to address questions posed deeper in one of the threads.

by clive1 answered Mar 21, 2018
website banner