Skip to content

seanboe/serial_monitor

Repository files navigation

Serial Monitor

A desktop serial monitor for embedded development — built with Tauri 2, React, and Rust. Targets Teensy, Arduino, ESP32, and any other device that communicates over a serial port.


Features

Monitor

  • Real-time serial receive display, virtualized for high-throughput streams (up to 1.5 Mbaud+)
  • Send text or raw hex bytes with configurable newline (LF / CRLF / CR / none)
  • Timestamps per line, auto-scroll, manual freeze
  • Sent-message history side panel
  • Secondary monitor panel for side-by-side channel views

Plotter

Auto-discovers graph channels from serial output — no configuration needed. Any line matching key: value1, value2, ... creates or updates a channel named key. Supports four panel types per channel:

Panel type Use case
Time series Waveforms, sensor readings over time
XY scatter Lissajous figures, parametric curves
FFT Frequency spectrum from a continuous signal
Bar Live bar chart for slow-changing values
  • Configurable time window (1 s – 60 s)
  • Per-series color, Y-axis limits, enable/disable
  • Pause, zoom (X / Y / both), pan, reset
  • Sync zoom across all panels

Commands

  • Save serial commands with a name, payload (text or hex), and group
  • Drag-and-drop reorder within and across groups
  • Run All executes an entire group in sequence, with optional delay steps between commands
  • Select a group to target where new commands are added

General

  • Light / dark / auto theme
  • Memory usage side panel (lines buffer + plot buffer stats)
  • Full keyboard shortcut system (press ⇧? to see all shortcuts)
  • Persistent panel state across view switches

Plotter format

Print lines from your firmware in this format:

graphName: series1=value, series2=value

or, for a single series:

graphName: value

Examples:

// Single value → one series
Serial.print("temperature: ");
Serial.println(temp, 2);

// Multiple values → multiple series on the same graph
Serial.print("imu: x=");  Serial.print(ax);
Serial.print(", y=");     Serial.print(ay);
Serial.print(", z=");     Serial.println(az);

// Lines without a "key: value" pattern are shown in the monitor but ignored by the plotter
Serial.println("System OK");

Lines starting with # are treated as comments. The = sign in values is optional — key: 1.0, 2.0 and key: a=1.0, b=2.0 both work.

See test.ino for a full working example covering all four panel types.


Download

Pre-built binaries are attached to each GitHub Release.

Platform File to download
macOS (Apple Silicon + Intel) Serial Monitor_*_universal.dmg
Windows 64-bit Serial Monitor_*_x64-setup.exe

These builds are unsigned. Both platforms will show a one-time security warning.

macOS — bypassing Gatekeeper

After opening the .dmg and dragging the app to Applications, macOS may refuse to open it.

Option 1 — right-click method (easiest):

  1. Right-click Serial Monitor.app in Applications
  2. Click Open
  3. Click Open again in the dialog

Option 2 — remove quarantine flag:

xattr -dr com.apple.quarantine "/Applications/Serial Monitor.app"

Then open normally.

Windows — bypassing SmartScreen

When you run the installer, Windows may show "Windows protected your PC":

  1. Click More info
  2. Click Run anyway

Build from source

Building locally avoids all signing/quarantine issues — macOS and Windows treat locally-built apps as trusted.

Prerequisites

All platforms:

macOS only:

xcode-select --install

Windows only: Install the Microsoft C++ Build Tools. During setup, select Desktop development with C++.

Build

git clone https://github.com/seanboerhout/serial-monitor.git
cd serial-monitor
npm install
npm run tauri build

The first build takes 5–15 minutes (Rust compile). Subsequent builds are much faster.

Install the built app

macOS:

src-tauri/target/release/bundle/dmg/Serial Monitor_*.dmg

Open the .dmg and drag to Applications. Or use the .app directly from bundle/macos/.

Windows:

src-tauri\target\release\bundle\nsis\Serial Monitor_*_x64-setup.exe
src-tauri\target\release\bundle\msi\Serial Monitor_*_x64_en-US.msi

Run either installer. The NSIS .exe is a standard installer wizard; the .msi is for enterprise/group policy deployment.


Keyboard shortcuts

Press ⇧? inside the app to see all shortcuts. Common ones:

Shortcut Action
⇧M Monitor view
⇧P Plotter view
⇧D Commands view
⇧C Connect / disconnect
⇧X Clear display
⇧H Toggle sent-history panel
⇧I Toggle memory panel
⇧? Toggle shortcut hints
Esc Close open panels

Development

npm install
npm run tauri dev

The dev server runs at http://localhost:1420 with hot-reload for the frontend. Rust changes trigger a recompile automatically.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors