← Help contents

Logging to a File

Saving the serial stream as it happens — not a snapshot, the live thing

Logging writes the serial stream — both RX (received) and TX (sent) — to a file as the data arrives. It is not a snapshot taken at the end of the session: the file is being written the whole time, so it survives a crash, a power cut or an accidental clear of the terminal. Whatever came in while logging was on is in the file.

Where it lives

The Logging section sits in the sidebar of the Connection tab. Its header carries the chosen file path next to the word Logging — that path is the file the data goes to, and it is also where warnings show up if the disk cannot keep up.

The Logging section

The Logging section — Log toggle, format list, TS toggle, file picker; the path is shown beside the header

Three pieces, one row

From left to right, the row under the header carries:

  • Log — the on/off switch for writing. Click it once to start, click again to stop.
  • Format list — how each line is written (see the next section).
  • TS — time stamps in front of each line (on by default).
  • The file-picker button on the right — picks the file the data goes to. It uses the same drawing as the file button on the send bar, because the action is the same.

Format

Three ways the same bytes are written into the file:

  • Text — the bytes turned into characters, with non-printable ones shown as best UTF-8 can.
  • Hex — every byte as two hex digits, separated by spaces.
  • Mixed (the default) — the text first, then the same bytes in hex inside square brackets: AB [41 42].

Every line also carries a direction prefix — TX: or RX: — so you can tell what came in from what went out even in a plain text editor with no colours. The file starts with a short header noting when the session began.

Time stamps

Leave TS on and each line starts with [HH:MM:SS.mmm] — the moment the bytes really arrived at or left the port, not the moment the line was written to disk. Data injected by a Lua script through emit_rx never went on the wire, so it has no real time of arrival: its lines are written without a stamp, rather than with a made-up one.

Choosing the file

Click the file-picker button on the right. A save dialog opens with a suggested name like serial_log_2026-08-27_14-22-05.txt — change it or keep it. The path is remembered between sessions, but logging does not start on its own after a restart: you have to turn it on again, deliberately.

If logging is already on and you pick a different file, the app confirms first — the current file is closed and flushed, then the new one starts empty.

Starting and stopping

Turn Log on. If you have not picked a file yet, the save dialog opens first. From that moment everything that comes through the port is written to the file — there is no “download” button at the end, the file is being written live, the whole time.

Turn Log off (or close the app, or disconnect the port) and the last piece of the in-memory buffer is pushed to disk before the file is closed. Nothing is lost in the moment between your click and the write.

When the disk cannot keep up

At very high speeds (2 Mbit/s and faster) the disk may not be fast enough to take every line. When that happens, the file path beside the header turns into a warning telling you how many lines were dropped — the log is no longer complete, and now you know it. The app keeps a 32 MB buffer in memory to smooth short bursts; only when that fills up does it start dropping.

💡 Logging is independent from the terminal. Clearing the terminal does not touch the log file, and stopping the log does not clear the screen. The two are separate: the terminal is for looking, the log is for keeping.