doc/help/FAQ.md
Answers to common questions about Serial Studio, from installation to advanced usage.
Serial Studio is an open-source tool that helps you see data from devices in real-time. You can monitor sensors, debug hardware, and create custom dashboards without coding.
Think of it as: A universal dashboard for any device that sends data via serial port, Bluetooth, MQTT, Modbus TCP/RTU, CAN Bus, or network.
The core is open source, with two options:
GPL version (open source): Build from source code under GPL-3.0 license. Includes core features but excludes Pro modules like MQTT, Modbus, CAN Bus, 3D visualization, and advanced plotting.
Pro version (proprietary): Official binary with all features, 14-day trial included. Purchase license for ~$9.99-179.00 (check current pricing at store.serial-studio.com).
Pro features are proprietary and not open source. See the License Agreement and Pro vs. GPL Version for details.
Arduino Serial Plotter is good for quick debugging but only works with serial ports and basic plots.
Serial Studio adds:
See Pro vs. Free for a detailed comparison.
Official binaries: Yes, but you need a Pro license for commercial use (business, revenue-generating projects, closed-source products). Pro features are proprietary.
GPL build: Yes, if you build from source and comply with GPL-3.0 terms (your project must also be open source). GPL builds exclude Pro features like MQTT, Modbus, CAN Bus, and 3D visualization.
See the License Agreement for full dual-licensing details.
Spataru, A. (2025). Serial Studio: Open-Source Telemetry Dashboard and Data Visualization Tool.
GitHub. https://github.com/Serial-Studio/Serial-Studio
Or use the DOI if available (check GitHub repository).
SerialStudio-Pro-3.x.x-Windows-x64.exe from GitHub releasesOption 1: Official DMG (recommended)
SerialStudio-Pro-3.x.x-macOS-Universal.dmg from GitHub releasesOption 2: Homebrew (community-maintained)
brew install --cask serial-studio
Recommended: AppImage
# Download from GitHub releases
chmod +x SerialStudio-Pro-3.x.x-Linux-x64.AppImage
./SerialStudio-Pro-3.x.x-Linux-x64.AppImage
If it fails to launch, install libfuse2:
sudo apt install libfuse2
Alternative: Flatpak (GPLv3)
flatpak install flathub com.serial_studio.Serial-Studio
flatpak run com.serial_studio.Serial-Studio
You need permission to access serial devices. Add your user to the dialout group:
sudo usermod -a -G dialout $USER
Then log out and log back in for changes to take effect.
Prerequisites:
Linux build:
sudo apt install libgl1-mesa-dev build-essential
mkdir build && cd build
cmake ../ -DPRODUCTION_OPTIMIZATION=ON -DCMAKE_BUILD_TYPE=Release
cmake --build . -j$(nproc)
macOS/Windows: See the build instructions in the project repository.
Tip: If you don't see your device, check drivers (FTDI, CH340, CP2102) and permissions (Linux: dialout group).
Yes (Pro only). Multi-device projects let you define multiple data sources in a single project file—each with its own protocol, connection settings, and frame detection. For example, you can simultaneously connect:
All devices feed into the same dashboard. Each source's data is routed to its own groups and widgets. Export (CSV/MDF4) captures all sources' data in a single file.
To set this up, open the Project Editor and add sources under the "Sources" section. Each source defines a bus type, connection parameters, and frame parsing rules.
Pro version only.
mqtt://broker.hivemq.com:1883)sensors/temperature)Your devices should publish data to the MQTT topic, and Serial Studio will visualize it in real-time.
Pro version only. Supports both Modbus TCP and Modbus RTU.
For Modbus TCP:
192.168.1.100:502)For Modbus RTU:
See the Modbus PLC Simulator example in the /examples folder for a complete demo.
Pro version only.
See the CAN Bus Example in the /examples folder for step-by-step instructions.
Pro version only. MDF4 (Measurement Data Format 4) files are commonly used in automotive and industrial applications to record CAN Bus, LIN, FlexRay, and analog sensor data.
Supported channels:
Use cases:
Pro version only.
Benefits of MDF4 export:
Supported data sources for MDF4 export:
192.168.1.100:8080)Example: Python script sending UDP data to Serial Studio:
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while True:
data = f"{temperature},{humidity}\n"
sock.sendto(data.encode(), ("127.0.0.1", 8080))
Serial Studio works with three modes:
1. Quick Plot Mode (easiest):
23.5,67.2,1013.25\n2. Project File Mode (recommended):
3. Device-defined JSON Mode:
See Operation Modes and Project Editor for more details.
Method 1: Project Editor (easy)
.json)Method 2: Edit JSON by hand Not recommended unless you need to create projects automatically with scripts.
Free (GPL + Pro):
Pro only:
CSV format:
Time,Group/Dataset 1,Group/Dataset 2,...
0.010000,...
0.020000,...
Yes! Click Preferences → Theme and choose your preffered theme.
Windows:
macOS:
/dev/tty.usbserial-* or /dev/tty.usbmodem-*Linux:
dialout group: sudo usermod -a -G dialout $USER (log out and back in)/dev/ttyUSB* or /dev/ttyACM*ls -l /dev/ttyUSB0Check baud rate: This is the most common problem. Make sure Serial Studio baud rate matches your device (common: 9600, 115200).
Check data bits, parity, stop bits: Usually 8N1 (8 data bits, no parity, 1 stop bit). Change in Serial Studio settings if your device uses something different.
Check frame delimiters: Serial Studio expects newline (\n) by default. If your device uses a different end character (like \r\n, semicolon, or custom byte), change it in Settings → Frame Detection.
Quick Plot mode issues:
val1,val2,val3\n.\n) or a carret line character (\r).Project File mode issues:
Use JavaScript frame parser:
function parse(frame) {
// frame is QByteArray of raw data
// Return comma-separated string
let byte1 = frame.at(0);
let byte2 = frame.at(1);
let value = (byte1 << 8) | byte2;
return value.toString();
}
See the examples folder for sample parsers.
Bug report: If crashes persist, open a GitHub issue with:
Error: cannot open shared object file
Install missing library:
sudo apt install libfuse2
Error: glibc version too old
ARM64 AppImage requires Ubuntu 24.04+ (glibc 2.38+). Upgrade your OS or use Flatpak version.
| Feature | GPL (Open Source) | Pro (Proprietary) |
|---|---|---|
| Serial, BLE, TCP/UDP | ✅ | ✅ |
| MQTT | ❌ | ✅ |
| Modbus TCP/RTU | ❌ | ✅ |
| CAN Bus | ❌ | ✅ |
| Audio input | ❌ | ✅ |
| Basic plots, gauges, maps | ✅ | ✅ |
| XY plots | ❌ | ✅ |
| 3D visualization | ❌ | ✅ |
| FFT spectrum analyzer | ❌ | ✅ |
| Advanced plotting | ❌ | ✅ |
| Image View (camera/image stream) | ❌ | ✅ |
| Raw USB (libusb) | ❌ | ✅ |
| HID devices (hidapi) | ❌ | ✅ |
| Process I/O | ❌ | ✅ |
| Multi-device projects | ❌ | ✅ |
| CSV export & playback | ✅ | ✅ |
| MDF4 playback & export | ❌ | ✅ |
| DBC file import (CAN) | ❌ | ✅ |
| Commercial use | ⚠️ GPL compliant only | ✅ |
| Priority support | ❌ | ✅ |
| Source availability | ✅ Open source | ⚠️ Visible but proprietary |
Check current pricing at serial-studio.com. Typically:
14-day free trial included with official binary.
Yes! Download the official binary and you get a 14-day trial with all Pro features enabled.
After 14 days:
Contact [email protected] with:
Educational discounts are considered on a case-by-case basis.
If you have a Pro license, yes, you can use all features for your open-source work.
However, Pro features are proprietary (not open source), even though the source code is visible in the repository. If you want to distribute your project under GPL and your users build Serial Studio from source, they won't have access to Pro features (MQTT, Modbus, CAN Bus, 3D, etc.) unless they purchase licenses.
See the License Agreement for the dual-licensing details.
Arduino Quick Start:
void setup() {
Serial.begin(9600);
}
void loop() {
int sensor1 = analogRead(A0);
int sensor2 = analogRead(A1);
Serial.print(sensor1);
Serial.print(",");
Serial.println(sensor2);
delay(100);
}
ESP32 BLE UART example:
#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>
#include <BLE2902.h>
BLECharacteristic *pCharacteristic;
// Nordic UART Service UUID
#define SERVICE_UUID "6E400001-B5A3-F393-E0A9-E50E24DCCA9E"
#define CHARACTERISTIC_UUID_TX "6E400003-B5A3-F393-E0A9-E50E24DCCA9E"
void setup() {
BLEDevice::init("ESP32-Sensor");
BLEServer *pServer = BLEDevice::createServer();
BLEService *pService = pServer->createService(SERVICE_UUID);
pCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID_TX,
BLECharacteristic::PROPERTY_NOTIFY
);
pCharacteristic->addDescriptor(new BLE2902());
pService->start();
pServer->getAdvertising()->start();
}
void loop() {
float temp = readTemperature();
String data = String(temp) + "\n";
pCharacteristic->setValue(data.c_str());
pCharacteristic->notify();
delay(1000);
}
Connect via Serial Studio BLE interface.
Python example (serial via USB cable to computer):
import serial
import time
ser = serial.Serial('/dev/ttyUSB0', 9600)
while True:
data = f"{temperature},{humidity}\n"
ser.write(data.encode())
time.sleep(1)
Python example (TCP server for network connection):
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(("0.0.0.0", 8080))
sock.listen(1)
conn, addr = sock.accept()
while True:
data = f"{temperature},{humidity}\n"
conn.send(data.encode())
time.sleep(1)
Arduino CRC16 example:
uint16_t crc16(const char* data, int length) {
uint16_t crc = 0xFFFF;
for (int i = 0; i < length; i++) {
crc ^= data[i];
for (int j = 0; j < 8; j++) {
if (crc & 0x0001) crc = (crc >> 1) ^ 0xA001;
else crc = crc >> 1;
}
}
return crc;
}
void loop() {
char buffer[32];
snprintf(buffer, sizeof(buffer), "%d,%d", sensor1, sensor2);
uint16_t checksum = crc16(buffer, strlen(buffer));
Serial.print(buffer);
Serial.print(",");
Serial.println(checksum);
delay(100);
}
In Serial Studio, use JavaScript frame parser to validate checksum and extract data.
Not directly in current version. Right now, Serial Studio is primarily for receiving and visualizing data, not for sending commands.
Workarounds:
Serial Studio is primarily a GUI application, not designed for headless automation. However:
Workaround:
Future: CLI mode is being considered for automated testing scenarios.
See README.md - Contributing for guidelines.
Quick start:
Non-code contributions:
Open a GitHub issue with:
Not currently. Serial Studio is designed as a GUI application.
Feature request: CLI mode is being considered for:
Upvote relevant GitHub issues if you need this feature.
Yes, if you have:
Performance: Depends on Raspberry Pi model and connected display. Raspberry Pi 4/5 with 4GB+ RAM recommended.
Alternative: Use Raspberry Pi as data aggregator (collect sensor data, forward to Serial Studio running on desktop computer).
Pro version only (audio input support).
Use cases: Audio analysis, ultrasonic sensors, software-defined radio (SDR) with audio output.
Pro version only (Image View widget).
Serial Studio can display live JPEG, PNG, BMP, or WebP images streamed from any connected device over any supported transport (UART, UDP, TCP, BLE, etc.).
How it works:
The Image View widget runs an independent frame reader alongside the telemetry path. It scans the raw byte stream for image data without interfering with CSV or JSON telemetry in the same stream.
Two detection modes:
Autodetect (default): No configuration needed. The widget automatically detects JPEG (FF D8 FF … FF D9) and PNG (89 50 4E 47 … 49 45 4E 44 AE 42 60 82) frames by their magic bytes. Perfect for embedded cameras streaming raw JPEG.
Manual delimiters: Specify custom start/end byte sequences for proprietary framing (e.g. $IMG_START$…$IMG_END$). Configure these in the Project Editor group settings.
Quick setup:
Mixed telemetry + image stream:
You can send image data and telemetry (gauges, plots, etc.) over the same connection simultaneously. The Image View widget extracts image frames by magic bytes; the normal telemetry parser ignores binary image data between its frameStart/frameEnd delimiters. See the Camera Telemetry example in the /examples folder for a complete Python + project file demo.
Use cases: Embedded camera modules (OV2640, ESP32-CAM), UAV video feeds, industrial vision systems, any device that streams JPEG/PNG images over serial or network.
Workflow:
MATLAB example:
data = readtable('serial_studio_output.csv');
plot(data.Timestamp, data.Temperature);
Python example:
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('serial_studio_output.csv')
plt.plot(data['Timestamp'], data['Temperature'])
plt.show()
/examples folder in GitHub repository: 10+ ready-to-use projects (Arduino, Python, project files)Free users (GPL):
Pro users:
Yes! Serial Studio is a desktop application that runs entirely offline. No internet required except for:
Last updated: 2025-12-02