Converting raw receiver data to standard text format using CONVBIN

At this point, we have collected raw receiver output data in a Ublox binary format file. We need to convert this to RINEX format before RTKLIB will process it. RINEX (Receiver Independent Exchange Format) is a standard text data format supported by many receivers and post‐processing analysis software.

This can be done with RTKCONV, the GUI conversion program in RTKLIB, but I prefer to use CONVBIN, the CUI version.  To avoid having to remember the exact command format, I automate the call with a simple matlab wrapper. To convert binary data from a file named “testdata.ubx” the format of the command to CONVBIN will look like this:

convbin -od -os -oi -ot -f 1 -ts 2015/12/14 17:25:00 -te 2015/12/14 18:25:00 testdata.ubx

The command line options are all well documented in the RTKLIB user manual and there are many I am not using but here’s a brief explanation of the options I am using:

-od: include doppler frequency data in observation output file

-os: include SNR data in observation output file

-oi: include iono correction in nav output file header

-ot: include time correction in nav output file header

-f 1: one frequency (L1 only)

-ts: start time

-te: end time

I leave off the start time and end time options when I choose to process the complete file.

The output of this command will be a set of text files. The .obs file contains the observation data which in this case is the pseudorange, carrier phase, doppler, and SNR from each satellite for each epoch. The start of this file should look something like this:


The top section is the file header, followed by a timedate stamp and list of satellites for the first epoch. After that is a list of pseudorange, carrier phase, doppler, and SNR numbers for five satellites from the first epoch, each row being one satellite. See here for a complete description for the RINEX observation file data format.

There will also be a .nav file containing navigation data for the GPS satellites, a .gnav file for GLONASS navigation data, a .hnav file for geosynchronous satellite navigation data and a .sbs file containing SBAS correction data. All of these files are in text format and we will need most, if not all of them, as inputs to generate position data.

The data is now in a standard format that can be processed by RTKLIB to determine position.


4 thoughts on “Converting raw receiver data to standard text format using CONVBIN”

  1. Hi,

    I’m doing an experiment for gps tracking of an animal using a base and a rover. I want to use the data for rtklib post-processing. I understand I need carrier phase, psuedorange and raw data. I’m using the C94-M8P which has a NEO-M8P GPS module on it. I am not making use of the RTK functionality, I just want to log the data and do post processing. I was just wondering if you could assist me or at least guide me in the right direction on how to do this. I’m logging the data from the base and rover to an SD card. I need to know what messages to send to the SD card. When configuring the devices in u-center, what messages must I send? Will the UBX-RAW messages contain all the information I need for the rover? Also I know that I need a RINEX log file for the rover, and RINEX and NAV files from the base. I assume for rinex I just need carrier phase, psuedorange and raw data, but what is the navigation file comprised of?

    I hope this was clear!


    1. Hi James. I have not used the M8P and so am not certain on the answer. With the M8T you want to enable the RXM-RAWX and RXM-SFRBX messages but the u-blox documentation suggests these may only be available for the timing modules. I see comments on the u-blox board though that suggest the M8P may support these commands. If that is not true, then you will probably need to enable the RTCM3 messages for raw measurements and navigation data. There is some discussion of this on the u-blox forum that may help. Either way you will need both raw measurements and navigation data. The navigation data includes the necessary orbital information for the satellites.


  2. Hi Sir,
    I repeated your experiment with this article.
    But some problem have occured.
    Thank you

    qyh@qyh-ThinkPad-T450:~/uav/rtklib-dx/RTKLIB-b27$ convbin -od -os -oi -ot -f 1 COM5_170617_120649.ubx
    input file : COM5_170617_120649.ubx (u-blox)
    ->rinex obs : COM5_170617_120649.obs
    ->rinex nav : COM5_170617_120649.nav
    ->rinex gnav: COM5_170617_120649.gnav
    ->rinex hnav: COM5_170617_120649.hnav
    ->rinex qnav: COM5_170617_120649.qnav
    ->rinex lnav: COM5_170617_120649.lnav
    ->sbas log :

    Segmentation fault (core dumped)


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s