Data Format¶
mag-usb prints one JSON object per line to OUTPUT_PRINT. Each line represents a single sample of the magnetometer vector (and optionally other values in the future).
Baseline schema¶
{ "ts": "DD Mon YYYY HH:MM:SS", "rt": <float>, "x": <float>, "y": <float>, "z": <float> }
ts(string): UTC timestamp formatted like25 Oct 2025 14:02:33(RFC‑2822‑like time portion without timezone offset).rt(number): Value of temperature measured in degree C of the sensor at its ‘remote’ location.x,y,z(number): Field components in nanoTesla (nT), with 3 decimal places printed.
Example:
{ "ts":"26 Oct 2025 14:20:00", "rt":23.125, "x":12345.678, "y":-234.500, "z":987.001 }
Units and scaling¶
Raw RM3100 counts are converted using configured gains and
NOS(number‑of‑samples) register value.Outputs are provided in nanoTesla (nT). Internally the computation converts microTesla to nanoTesla by multiplying by 1000.
Orientation translations¶
If configured, 90° increment rotations are applied to (x,y,z) before printing. See docs/Orientation-and-Axes.md and [mag_orientation] in docs/Configuration.md.
Precision and rounding¶
Values are printed with
%.3f(three digits after decimal). This does not imply instrument accuracy; it is a display choice.
Sampling cadence¶
In POLL mode, each call to
formatOutput()prints one sample.In CMM mode (continuous), the sample rate is controlled by
cmm_sample_rate; seedocs/Configuration.md.
Errors and diagnostics output¶
Informational and error messages (e.g., adapter checks) are printed to OUTPUT_PRINT/ around the JSON lines. If you need a clean stream of JSON only, redirect and/or prefilter lines not starting with
{.
Logging and pipes¶
If you enable logging or named pipes in the configuration, the same JSON lines are written to files or pipes.
Named pipes (FIFOs) allow real-time IPC with local monitor/dashboard programs.
Default pipe paths are
/run/mag-usb/magctl.fifo(input) and/run/mag-usb/magdata.fifo(output).See
docs/Configuration.md(output section) for details.