Skip to content

Raw data

This page is dedicated to recording raw data in SBF format (Septentrio Binary Format) with the MSX system, and to how to choose the recording rate (in Hz) according to the application.

What SBF is

SBF is the native binary format of the mosaic-X5 module. It is compact and efficient and contains everything needed for post-processing:

  • carrier-phase and code measurements on all frequencies (for RTK/PPK computation);
  • position solution (PVT) and ephemerides;
  • receiver status, DOP, signal quality.

Unlike NMEA (text, position only), SBF preserves the raw data: from an SBF log you can recompute positions afterwards (PPK) and convert to RINEX for third-party software.

Where it is recorded (on-board microSD or USB)

The mini carrier has a microSD slot (CN1, see Carrier mini) wired to the mosaic-X5's native SD interface. The SBF log can therefore be recorded in two ways:

  • on the microSD, in the field, without a PC — this is the way intended for the 400 m: insert the microSD and start/stop recording with the LOG button; the files end up in the DSK1/SSN folder on the card;
  • on the PC, over USB — by capturing the module's data stream with a logger (e.g. RxLogger / Data Link from Septentrio RxTools) on the USB COM port.

Tip

For track monitoring the microSD is preferable: the athlete carries only the receiver, no PC in tow. File download happens at the end of the session.

SBF blocks to record

A useful log contains at least the raw-measurement blocks plus the solution:

SBF block What it is for
MeasEpoch raw measurements (pseudorange, phase, Doppler) → basis for RINEX and PPK
PVTGeodetic position solution (lat/lon/altitude) and its quality
PVTCartesian solution in ECEF coordinates
GPSNav / GALNav / … constellation ephemerides (for orbit computation)
DOP dilution of precision (satellite geometry)
ReceiverStatus receiver status (diagnostics)

Tip

For real-time RTK only, NMEA output is enough. SBF is needed when you want to reprocess the data (PPK), produce RINEX, or analyse the measurement quality.

Recording rate (Hz)

By default the receiver outputs at 1 Hz

In the factory configuration (and in the typical MSX configuration) the receiver outputs at 1 Hz (sec1): one sample per second, enough for real-time NMEA and classic surveying. 100 Hz is not active by default: it must be set explicitly (see below) for high-dynamics applications like the 400 m.

The rate is set as the interval between epochs. The mosaic-X5 supports up to 100 Hz. Interval-to-rate correspondences:

Interval Rate Typical use
sec1 1 Hz static survey, standard RINEX, geodetic post-processing
msec500 2 Hz light kinematic survey
msec200 5 Hz kinematic, GIS on the move
msec100 10 Hz fast kinematic, low-dynamics drone
msec50 20 Hz machines on the move, automatic guidance
msec20 50 Hz high dynamics
msec10 100 Hz special applications (see below)

The 100 Hz case (special applications)

Recording at 100 Hz (msec10) is reserved for very-high-dynamics applications, where many samples per second are needed:

  • monitoring athletes on the track (e.g. 400 m): speed, acceleration, splits and high-resolution trajectory → see 400m on the track;
  • drones / UAVs in fast flight and aggressive manoeuvres;
  • vibration monitoring and structural dynamics (bridges, antennas, towers);
  • vehicles and machines at high speed or with sudden movements;
  • testing and commissioning (fine trajectory analysis, IMU synchronisation);
  • wideband deformation/seismology.

Warning

100 Hz is not the default and should be used only when really needed:

  • it generates very large files (tens of MB per minute) → disk space;
  • it easily saturates the port bandwidth → manageable over USB, but on future UART logging the baud rate must be raised;
  • it increases the load on the PC logger;
  • it does not improve the absolute precision of a single point: it only provides temporal resolution.

For classic topographic surveying 1–10 Hz is more than enough.

Note

The position value (PVT) can be generated up to 100 Hz; for very-high-rate raw measurements, check the enabled constellations/signals, as they affect the data load. (detailed parameters to be confirmed on the MSX Main configuration)

How to set up logging

  1. Connect USB and open http://192.168.3.1.
  2. Open the Logging menu.
  3. Press +New SBF stream and select the blocks to log (e.g. MeasEpoch + PVTGeodetic + ephemerides); to get RINEX directly, tick the Rinex option.
  4. In the Interval field choose the rate (e.g. 1 sec for 1 Hz, 10 msec for 100 Hz).
  5. Confirm: recording starts and the files are saved in the DSK1/SSN folder (microSD on carriers that provide it) or captured on the PC over USB.

Note

The real-time NMEA is configured instead from the Communication → Serial Port menu (or on the USB port), via NMEA/SBF Out → +New NMEA stream: there you pick the sentences and the output Interval (typically 1 sec).

How to set 100 Hz (step by step)

For the 400 m you need 100 Hz, i.e. one epoch every 10 ms:

  1. In the web UI open Logging and press +New SBF stream.
  2. Select the blocks: at least MeasEpoch + PVTGeodetic, plus the ephemerides (GPSNav, GALNav, …) for PPK.
  3. In the Interval dropdown choose the densest value, 10 msec (= 100 Hz). Be careful not to confuse it with 100 msec (which is 10 Hz).
  4. Confirm and save the configuration as Boot (Admin → Configurations, Current → Boot) so it stays active after power-off.
  5. Check on the status page that the epoch really runs at 100 Hz before going to the track.

Tip

To reduce the load at 100 Hz, keep the blocks to the minimum needed (MeasEpoch + PVTGeodetic + ephemerides) and avoid heavy NMEA streams in parallel: the NMEA for the live monitor can stay at 1 Hz while the SBF records at 100 Hz.

Advanced logging options (Advanced tab)

The Advanced tab of the Logging menu lets you set the station parameters (Marker name/number/type), the disk-full action (DSK1StopLogging) and the UMSD option (mount the disk as a USB mass-storage device when the cable is connected, handy for downloading the files).

Septentrio web UI: Advanced tab of the Logging menu
The Logging menu → Advanced tab: station parameters, disk-full action and UMSD configuration.

Via ASCII command (on the port)

Conceptual example of a Septentrio command to direct SBF to a stream with a given interval:

setSBFOutput, Stream1, <destination>, MeasEpoch+PVTGeodetic, msec100

where msec100 = 10 Hz (use msec10 for 100 Hz, sec1 for 1 Hz).

Note

The exact command syntax (stream, destination, file naming) is described in the mosaic-X5 Reference Guide. (to be confirmed for the MSX configuration)

From SBF log to RINEX

To use the data with third-party software, convert the SBF to RINEX with the sbf2rin utility (Septentrio):

sbf2rin -f log.sbf -o output.obs

From there you proceed with post-processing (PPK) or geodetic analysis.

Where to download sbf2rin (free)

sbf2rin is free and part of RxTools, Septentrio's software suite (which also includes SBF Converter, with a GUI under Tools → SBF Converter). Download it from the official site:

Available for Windows and Linux; it may require a free registration. In RxTools you get the command-line sbf2rin and the SBF Converter GUI to convert to RINEX, KML, ASCII.

Post-processing with RTKLIB

For kinematic processing (PPK) we recommend RTKLIB, in the RTKLIB-EX 2.5.0 version of the fork maintained by Tim Everett (rtklibexplorer), optimised for low-cost receivers and more up to date than the official 2.4.3 branch:

The full flow has two stages: convert the raw log to RINEX with convbin, then process it in RTKPOST.

1 · Conversion with convbin (command line)

convbin is RTKLIB's command-line converter (the CLI equivalent of RTKCONV). It reads Septentrio SBF directly (-r sbf) and produces the RINEX files:

# rover: from the SBF log to RINEX 3.04 (observations + multi-GNSS navigation)
convbin -r sbf -f 3 -v 3.04 -o rover.obs -n rover.nav log__000.sbf
Option Meaning
-r sbf Input format: Septentrio SBF.
-f 3 Number of frequencies to extract (3 = L1/L2/L5).
-v 3.04 Output RINEX version (3.04, multi-GNSS).
-o rover.obs RINEX observation file (measurements).
-n rover.nav RINEX navigation file (ephemerides, mixed).

Tip

Alternatively use the RTKCONV GUI (same options) or convert with sbf2rin. For the 400 m you need the PostProcess preset blocks (raw measurements + ephemerides): if you logged them, convbin finds everything in the SBF.

Also get the base data (your own station or an NTRIP / CORS service) for the same time interval, already in RINEX (base.obs).

2 · Processing with RTKPOST (GUI)

  1. Open RTKPOST and load the files:

    • RINEX OBS (Rover)rover.obs;
    • RINEX OBS (Base Station)base.obs;
    • RINEX NAVrover.nav (or the base navigation).
  2. Options → Setting1:

    • Positioning Mode: Kinematic (moving rover);
    • Frequencies: all available (L1+L2+L5);
    • Elevation Mask: ~10–15°;
    • Rec Dynamics: ON (useful for the high dynamics of sprinting);
    • Integer Ambiguity Res (GPS): Continuous (robust ambiguity resolution).
  3. Options → Positions: enter the base position (Lat/Lon/H, from the RINEX header or the RTCM antenna).

  4. Execute: you get a solution file (.pos) with position and status for each epoch, up to 100 Hz.
  5. Plot to view the track; then export/analyse the .pos to derive speed, acceleration and step-by-step splits.

Tip

At 100 Hz a .pos file has thousands of rows for a few seconds of running: check that the Q column stays at 1 (ambiguities resolved) throughout the lap; the Q=2 (float) stretches have reduced precision and should be flagged in the analysis.

Command-line equivalent

RTKPOST has the CLI equivalent rnx2rtkp (handy for batch-processing many trials):

rnx2rtkp -p 2 -m 13 -o sol.pos rover.obs base.obs rover.nav

where -p 2 = Kinematic mode and -m 13 = elevation mask 13°.

RTKPOST screenshots

The RTKLIB (RTKPOST) interface screenshots belong to their respective authors and are not reproduced here. To see them step by step (Kinematic settings, AR, solution map) refer to the tutorials with real screenshots:

Once you have processed one of your trials, send me a screenshot of RTKPOST with your settings: I will insert it here in place of these links.

See also