Serial Studio is an open-source, cross-platform telemetry dashboard and real-time data visualization tool designed to monitor and analyze sensor data from embedded devices, IoT systems, and networked services. It supports multiple input protocols, including serial ports, Bluetooth Low Energy (BLE), MQTT, TCP/UDP sockets, and audio devices, making it versatile for various applications.
Key Features:
Multi-protocol Support: Connects to a wide range of devices using serial ports, BLE, MQTT, and network sockets.
Real-time Data Visualization: Displays sensor data in customizable dashboards with graphs, gauges, and tables for instant insights.
Project File Mode: Allows users to design custom dashboards by defining the layout and data mapping in JSON files.
MQTT Integration: Enables remote data acquisition and visualization over MQTT brokers for IoT applications.
CSV Export: Saves raw or processed data for offline analysis.
Audience & Benefit:
Ideal for engineers, educators, hobbyists, and professionals working with embedded systems, IoT projects, or sensor networks. Serial Studio provides a powerful yet accessible platform to monitor, analyze, and debug real-time data efficiently, supporting applications in education, research, and industrial environments.
Available on Windows, macOS, and Linux, Serial Studio can be installed via winget for easy setup.
README
Serial Studio
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. No more scrolling terminal streams, and no more custom dashboards to maintain.
Runs on Windows, macOS, Linux, and Raspberry Pi.
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, GPS maps, FFT spectrum, accelerometer, gyroscope, compass, data grids, LED panels, terminal, multi-channel plots. 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 in JavaScript or Lua 5.4, plus 28 templates: 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 320+ commands. 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. Five providers: Anthropic, OpenAI, Google Gemini, DeepSeek, 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.
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 `` with the version you downloaded):
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. Performance depends on your GPU drivers since the UI is GPU-accelerated. 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 — line plots, gauges, bar charts, GPS maps, FFT, waterfall (spectrogram), accelerometer, gyroscope, compass, data grids, 3D views, and live camera feed (some Pro).
Painter widget (Pro): scriptable Canvas2D-style canvas driven by a JS paint(ctx, w, h) callback. Watchdog-protected QJSEngine, persistent script state across frames, ~17 ready-to-use 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: JavaScript or Lua 5.4 frame parsers, plus 20+ templates (MAVLink, NMEA 0183/2000, UBX, SiRF, RTCM, MessagePack, TLV, COBS, SLIP, JSON, XML, YAML, INI, Modbus, …).
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: 320+ commands for programmatic control (see the API client example).
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, 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).
Fast and cross-platform: 60 FPS, under 50 ms latency, on Windows 10/11, macOS 11+ (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
You can be up and running in 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? The help center covers troubleshooting and common questions.
Documentation
Official docs
Help center: FAQs, use cases, comparisons, troubleshooting.
Local help docs: Markdown source for the in-app help center.
AI agent guide: for ChatGPT, Claude, and other assistants.
Visual Studio 2019 or later with the C++ workload, and Qt from the official installer.
Build instructions
All C/C++ dependencies (zlib, expat, OpenSSL, KissFFT, and so on) are vendored in lib/ or fetched automatically via CMake's FetchContent. No package manager is needed.
You can also open CMakeLists.txt in Qt Creator or any CMake-aware IDE without extra setup.
The default build is the GPLv3 edition. It includes the core: UART/TCP/UDP/BLE drivers, the Project Editor, Quick Plot and Console modes, the standard widgets (line plot, gauge, bar, GPS, FFT, accelerometer, gyroscope, compass, data grid, LED panel, terminal, multiplot), JavaScript and Lua frame parsers, per-dataset transforms, CSV export, and the local TCP/MCP API.
Pro-only modules are not built into the GPL edition: MQTT, Modbus, CAN Bus, Audio, USB, HID, Process I/O, multi-source projects, the 3D Plot, XY Plot, Waterfall, Image View, and Painter widgets, the output widgets, MDF4 import/export, the session database and Database Explorer, session reports, XMODEM/YMODEM/ZMODEM file transfer, the Modbus register-map and CAN DBC importers, and the AI Assistant. Some of those depend on proprietary Qt modules (Modbus, CAN Bus, MQTT); others are commercial-licensed code in this repository. See Pro vs Free Features for the full matrix.
If you are a Pro user or have a commercial license, contact the maintainer for build instructions and activation details.
Support the project
Serial Studio is developed and maintained by Alex Spataru. It is open source and community-driven, with commercial options for users who need advanced features or a business-friendly license.
If Serial Studio is useful to you, here are a few ways to support it:
Source files are individually marked with SPDX headers, either GPL-3.0-only, LicenseRef-SerialStudio-Commercial, or both. This lets developers build and distribute GPL-compliant versions while keeping commercial features protected.
Picking the right version
The table below shows licensing, feature access, and obligations for each edition.
Feature / use case
GPL version (build it yourself)
Trial version (official binary)
Pro version (activated official binary)
Commercial use
✅ If fully GPL compliant
❌ Evaluation only
✅ Fully licensed
Official support
❌ Community only
❌ None
✅ Priority support
Pro features
❌ Not included
✅ Included
✅ Included
Usage restrictions
Must comply with GPL and Qt terms
14-day trial, no redistribution
Bound by commercial license terms
Precompiled binary
❌ Must build from source
✅ Provided for trial only
✅ Provided
Qt licensing
Requires GPL-compatible Qt
Qt licensing covered by vendor
Qt licensing covered by vendor
Activation system
❌ Not applicable
✅ Trial disables after 14 days
✅ Requires a valid license key
Business use
✅ If strictly GPL compliant
❌ Prohibited
✅ Fully allowed
Best for
OSS devs, students, contributors
Hobbyists, personal evaluation
Businesses, teams, commercial products
Pro features and official binaries are proprietary and need a commercial license for anything beyond personal evaluation. Seeing the source code does not grant GPL rights unless a file is explicitly licensed that way.
Contributing
Contributions are welcome: bug fixes, new features, or doc improvements.