MCPcopy Create free account
hub / github.com/Serial-Studio/Serial-Studio

github.com/Serial-Studio/Serial-Studio @v4.0.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v4.0.2 ↗ · + Follow
16,191 symbols 52,549 edges 1,503 files 8,869 documented · 55% updated 1d agocontinuous · 2026-07-14★ 7,04622 open issues

Browse by type

Functions 14,499 Types & classes 1,692
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Application Icon for Serial Studio Serial Studio

GitHub downloads Scanned with deglyph Donate Buy Pro Codacy Badge

Serial Studio turns data from your hardware into a live dashboard.

Connect an Arduino, ESP32, STM32, Raspberry Pi, Teensy, or anything else that speaks serial, Bluetooth, a network protocol, or an industrial bus. Describe the data format once in a project file. Serial Studio draws the plots, gauges, maps, and 3D views around it. Send commands back with buttons, sliders, and knobs. Record a session, replay it, export it as a PDF.

It replaces the stack of separate tools this work usually requires: a serial monitor and serial plotter for Arduino and ESP32 development, a real-time telemetry dashboard, a data logger that records to CSV or SQLite, and a Modbus, CAN bus, or MQTT monitor for industrial and IoT systems.

Runs on Windows, macOS, Linux, and Raspberry Pi.

Software usage

Use cases shows how people apply it across 18 fields, from rocketry and drones to industrial automation. Comparison sets it against the Arduino IDE Serial Plotter, Processing, MATLAB, LabVIEW, and Grafana.

What you can do with it

Connect to a device. Serial/UART, Bluetooth LE, and TCP/UDP in the GPL build. MQTT, Modbus TCP/RTU, CAN Bus, audio input, raw USB (libusb), HID (hidapi), and Process I/O are Pro. Multiple devices in one project is also Pro.

Visualize data. 15+ widgets in the GPL build: line plots, gauges, bar charts, meters, GPS maps, FFT spectrum, accelerometer, gyroscope, compass, data grids, LED panels, terminal, multi-channel plots, plus a Clock and Stopwatch utility widget pair. Bar, Gauge, Compass, and Meter each render as a two-page swipe view (page 0 is the analog face, page 1 is a large digital readout), so a single tile shows both the trend at a glance and the exact value. Pro adds 3D Plot, XY Plot, Waterfall (spectrogram), Image View (live camera), and the Painter widget. Painter is a JavaScript paint(ctx, w, h) callback with a Canvas2D-style API and 18 templates: oscilloscope, polar plot, artificial horizon, audio VU, dial gauge, heatmap, sparklines, vector field, XY scope, and others.

Build dashboards. The Project Editor defines groups, datasets, and widgets through forms. Or skip the project file: print CSV from your device and Quick Plot draws it. Workspaces split big projects into tabs with a searchable taskbar.

Parse and transform data. Frame parsers come in three flavors: Built-In templates (compiled C++ parsers you configure through a form, no code, the default for new projects), JavaScript, and Lua 5.4. 28 script templates cover MAVLink, NMEA 0183/2000, UBX, SiRF, RTCM, MessagePack, TLV, COBS, SLIP, JSON, XML, YAML, INI, Modbus, and others. Per-dataset transforms (EMA, scaling, calibration, unit conversion) run every frame as short JS or Lua snippets. Data Tables act as a shared bus so transforms can derive virtual datasets from each other.

Send commands back (Pro). Buttons, toggles, sliders, knobs, text fields, and freeform output panels run JS templates that emit GCode, SCPI, Modbus, NMEA, CAN, or whatever your device speaks. Actions run on demand or on a timer.

Record and replay. CSV export in the GPL build. MDF4 import/export, session recording (frames and raw bytes) into SQLite, PDF session reports, and XMODEM/YMODEM/ZMODEM file transfer are Pro.

Automate it. A TCP API on port 7777 with 300+ commands. A gRPC server on port 8888 mirrors the same command set with protobuf and live frame streaming. An MCP server wraps the same surface for Claude Desktop or any other MCP host.

AI Assistant for project editing (Pro). A bring-your-own-key chat panel that edits the project. Eight providers: Anthropic, OpenAI, Google Gemini, DeepSeek, Groq, Mistral, OpenRouter, and local OpenAI-compatible endpoints (Ollama, llama.cpp, LM Studio, vLLM) for offline use. Mutating actions show an Approve/Deny card first. See the AI Assistant docs.

Vendor-document importers (Pro). Feed the Modbus register-map importer a vendor CSV/XML/JSON and get a project. DBC import decodes CAN signals from the standard automotive files.

Download

Serial Studio is available as source code and as official precompiled binaries for Windows, macOS, and Linux.

Windows

Requires the Microsoft Visual C++ Redistributable (x64). On first launch Windows may warn about an unknown developer. Click "More Info", then "Run Anyway" to continue.

macOS

Distributed as a universal DMG. Open the DMG and drag Serial Studio into Applications. You can also install it via Homebrew:

brew install --cask serial-studio

The Homebrew cask is community-maintained. It's available, but not officially tested by me.

Linux

The recommended way to install on Linux is via the official AppImage. Download it from the latest release, then make it executable and run it (replace <version> with the version you downloaded):

chmod +x SerialStudio-Pro-<version>-Linux-x64.AppImage
./SerialStudio-Pro-<version>-Linux-x64.AppImage

If the AppImage fails to launch, your system is probably missing libfuse2:

sudo apt install libfuse2

For better desktop integration (menu entries, icons, updates), use AppImageLauncher.

Flatpak (Flathub)

Serial Studio is on Flathub. That version gets regular updates and tends to work better on ARM64. On some desktop environments, mostly Wayland, you may see small visual glitches like missing window shadows.

Raspberry Pi / ARM64

An ARM64 AppImage is available for Raspberry Pi and similar boards. It runs well on Raspberry Pi 4/5 and on integrated graphics. Requirements:

  • A 64-bit Linux distro equivalent to or newer than Ubuntu 24.04 (needs glibc 2.38)
  • libfuse2 installed

Features

How it works

  • Project file mode (recommended): Define your data format and dashboard in the Project Editor, using structured forms for groups, datasets, and widgets.
  • Quick plot mode: Drop in comma-separated values from Arduino and get an instant plot.
  • Console only mode: Use Serial Studio as a plain terminal without any dashboard.

At a glance

  • Protocols: Serial/UART, Bluetooth LE, and TCP/UDP in the GPL build. MQTT, Modbus TCP/RTU, CAN Bus, Audio, raw USB (libusb), HID (hidapi), and Process I/O are Pro.
  • Visualization: 15+ widgets, including line plots, gauges, bar charts, meters, GPS maps, FFT, waterfall (spectrogram), accelerometer, gyroscope, compass, data grids, 3D views, live camera feed, plus Clock and Stopwatch utility widgets (some Pro). Bar, Gauge, Compass, and Meter each include a swipeable digital readout page alongside the analog face.
  • Painter widget (Pro): scriptable Canvas2D-style canvas driven by a JS paint(ctx, w, h) callback. Watchdog-protected QJSEngine, persistent script state across frames, 18 templates (oscilloscope, polar plot, artificial horizon, audio VU meter, dial gauge, heatmap, LED matrix, sparklines, vector field, XY scope, and more).
  • Output widgets: buttons, toggles, sliders, knobs, text fields, and freeform panels, with JS templates for GCode, SCPI, Modbus, NMEA, CAN, and more (Pro).
  • Custom parsing: Built-In template, JavaScript, or Lua 5.4 frame parsers, plus 28 script templates (MAVLink, NMEA 0183/2000, UBX, SiRF, RTCM, MessagePack, TLV, COBS, SLIP, JSON, XML, YAML, INI, Modbus, and more).
  • Per-dataset transforms: short JS or Lua snippets to filter, scale, calibrate, or derive values every frame.
  • Data Tables: shared bus for system datasets, user-defined constants and computed registers, and virtual datasets built entirely from transforms.
  • Workspaces: split large projects into focused dashboard tabs, with a taskbar search.
  • CSV export: every frame, ready for Excel, Python, MATLAB, or R.
  • MDF4: read and write MDF4/MF4 for CAN Bus, LIN, FlexRay, and analog (Pro).
  • Session database: record frames and raw bytes into SQLite, then browse, tag, export, and replay in the Database Explorer (Pro).
  • Session reports: export a session as a styled HTML or PDF with interactive Chart.js plots (Pro).
  • File transfer: XMODEM, YMODEM, and ZMODEM with CRC and crash recovery (Pro).
  • Modbus register maps: import CSV, XML, or JSON straight from vendor docs (Pro).
  • CAN DBC import: decoded signals for automotive and industrial work (Pro).
  • Image view: live JPEG or PNG camera streams alongside telemetry on the same connection (Pro).
  • Multi-device: several devices in one project, each with its own protocol (Pro).
  • TCP API on port 7777: 300+ commands for programmatic control (see the API client example).
  • gRPC server on port 8888: the same command set over protobuf, with frame and raw-data streaming (see the gRPC reference).
  • AI Assistant (Pro): in-app chat panel that edits the project (sources, datasets, parsers, transforms, output widgets, workspaces) by calling the project-editing API. Bring-your-own-key for Anthropic, OpenAI, Gemini, DeepSeek, Groq, Mistral, OpenRouter, or a local OpenAI-compatible server (Ollama, llama.cpp, LM Studio, vLLM); the local option runs fully offline. Mutating commands require explicit approval; connection control and device writes are permanently blocked. Hidden in operator deployments.
  • MCP integration: external AI clients (Claude Desktop, custom MCP hosts) can call the full TCP API, including connection control and device writes, over the Model Context Protocol (see MCP Client).
  • Throughput: the parse pipeline sustains 256,000 frames per second, enforced as a CI benchmark gate on every pull request (see Benchmark).
  • Cross-platform: 60 FPS, under 50 ms latency, on Windows 10/11, macOS 13+ (Intel and Apple Silicon), Linux x64, and Raspberry Pi ARM64.
  • Dual licensed: open source GPL-3.0 core with proprietary Pro features (see LICENSE.md).

Quick start

A first connection takes about five minutes.

1. Download and install

  • Grab the latest release for your platform (see Download).
  • Windows: run the installer. Allow "Unknown developer" if prompted.
  • macOS: drag to Applications, then right-click and choose Open the first time.
  • Linux: chmod +x the AppImage and run it. You may need sudo apt install libfuse2.

2. Connect your device

  • Launch Serial Studio.
  • Pick your serial port and baud rate (9600 and 115200 are common).
  • Click Connect.

3. Visualize

  • Quick plot mode: send comma-separated values and watch them plot live.
  • Project mode: build a custom dashboard in the Project Editor, complete with gauges, maps, and more.
  • Examples: browse /examples for Arduino sketches, ESP32 code, and Python scripts.

Arduino example

void setup() {
  Serial.begin(9600);
}

void loop() {
  int temperature = analogRead(A0);
  int humidity = analogRead(A1);
  Serial.print(temperature);
  Serial.print(",");
  Serial.println(humidity);
  delay(100);
}

Upload, connect Serial Studio, enable Quick Plot, and you're done.

First time using it? Start with the getting started guide. The help center covers troubleshooting and common questions.

Documentation

Official docs

  • Help center: FAQs, use cases, comparisons, troubleshooting.
  • Getting started: first connection, the three operation modes, and common problems.
  • Use cases: 18 fields where Serial Studio is used, with the hardware and data rates involved.
  • Comparison: how it differs from the Arduino Serial Plotter, Processing, MATLAB, LabVIEW, and Grafana.
  • Pro vs Free: the full feature matrix for both editions.
  • Local help docs: Markdown source for the in-app help center.
  • AI agent guide: for ChatGPT, Claude, and other assistants.
  • API reference: full TCP API and automation docs.
  • [gRPC server](./doc/help/gRPC-Ser

Core symbols most depended-on inside this repo

Shape

Method 9,780
Function 4,719
Class 1,513
Enum 179

Languages

C++68%
Python14%
C10%
TypeScript8%
C#1%

Modules by API surface

app/rcc/chartjs/chart.umd.min.js958 symbols
app/src/DataModel/ProjectModel.cpp301 symbols
app/src/DataModel/ProjectEditor.cpp196 symbols
app/src/DataModel/Scripting/NativeTemplates/BinaryTemplates.cpp194 symbols
app/src/ThirdParty/fast_float.h178 symbols
tests/scripts/test_frame_parsers.py174 symbols
lib/mdflib/mdflib/src/half.hpp173 symbols
app/src/API/Handlers/ProjectHandler.cpp149 symbols
lib/mdflib/docs/manual/html/jquery.js123 symbols
app/src/DataModel/Scripting/NativeTemplates/TextTemplates.cpp122 symbols
tests/integration/test_mcp.py120 symbols
app/src/UI/Widgets/PainterContext.cpp110 symbols

For agents

$ claude mcp add Serial-Studio \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page