{"id":14962021,"url":"https://github.com/serial-studio/serial-studio","last_synced_at":"2026-04-25T01:08:18.201Z","repository":{"id":37619111,"uuid":"305089628","full_name":"Serial-Studio/Serial-Studio","owner":"Serial-Studio","description":"Open-source telemetry dashboard. Supports UART, BLE, MQTT, Modbus, CAN Bus and more. ","archived":false,"fork":false,"pushed_at":"2026-03-25T19:28:46.000Z","size":243542,"stargazers_count":6732,"open_issues_count":22,"forks_count":1011,"subscribers_count":136,"default_branch":"master","last_synced_at":"2026-03-25T19:46:42.292Z","etag":null,"topics":["arduino","canbus","csv","dashboard","embedded","esp32","ground-station","iot","microcontroller","modbus","network","qt","serial","serial-studio"],"latest_commit_sha":null,"homepage":"https://serial-studio.com/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Serial-Studio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":["alex-spataru"],"custom":["https://www.paypal.com/donate?hosted_button_id=XN68J47QJKYDE","https://store.serial-studio.com/buy/ba46c099-0d51-4d98-9154-6be5c35bc1ec"]}},"created_at":"2020-10-18T11:49:02.000Z","updated_at":"2026-03-25T19:03:52.000Z","dependencies_parsed_at":"2023-02-19T04:16:02.760Z","dependency_job_id":"df36bf10-5ac5-4aa4-8011-96f6a942f023","html_url":"https://github.com/Serial-Studio/Serial-Studio","commit_stats":{"total_commits":1239,"total_committers":14,"mean_commits":88.5,"dds":0.02824858757062143,"last_synced_commit":"1def318ea38146fc9f35d2e34ed08a5147ec2b37"},"previous_names":[],"tags_count":53,"template":false,"template_full_name":null,"purl":"pkg:github/Serial-Studio/Serial-Studio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Serial-Studio%2FSerial-Studio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Serial-Studio%2FSerial-Studio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Serial-Studio%2FSerial-Studio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Serial-Studio%2FSerial-Studio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Serial-Studio","download_url":"https://codeload.github.com/Serial-Studio/Serial-Studio/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Serial-Studio%2FSerial-Studio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31290741,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","canbus","csv","dashboard","embedded","esp32","ground-station","iot","microcontroller","modbus","network","qt","serial","serial-studio"],"created_at":"2024-09-24T13:28:45.743Z","updated_at":"2026-04-25T01:08:18.186Z","avatar_url":"https://github.com/Serial-Studio.png","language":"C++","readme":"# ![Application Icon for Serial Studio](./doc/brand/logo.svg) Serial Studio\n\n[![GitHub downloads](https://img.shields.io/github/downloads/Serial-Studio/Serial-Studio/total.svg?logo=github)](https://github.com/Serial-Studio/Serial-Studio/releases/)\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/Serial-Studio/Serial-Studio)\n[![Instagram](https://img.shields.io/badge/Instagram-E4405F?logo=instagram\u0026logoColor=white)](https://instagram.com/serialstudio.app)\n[![Donate](https://img.shields.io/badge/Donate-00457C?logo=paypal\u0026logoColor=white)](https://www.paypal.com/donate?hosted_button_id=XN68J47QJKYDE)\n[![Buy Pro](https://img.shields.io/badge/Buy%20Pro-Lemon%20Squeezy-blue?logo=lemonsqueezy)](https://store.serial-studio.com/buy/ba46c099-0d51-4d98-9154-6be5c35bc1ec)\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/4b6f3ce14a684704980fea31d8c1632e)](https://app.codacy.com/gh/Serial-Studio/Serial-Studio/dashboard?utm_source=gh\u0026utm_medium=referral\u0026utm_content=\u0026utm_campaign=Badge_grade)\n\n**Serial Studio** turns data from your hardware into a live dashboard.\n\nConnect an Arduino, ESP32, STM32, Raspberry Pi, Teensy, or any device that speaks serial, Bluetooth, a network protocol, or an industrial bus. Describe the data format once in a project file, and Serial Studio draws plots, gauges, maps, and 3D views around it. Send commands back with buttons, sliders, and knobs. Record a session, replay it later, or export it as a PDF report. No scrolling terminal, no custom GUI to maintain.\n\nIt runs on Windows, macOS, Linux, and Raspberry Pi.\n\n![Software usage](doc/screenshot.png)\n\n## What you can do with it\n\n**Connect to almost anything.** Serial/UART, Bluetooth LE, TCP/UDP, CAN Bus, Modbus TCP/RTU, MQTT, Audio, raw USB (libusb), HID (gamepads, custom devices), and Process I/O. One project can talk to several devices at once, each on its own protocol.\n\n**Visualize data live.** 15+ widget types: line plots, XY plots, gauges, bar charts, GPS maps, FFT spectrum, accelerometer, gyroscope, compass, data grids, 3D views, and live camera feed. 60 FPS with under 50 ms latency.\n\n**Configure dashboards without custom code.** The Project Editor lets you define groups, datasets, and widgets through structured forms, closer to editing a schema than coding a UI. Or skip the project file entirely with Quick Plot: print comma-separated values from your device and see them plot instantly. Workspaces split large projects into focused tabs, with a taskbar search for big setups.\n\n**Parse and transform data.** Write frame parsers in JavaScript or Lua 5.4, or pick from 20+ templates (MAVLink, NMEA, UBX, RTCM, MessagePack, COBS, SLIP, JSON, Modbus, and more). Apply per-dataset transforms (EMA filters, scaling, calibration, unit conversion) with short scripts that run every frame, no re-flashing firmware needed. Data Tables act as a shared bus so transforms can derive virtual datasets from each other.\n\n**Send commands back.** 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. Define Actions with optional timers for polling or periodic control.\n\n**Record, replay, and share.** Export to CSV or MDF4. Record full sessions (frames plus raw bytes) into a SQLite database, then browse, tag, replay, or export them from the Database Explorer. Turn a session into a styled HTML or PDF report with interactive charts for sharing results. Transfer files over XMODEM, YMODEM, or ZMODEM with CRC and crash recovery.\n\n**Automate and integrate.** A TCP API on port 7777 exposes 290+ commands for programmatic control. An MCP server lets AI models like Claude drive the app directly for automated analysis.\n\n**Industrial and automotive ready.** A Modbus register-map importer (CSV/XML/JSON) builds a ready-to-use project straight from vendor documentation. DBC files import decoded CAN signals.\n\nNew here? The [help center](https://serial-studio.com/help) has FAQs, use cases, and comparisons with similar tools.\n\n## Download\n\nSerial Studio is available as source code and as official precompiled binaries for Windows, macOS, and Linux.\n\n- [Latest stable release](https://github.com/Serial-Studio/Serial-Studio/releases/latest)\n- [Pre-release builds](https://github.com/Serial-Studio/Serial-Studio/releases/continuous)\n\n### Windows\n\nRequires the [Microsoft Visual C++ Redistributable (x64)](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170#latest-microsoft-visual-c-redistributable-version). On first launch Windows may warn about an unknown developer. Click _\"More Info → Run Anyway\"_ to continue.\n\n### macOS\n\nDistributed as a universal DMG. Open the DMG and drag **Serial Studio** into **Applications**. You can also install it via Homebrew:\n\n```bash\nbrew install --cask serial-studio\n```\n\nThe Homebrew cask is community-maintained. It's available, but not officially tested by me.\n\n### Linux\n\nThe recommended way to install on Linux is via the official [AppImage](https://appimage.org/). Download it from the [latest release](https://github.com/Serial-Studio/Serial-Studio/releases/latest), then make it executable and run it (replace `\u003cversion\u003e` with the version you downloaded):\n\n```bash\nchmod +x SerialStudio-Pro-\u003cversion\u003e-Linux-x64.AppImage\n./SerialStudio-Pro-\u003cversion\u003e-Linux-x64.AppImage\n```\n\nIf the AppImage fails to launch, your system is probably missing `libfuse2`:\n\n```bash\nsudo apt install libfuse2\n```\n\nFor better desktop integration (menu entries, icons, updates), use [AppImageLauncher](https://github.com/TheAssassin/AppImageLauncher).\n\n#### Flatpak (Flathub)\n\nSerial Studio is on [Flathub](https://flathub.org/apps/com.serial_studio.Serial-Studio). 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.\n\n#### Raspberry Pi / ARM64\n\nAn ARM64 AppImage is available for Raspberry Pi and similar boards. Performance depends on your GPU drivers since the UI is GPU-accelerated. Requirements:\n\n- A 64-bit Linux distro equivalent to or newer than Ubuntu 24.04 (needs `glibc 2.38`)\n- `libfuse2` installed\n\n## Features\n\n### How it works\n\n- **Project file mode (recommended):** Define your data format and dashboard in the Project Editor, using structured forms for groups, datasets, and widgets.\n- **Quick plot mode:** Drop in comma-separated values from Arduino and get an instant plot.\n- **Console only mode:** Use Serial Studio as a plain terminal without any dashboard.\n\n### At a glance\n\n- **Protocols:** Serial/UART, Bluetooth LE, TCP/UDP, Audio, raw USB, HID, Process I/O, plus MQTT, Modbus TCP/RTU, and CAN Bus (Pro).\n- **Visualization:** 15+ widgets — line plots, gauges, bar charts, GPS maps, FFT, accelerometer, gyroscope, compass, data grids, 3D views, and live camera feed (some Pro).\n- **Output widgets:** buttons, toggles, sliders, knobs, text fields, and freeform panels, with JS templates for GCode, SCPI, Modbus, NMEA, CAN, and more (Pro).\n- **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, …).\n- **Per-dataset transforms:** short JS or Lua snippets to filter, scale, calibrate, or derive values every frame.\n- **Data Tables:** shared bus for system datasets, user-defined constants and computed registers, and virtual datasets built entirely from transforms.\n- **Workspaces:** split large projects into focused dashboard tabs, with a taskbar search.\n- **CSV export:** every frame, ready for Excel, Python, MATLAB, or R.\n- **MDF4:** read and write MDF4/MF4 for CAN Bus, LIN, FlexRay, and analog (Pro).\n- **Session database:** record frames and raw bytes into SQLite, then browse, tag, export, and replay in the Database Explorer (Pro).\n- **Session reports:** export a session as a styled HTML or PDF with interactive Chart.js plots (Pro).\n- **File transfer:** XMODEM, YMODEM, and ZMODEM with CRC and crash recovery (Pro).\n- **Modbus register maps:** import CSV, XML, or JSON straight from vendor docs (Pro).\n- **CAN DBC import:** decoded signals for automotive and industrial work (Pro).\n- **Image view:** live JPEG or PNG camera streams alongside telemetry on the same connection (Pro).\n- **Multi-device:** several devices in one project, each with its own protocol (Pro).\n- **TCP API on port 7777:** 290+ commands for programmatic control (see the [API client example](./examples/API%20Test)).\n- **AI integration:** Claude and other models via the Model Context Protocol (see [MCP Client](./examples/MCP%20Client)).\n- **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.\n- **Dual licensed:** open source GPL-3.0 core with proprietary Pro features (see [LICENSE.md](LICENSE.md)).\n\n## Quick start\n\nYou can be up and running in about five minutes.\n\n### 1. Download and install\n\n- Grab the latest release for your platform (see [Download](#download)).\n- **Windows:** run the installer. Allow \"Unknown developer\" if prompted.\n- **macOS:** drag to Applications, then right-click and choose Open the first time.\n- **Linux:** `chmod +x` the AppImage and run it. You may need `sudo apt install libfuse2`.\n\n### 2. Connect your device\n\n- Launch Serial Studio.\n- Pick your serial port and baud rate (9600 and 115200 are common).\n- Click **Connect**.\n\n### 3. Visualize\n\n- **Quick plot mode:** send comma-separated values and watch them plot live.\n- **Project mode:** build a custom dashboard in the Project Editor, complete with gauges, maps, and more.\n- **Examples:** browse [`/examples`](./examples) for Arduino sketches, ESP32 code, and Python scripts.\n\n### Arduino example\n\n```cpp\nvoid setup() {\n  Serial.begin(9600);\n}\n\nvoid loop() {\n  int temperature = analogRead(A0);\n  int humidity = analogRead(A1);\n  Serial.print(temperature);\n  Serial.print(\",\");\n  Serial.println(humidity);\n  delay(100);\n}\n```\n\nUpload, connect Serial Studio, enable Quick Plot, and you're done.\n\nFirst time using it? The [help center](https://serial-studio.com/help) covers troubleshooting and common questions.\n\n## Documentation\n\n### Official docs\n\n- [Help center](https://serial-studio.com/help): FAQs, use cases, comparisons, troubleshooting.\n- [Local help docs](./doc/help): Markdown source for the in-app help center.\n- [AI agent guide](AGENTS.md): for ChatGPT, Claude, and other assistants.\n- [API reference](./doc/help/API-Reference.md): full TCP API and automation docs.\n- [gRPC server](./doc/help/gRPC-Server.md): protobuf API and streaming reference.\n- [Examples](./examples): Arduino, ESP32, Python code with sample projects.\n\n### Key topics\n\n- **Installation** for Windows, macOS, Linux, and Raspberry Pi.\n- **Quick start:** connect an Arduino or ESP32 and visualize data in five minutes.\n- **Dashboard creation:** build layouts in the Project Editor and split them into workspaces.\n- **Protocol support:** Serial/UART, Bluetooth LE, MQTT, Modbus TCP/RTU, CAN Bus, TCP/UDP, Audio, raw USB, HID, Process I/O.\n- **Frame parsing:** handle binary protocols, checksums, and custom formats in JavaScript or Lua 5.4.\n- **Per-dataset transforms:** EMA filters, scaling, calibration, and virtual datasets via Data Tables.\n- **Output widgets:** send commands back with buttons, sliders, knobs, toggles, and output panels (Pro).\n- **File transfer:** XMODEM, YMODEM, and ZMODEM over the active connection (Pro).\n- **CSV export and playback:** log sensor data and replay it.\n- **MDF4 playback and export:** CAN Bus, LIN, FlexRay, and analog (Pro).\n- **Session database and Explorer:** record, tag, export, and replay full sessions from SQLite (Pro).\n- **Session reports:** export HTML or PDF reports with interactive Chart.js plots (Pro).\n- **TCP API:** 290+ commands for programmatic control (see [API Client](./examples/API%20Test)).\n\n## Building Serial Studio\n\n### Requirements\n\nMinimum:\n\n- **Qt 6.7 or later** (6.9.2 recommended). Required modules: QtCore, QtGui, QtWidgets, QtSerialPort, QtNetwork, QtCharts, QtSvg, QtBluetooth, QtQuick.\n- **C++20 compiler:** GCC 10+ (Linux), Clang 12+ (macOS), or MSVC 2019+ (Windows).\n- **CMake 3.16 or later.**\n- Platform toolchain (see below).\n\nPlatform specifics:\n\n#### Linux\n\n```bash\nsudo apt install libgl1-mesa-dev build-essential\n```\n\n#### macOS\n\n```bash\nxcode-select --install\nbrew install qt@6\n```\n\n#### Windows\n\nVisual Studio 2019 or later with the C++ workload, and Qt from the official installer.\n\n### Build instructions\n\nAll 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.\n\n```bash\ncmake -B build -DPRODUCTION_OPTIMIZATION=ON -DCMAKE_BUILD_TYPE=Release\ncmake --build build -j$(nproc)\n```\n\nYou can also open `CMakeLists.txt` in Qt Creator or any CMake-aware IDE without extra setup.\n\nBy default the build produces a fully GPLv3-compliant version. It includes most core features but leaves out commercial modules like MQTT, 3D visualization, XY plotting, and other advanced tools that depend on proprietary Qt components.\n\nIf you are a Pro user or have a commercial license, [contact the maintainer](mailto:alex@serial-studio.com) for build instructions and activation details.\n\n## Support the project\n\nSerial Studio is developed and maintained by [Alex Spataru](https://github.com/alex-spataru). It is open source and community-driven, with commercial options for users who need advanced features or a business-friendly license.\n\nIf Serial Studio is useful to you, here are a few ways to support it:\n\n- [Donate via PayPal](https://www.paypal.com/donate?hosted_button_id=XN68J47QJKYDE): keeps the project active.\n- [Buy a commercial license](https://serial-studio.com): required for commercial use of the official binary. Includes Pro features and priority support.\n- [Become an affiliate](https://store.serial-studio.com/affiliates): a good fit for content creators who want to earn a commission by referring new customers.\n\nCommercial licenses directly fund development, bug fixes, and new features.\n\n## Licensing\n\nSerial Studio uses a dual-license model that separates open source usage from commercial distribution:\n\n- [LICENSE.md](LICENSE.md): summary of the dual-license structure and usage terms.\n- [LICENSES/GPL-3.0-only.txt](LICENSES/GPL-3.0-only.txt): full GNU GPLv3 text for open source source code.\n- [LICENSES/LicenseRef-SerialStudio-Commercial.txt](LICENSES/LicenseRef-SerialStudio-Commercial.txt): full terms for proprietary features and official binaries.\n\nSource 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.\n\n## Picking the right version\n\nThe table below shows licensing, feature access, and obligations for each edition.\n\n| Feature / use case     | GPL version *(build it yourself)*    | Trial version *(official binary)*    | Pro version *(activated official binary)*   |\n|------------------------|--------------------------------------|--------------------------------------|---------------------------------------------|\n| **Commercial use**     | ✅ If fully GPL compliant            | ❌ Evaluation only                   | ✅ Fully licensed                            |\n| **Official support**   | ❌ Community only                    | ❌ None                              | ✅ Priority support                          |\n| **Pro features**       | ❌ Not included                      | ✅ Included                          | ✅ Included                                  |\n| **Usage restrictions** | Must comply with GPL and Qt terms    | 14-day trial, no redistribution      | Bound by commercial license terms           |\n| **Precompiled binary** | ❌ Must build from source            | ✅ Provided for trial only           | ✅ Provided                                  |\n| **Qt licensing**       | Requires GPL-compatible Qt           | Qt licensing covered by vendor       | Qt licensing covered by vendor              |\n| **Activation system**  | ❌ Not applicable                    | ✅ Trial disables after 14 days      | ✅ Requires a valid license key              |\n| **Business use**       | ✅ If strictly GPL compliant         | ❌ Prohibited                        | ✅ Fully allowed                             |\n| **Best for**           | OSS devs, students, contributors     | Hobbyists, personal evaluation       | Businesses, teams, commercial products      |\n\nPro 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.\n\n## Contributing\n\nContributions are welcome: bug fixes, new features, or doc improvements.\n\nBefore contributing:\n\n- Check existing [issues](https://github.com/Serial-Studio/Serial-Studio/issues) and [pull requests](https://github.com/Serial-Studio/Serial-Studio/pulls).\n- Review [CLAUDE.md](CLAUDE.md) for code style.\n- Focus on GPL-licensed code, and leave the commercial modules alone.\n\nCode style:\n\n- Follow the project's clang-format config (LLVM base style).\n- Use meaningful names.\n- Avoid inline end-of-line comments (see [CLAUDE.md](CLAUDE.md#comments-policy)).\n- Add Doxygen comments for new public APIs.\n\nSubmitting changes:\n\n1. Fork the repository.\n2. Create a feature branch (`git checkout -b feature/amazing-feature`).\n3. Commit with descriptive messages.\n4. Push to your fork and open a pull request.\n5. Make sure CI passes.\n\nFor larger changes, open an issue first so we can talk about the approach.\n","funding_links":["https://github.com/sponsors/alex-spataru","https://www.paypal.com/donate?hosted_button_id=XN68J47QJKYDE","https://store.serial-studio.com/buy/ba46c099-0d51-4d98-9154-6be5c35bc1ec"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserial-studio%2Fserial-studio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fserial-studio%2Fserial-studio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserial-studio%2Fserial-studio/lists"}