Piksi® Multi (firmware v1.1 and newer) supports observation and navigation data conversion to RINEX (Receiver Independent Exchange) format and data post-processing using third-party tools. The RINEX format specification can be found on the IGS website.

The SBP (Swift Binary Protocol) to RINEX converter sbp2rinex is available for Windows, Linux and macOS computers. Executable binaries and documentation can be downloaded from the Resource Library and source code is available through Swift’s fork of RTKLIB’s convbin on GitHub.

Converter Usage

The sbp2rinex converter is a command line tool. It can convert SBP binary or SBP JSON logs to RINEX format. The log type is recognized by the file extension: .sbp - binary SBP, .json - SBP JSON.

sbp2rinex [option ...] file

To display all options and help information, launch the converter with the -h option.

Note: only use the converter with live data. Logs from a Piksi Multi running in simulation mode will not convert as expected.


        sbp2rinex -v 2.1 swift-gnss.sbp.json  - convert JSON SBP file to RINEX version 2.1 files

        sbp2rinex swift-gnss.sbp              - convert binary SBP file to RINEX version 3.04 files

        sbp2rinex -h                          - display usage help

The following are screenshots of sbp2rinex after converting a file from SBP-JSON format to RINEX, along with a file listing showing the files created. The screenshots are taken in Windows, Linux, and macOS, respectively.

Windows 11 Version

Fig. 1. sbp2rinex execution on Windows PC.

Linux (Ubuntu 22) Version

Fig. 2. sbp2rinex execution on Ubuntu Linux.

macOS (Monterey) Version

Fig. 3. sbp2rinex execution on Monterey macOS

Required SBP Messages

In order to produce RINEX files, it is necessary to have raw observables and ephemerides.  Make sure that the required SBP messages in the table below are enabled through the recording port. On the Piksi and Duro, the SBP messages can be configured through the enabled_sbp_messages setting on each interface port.

Message NameMessage ID (decimal)Notes
MSG_BASE_POS_ECEF72Base station surveyed position (if entered)
MSG_OBS74Raw measurements from any constellation
MSG_EPHEMERIS_BDS137BeiDou ephemeris
MSG_EPHEMERIS_GAL141Galileo ephemeris

Table 1: SBP messages used to generate RINEX file.

Receiver Options

One or more of the following options may be enabled using the -ro command line option:

  • CONVBASE: Convert base station observations and ephemeris, i.e. SBP messages with sender ID == 0.  If not specified then all observations and ephemeris are converted.
  • BASEPOS: Use MSG_BASE_POS_ECEF messages to populate base station position in the RINEX header and RINEX site occupation events.
  • EPHALL: Include all ephemeris messages in the RINEX output file.  If not specified then ephemeris messages are only written to the output file when there is a change in IODE or IODC.
  • INVCP: Invert carrier phase polarity.
  • OBSALL: Include observations which have the RAIM flag set.

Data Post-processing

The RINEX file(s) generated by sbp2rinex can be used by third-party post-processing tools such as RTKLIB or by online PPP services. See the article Using Skylark Corrections with RTKLIB for more information about post-processing correction data from Skylark with RTKLIB.

RTKLIB Post-processing

The RTKLIB RTKPOST tool can be used to compute RTK solutions from observations collected by a Swift Navigation Piksi Multi receiver.

Fig. 4. RTKPOST use example.

RTKPost must first be configured to calculate a kinematic solution. Select Kinematic (default is Single) from the Positioning Mode in the Setting1 tab. Access this dialog box by clicking on the Options... button at the bottom of the screen (Figure 4).

Fig. 5. RTKPOST Select the Right Positioning Mode.

You will now see the additional options as shown in Figure 4. Specify the OBS file for the rover. The output file created as part of the RTK processing is a pos files (swift-gnss.sbp.pos).

Click on Execute to start the post-processing. After several seconds, the processing will complete. To view the solution, click on Plot...You should see something similar to this next figure below.

Fig. 6. Sample output.

The sample files used for the example above can be found here.

Online PPP Post-processing

Online PPP services like OPUS and AUSPOS can be used to compute a stationary RTK solution from observations collected by a Swift Navigation Piksi Multi receiver. These services can be used to determine the surveyed position of a Piksi Multi being used as a base station. This approach is recommended in lieu of the “Auto Survey” method for applications such as surveying where the accuracy with respect to a map is critically important. Follow the instructions on the PPP service web site for data file requirements and limitations.


Piksi Multi uses GPS L2C signals. Some online services (eg. AUSPOS) do not support L2C measurements. A simple change in the RINEX file may allow data to be processed. Change the line


     8    C1    L1    D1    S1    C2    L2    D2    S2      # / TYPES OF OBSERV


     8    C1    L1    D1    S1    P2    L2    D2    S2      # / TYPES OF OBSERV