README.md
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.
Runs on Windows, macOS, Linux, and Raspberry Pi.
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.
Serial Studio is available as source code and as official precompiled binaries for Windows, macOS, and Linux.
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.
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.
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.
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.
An ARM64 AppImage is available for Raspberry Pi and similar boards. It runs well on Raspberry Pi 4/5 and on integrated graphics. Requirements:
glibc 2.38)libfuse2 installedpaint(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).A first connection takes about five minutes.
chmod +x the AppImage and run it. You may need sudo apt install libfuse2./examples for Arduino sketches, ESP32 code, and Python scripts.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.
Minimum:
sudo apt install libgl1-mesa-dev build-essential
xcode-select --install
brew install qt@6
Visual Studio 2019 or later with the C++ workload, and Qt from the official installer.
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.
cmake -B build -DPRODUCTION_OPTIMIZATION=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
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), Built-In, 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.
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:
Commercial licenses directly fund development, bug fixes, and new features.
Serial Studio uses a dual-license model that separates open source usage from commercial distribution:
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.
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 | ❌ Personal, educational, OSS only | ❌ 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 | ❌ Requires a Pro license | ❌ Prohibited | ✅ Fully allowed |
| Best for | OSS devs, students, contributors | Hobbyists, personal evaluation | Businesses, teams, commercial products |
The GPL build is intended for personal, educational, and open source projects; commercial use of any edition requires a Pro license, even if you compile from source. 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.
Contributions are welcome: bug fixes, new features, or doc improvements.
Before contributing:
Code style:
Submitting changes:
git checkout -b feature/amazing-feature).For larger changes, open an issue first so we can talk about the approach.