Notes on how far I got trying to use RTKLIB and the uBlox C94-M8P.

I got a realtime RTKNAVI solution that switched between fixed and floating.

Most of this is based on blog/website posts from Tim Everett at rtklibexplorer. He has been maintaining a fork of RTKLIB

This is the demo5 version of the RTKLIB code customized for improved performance with low-cost single frequency and dual frequency receivers

General Configuration

To do RTK we need some messages from the ublox.

RXM-SFRBX   0x02 0x13
RXM-RAWX    0x02 0x15
NAV-SVINFO  0x01 0x30
NAV-CLOCK   0x01 0x22


Can either enable these in ucenter and save, or do it in the RTKLIB serial input config

For RTKLIB serial input config, these are the startup commands

  • These are decimal, NOT hex
  • arguments to UBX-CFG-MSG are
    • class
    • id
    • port rates (1=once/solution, 2=once every other solution, etc)
      • i2c rate
      • uart1 rate
      • reserved rate
      • usb rate
      • spi rate
      • reserved rate
!UBX CFG-MSG 2 19 0 0 0 1 0 0
!UBX CFG-MSG 2 21 0 0 0 1 0 0
!UBX CFG-MSG 1 34 0 0 0 1 0 0
!UBX CFG-MSG 1 48 0 0 0 1 0 0

Realtime RTK solutions

RTKNAVI is the real time rtk thing.

Setup the C94-M8P as serial rover input with above config

Get CORS RTCM3 input

  • Sign up for a CORS thing like
  • Setup NTRIP client
    • put in host/port (, user/pass.
    • press Get Mountp
    • Select a mountpoint (NETWORK_SOLUTION_RTCM3-GG)
  • setup output file
  • start it and check output file for errors

Take guesses at what the config should be based on rtklibexplorer Updated guide to the RTKLIB configuration file and RTKLIB: Tips for using a CORS station as base

Note that in positions you need to set the base station location or it will silently do nothing.

Also somehow you have to tell the CORS NTRIP caster where you are so it can give you the closest, but I can’t figure out how to do that anymore.

Anyway, this config did get me a solution that was sometimes fixed, usually floating.