RTK corrections from u-center NTRIP server looks gibberish

I’m using the Sirius XL Base station (NEO-M8P) running u-center on Windows as NTRIP server and I’m trying to read the correction data from it using ROS but the data I get seem to be gibberish.

For starters, how I pictured my setup is like this:

BASE (U-center on Windows) --> NTRIP server/caster --> ROS client (Linux) --> ROVER

where the RTK corrections are sent over a local network.

Right now I have a client trying to receive messages from the server, but just printing those messages to stdout yields unreadable text, and now I’ve turned to verifying the messages being sent from base to rover.

For testing, I have been able to send corrections over my network using NTRIP to the rover (tinyRTK) if I run u-center on two separate windows computers (1 for base, 1 for rover). This is evident by the fact that I can get 3D/GNSS/FIXED on u-center for my rover. However, some things just don’t make sense to me at the moment. My initial configuration:


  • UBX-CFG-MSG: 1005, 1077, 1087, 1230 for UART1 + USB
  • UBX-CFG-PRT: UART1, in: 0+1+5, out: 0+1+5, baud: 19200, USB, in: 0+1+5, out: 0+1+5
  • UBX-CFG-TMODE3: Survey-in
  • UBX-CFG-DGNSS: 3 = Fixed
  • The rest are default

Rover: I’ve tried to change some parameters, but I ended up resorting to using the “Load default” on UBX-CFG-CFG and I was able to get the FIXED state.

On the rover side, I can see on the lower right section of u-center that it is receiving NMEA/RTCM/UBX messages but when I look at Packet View, it seems that only NMEA is human-readable (or perhaps the rest of the data are just bad messages entirely). I’ve tried to make sure which message is causing the “gibberish” message and so I concluded that UBX/RTCM look gibberish on both the Packet Views of the base and rover.

I’ve also noticed that whenever I would get a FIXED on the rover, only the NMEA seem to appear on the lower right of u-center.

I’m still fairly new to this tech and just a bit overwhelmed with all the configuration that need to be done so I’m just looking for some guidance if anybody is trying to do a similar setup.


Hello Trix,

If I understand clearly, you are setting up a base + rover over a local NTRIP server/client and you are facing issues by not being able to get a FIX after having changed some of the u-center settings, but works ok in default setting mode, am I right ?

  • Did you get the same unreadable text when you are in default configuration and able to get a FIXED solution ?
  • Did you try to change USB settings only, as all the data are supposed to pass through USB towards u-center ?
  • Did you check our configuration doc here ?
  • Did you save your settings in BBR & ROM once you made the changes in order to get a permanent configured system ?
  • I suggest you to take things onestep at a time with minor changes from the “it works” state, maybe you should have an idea about what’s wrong.

Please could you be more specific regarding the settings you want to change and why ?

Have a nice day


Hi Paul,

It’s actually more like, I already have a saved setting on the base station that has been working when I just use u-center, but now I want to switch out using u-center on the rover side to a ROS driver.

  • I still see the unreadable text even when I use u-center for both base and rover. It seems to be UBX and/or RTCM messages that can’t be converted to readable format on u-center.
  • I tried to do that as it was my first instinct to just enable USB only, but u-center freezes when I try to do that and then I read from other forums that UART has to be enabled with the USB setting.
  • I have checked out that configuration doc before and that is indeed what I have saved on the base station side.
  • Yes, the settings have been the same except sometimes I would switch between FIXED and SURVEY-IN if I’m already at a known location.
  • Yes, I will try to do this.

Additionally, I am also uploading a config file that I use when I run the ROS node for the rover:

# Configuration Settings for NEO-M8P device

debug: 1                    # Range 0-4 (0 means no debug statements will print)

device: /dev/ttyACM0
frame_id: gps

# ------------------------------------------------------------------

# Revert to default configuration
  device: 23
  mask: 3102

#  mask: 3103                # Save I/O (1), Message (2), INF Message (4), Nav (8), Receiver
#                            # Manager (16), Antenna (1024), and Logging Configuration (2048)
#  device: 4                 # Save to EEPROM

# ------------------------------------------------------------------

dgnss_mode: 3               # Fixed mode

# ------------------------------------------------------------------

# UBX-CFG-INF: Error, Warn, Notice
  all: true                   # Whether to display all INF messages in console

# ------------------------------------------------------------------

# UBX-CFG-MSG? (RTCM out config)
  ids: [5, 87, 77, 230]     # RTCM Messages to configure for Base station
                               # Enabled: Stationary RTK ref (1005),
                               #          GPS MSM7 (1077),
                               #          GLONASS MSM7 (1087),
                               #          GLONASS CP bias (1230)
                               # 0xF5 0x05 Stationary RTK reference station
                               # ARP
                               # 0xF5 0x4A GPS MSM4
                               # 0xF5 0x4D GPS MSM7
                               # 0xF5 0x54 GLONASS MSM4
                               # 0xF5 0x57 GLONASS MSM7
                               # 0xF5 0x7C BeiDou MSM4
                               # 0xF5 0x7F BeiDou MSM7
                               # 0xF5 0xE6 GLONASS code-phase biases
                               # 0xF5 0xFE Reference station PVT
                               #(u-blox proprietary RTCM Message)
  rates: [1, 1, 1, 10]      # in number of navigation solutions, must match
                        # nav_rate, except for 0xE6

# ------------------------------------------------------------------

dynamic_model: airborne1    # Airborne < 1G, 2D fix not supported (3D only),
fix_mode: auto
dr_limit: 0

# ------------------------------------------------------------------

enable_ppp: false

# ------------------------------------------------------------------

  baudrate: 19200
  in: 35                   # RTCM 3(32) + UBX(1) + NMEA(2)
  out: 35                   # RTCM 3(32) + UBX(1) + NMEA(2)

  in: 35
  out: 35
  tx_ready: 1

# ------------------------------------------------------------------

rate: 5                     # in Hz
nav_rate: 5                 # [# of measurement cycles], recommended 1 Hz, may
                        # be either 5 Hz (Dual constellation) or 
                        # 8 Hz (GPS only)

# ------------------------------------------------------------------

tmode3: 0

# ------------------------------------------------------------------

# Enable u-blox message publishers
  all: true
    all: true
    hui: false
    all: false
    posecef: false

Thanks for the help,


I do not really know ROS but the config file seems ok.
In addition did you check that both base + rover are configured with the same baudrates ?

Hi Paul,

I see. I will check and let you know. In any case, on Binary view on u-center what should I be seeing as “correct” UBX and RTCM messages on the base station side (like an example or the like)? I could read the NMEA messages since they’re $GXXXX, but the rest just look like an alien language. I’ve been wondering this since it seems to happen even without the rover.


Hi trix .
Ublox Center support parse RTCM input data. You can press hotkey F10 or go Ublox Center Tabbar->View ->Static View.


I didn’t realize my last reply went through since it was stalled and had to be ok’ed by the admins I think.

I realized that the gibberish-looking messages I was seeing were in fact correct after doing a little more research about what the messages should look like on Binary view. I think the messages are correct the UBX start with “B5 62” and RTCM start with “D3 00”. I was able to get the messages to my rover over NTRIP by just directly writing the received messages on my NTRIP client to the serial port, but it doesn’t seem to want to get to a FIXED state, and when it does (after about an hour or so), it doesn’t stay FIXED for very long, especially when the rover starts moving. I had my server at 19200 baudrate and then on my config file for the rover, I had UART set to 19200 as well. It’s currently attached to a drone that has a max speed of 0.5 m/s so I had the dynamic_model set to airborne1.