UniversalSerial

UniversalSerial is a plugin for serial communication with Arduino and microcontrollers in Unreal Engine. You can build sending and receiving with hardware using only Blueprints (visual scripting); no C++ code is required.

The biggest feature of UniversalSerial is that it uses the serial communication APIs of Windows, Mac, and Linux directly. The plugin works right after installation, with no additional drivers or external libraries.

Reception runs on a background thread, so it does not put a heavy load on the game’s main loop. Received data is delivered through events.

What you want to check firstWhere to look
Complete one communication run firstQuick Start: send and receive data with an Arduino
Install steps and pre-purchase verificationSetup: installation, samples, and the Tester app
Choose a data format or find the right portUse Cases: the selection table by goal
Look up node inputs, outputs, and eventsBlueprint API Reference: the public API

Basic terms

TermDescription
Serial portA communication port that transfers data one bit at a time. USB microcontrollers use serial
Port nameThe name the OS uses to identify a serial port. COM3 on Windows, under /dev/ on Mac/Linux
Baud rateThe communication speed per second. Must match the peer device
SerialPortManagerThe object that manages serial communication. Communication starts with Initialize and Open

The following diagram shows how UniversalSerial is organized. SerialPortManager handles the port configuration, sending and receiving, and event notifications, and communicates with the device through the OS API.

    flowchart LR
	  BP["Blueprint / C++"] --> M["SerialPortManager"]
	  M --> OS["OS serial API"]
	  OS --> DEV["Arduino / microcontroller"]

What you can do with UniversalSerial

  • Automatic detection of available ports (Get Available Serial Ports)
  • Automatic identification of communicable serial ports (v1.3.0 and later: tries candidate ports in order and returns the first communicable port name)
  • Customizable port settings (port name, baud rate, data bits, parity, stop bits, flow control, write timeout, receive buffer size, DTR, RTS)
  • Three data transmission/reception methods (byte array, UTF-8 encoded strings, hexadecimal UTF-8 encoded strings)
  • Delimiter settings for string transmission/reception (automatically appends the delimiter on send, restores strings by splitting on the delimiter on receive)
  • Toggling DTR/RTS signals at runtime
  • Reception on a background thread (no heavy load on the game thread)
  • Full feature support from both C++ and Blueprint
  • IoT projects and interactive art that integrate Arduino or microcontrollers
  • Projects that connect in-game effects to real-world devices such as sensors, buttons, and motors
  • Projects that need to run with the same Blueprint setup on Windows, Mac, and Linux
  • Projects that build their gameplay logic primarily in Blueprint

Basic workflow

  1. Install the plugin and enable UniversalSerial.
  2. Create a Serial Port Manager and store it in a variable.
  3. Bind the Connected, Data Received, and other events.
  4. Specify the port name and communication settings with Initialize, then start communication with Open.
  5. Call Close when communication is no longer needed.

The Quick Start walks through these steps concretely.

Supported environments

Unreal Engine compatibility

Unreal Engine compatibility for each UniversalSerial version is listed below.

Plugin versionSupported UE versions
v1.3.0UE5.5 - 5.8

Platform support

CategoryPlatforms
Target platformsWindows, Mac, Linux
Development platformsWindows, Mac, Linux

Verified environments

PlatformVerified OS
WindowsWindows 11 24H2
MacmacOS Sequoia 15.5
LinuxUbuntu 24.04 LTS

Current limitations

  • Supported platforms are Windows, Mac, and Linux. Android and iOS are not supported.
  • The plugin directly uses each OS’s API. Unexpected behavior may therefore occur on older operating systems. We recommend verifying the behavior in your environment with the Tester app before purchase.
  • The ObjectDeliverer integration plugin (UniversalSerialOD) is currently unavailable. See Use Cases for details.
  • See Data Formats and Production for details and other caveats.

Distribution and license

UniversalSerial is available on Fab. You can use the product under the Epic Games license terms applied when you purchase or obtain it on Fab. There is no GitHub version.

A Tester app that lets you verify serial communication before purchase is available on the download page. See Setup for details.

Please Leave a Review

Thank you for using this plugin! Your review on the Epic Games Fab store is a great encouragement for future development. We'd love to hear your feedback!

Write a Review on Fab