EMBEDDED DATA LOGGING · TRACING

Embedded logging for measurements and firmware traces.

Record measurements from ESP32, STM32, Arduino or Python scripts, watch them live, replay them later and export CSV. KymoStudio receives and stores on the PC; KymoCore adds device time, binary frames and runtime traces to your firmware.

KymoStudio
KymoStudio workbench with sources, a time series of three signals and an XY chart

Which logging do you mean?

“Embedded logging” covers three different jobs. Kymotrace does two of them – and says plainly which one it does not.

✓ INCLUDED

Measurement logging

Sensor values, control variables, ADC channels: record them with timestamps, watch, replay and export as CSV.

✓ INCLUDED

Execution tracing

Functions, FreeRTOS tasks and interrupts on a timeline: run times, hotspots and jitter, exported as CSV or Chrome trace.

– NOT INCLUDED

Text logging with levels

Messages like ERROR: sensor timeout with INFO/WARN/ERROR and filters. Dedicated logging libraries do that; Kymotrace handles numbers, not text messages.

From the board to a CSV file

  1. 1Send valuesAs for the Serial Plotter: temp:23.5,hum:40. Or binary frames with KymoCore – from firmware or from Python.
  2. 2Start a recordingEvery received value goes into the recording file – beyond the RAM buffer, and readable up to the last complete block after a crash.
  3. 3Replay and exportOpen the recording, analyse a range, export it as CSV. Markers with a note are stored in the recording.

Three ways to your measurements

All three end up in the same workbench, the same recording and the same CSV export.

NO LIBRARY

Serial.print

Your firmware stays as it is. Labelled values, Teleplot or CSV columns.

temp:23.5,hum:40
FIRMWARE · C++11

KymoCore

Device time, binary frames with CRC, runtime traces and live parameters on the microcontroller.

lib_deps = codename666/KymoCore
NEW · PYTHON

KymoCore for Python

Raspberry Pi, test bench, simulation: send values from scripts in the same format as the firmware.

pip install kymocore

NO LIBRARY

Two values, two named curves

No need to rebuild existing firmware. Each label becomes a signal with its own name. A line is taken whole or not at all, so columns never shift.

  • Arduino AVR
  • ESP32 / S3 / C3
  • STM32
  • any MCU with a UART
void loop()
{
    // the label becomes the signal name
    Serial.print("temp:");
    Serial.print(readTemperature());
    Serial.print(",hum:");
    Serial.println(readHumidity());
    delay(100);
}

When KymoCore makes sense

Text lines carry no device time. For exact timestamps, high data rates, CRC-protected frames or runtime traces, add the MIT-licensed KymoCore library – heap-free C++11 with a C API.

lib_deps = codename666/KymoCore @ 7.2.1

Nothing disappears silently

CRC errors, invalid frames, unreadable bytes and buffer overflows are counted per source and noted in the recording. KymoStudio shows gaps in device time as an estimate – frames carry no sequence number, so it is not proof.

Scope at a glance

As of KymoStudio 2.8.0 and KymoCore 7.2.1.

FeatureStatusDetails
Recording & replayyesOwn recording format, replay is read-only
ExportyesCSV (live or from a recording); traces also as Chrome trace JSON
Time baseyesDevice time (ms/µs), from the sample rate or arrival time – always labelled
SourcesyesFirmware via text lines or KymoCore; PC scripts via KymoCore for Python
ConnectionsyesSerial, TCP, UDP, MQTT, CAN
Data losspartlyCounters per source; gaps only estimated
Tasks, ISRs, functionsyesInstrumentation with KymoCore; FreeRTOS adapter
MarkersyesIn KymoStudio with a note; from firmware as a numeric value
Text messages, log levelsnoNot provided

Honest limits

  • KymoStudio runs on Windows and Linux (x86_64), not on macOS
  • No text logging, no log levels
  • Recordings are stored on the PC, not on the device's SD card or flash
  • The Python package only sends (version 0.1.0): no traces, no live parameters

Try it with the built-in demo – no board needed.

Get KymoStudio 2.8.0 Quick start