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 first | Where to look |
|---|---|
| Complete one communication run first | Quick Start: send and receive data with an Arduino |
| Install steps and pre-purchase verification | Setup: installation, samples, and the Tester app |
| Choose a data format or find the right port | Use Cases: the selection table by goal |
| Look up node inputs, outputs, and events | Blueprint API Reference: the public API |
Basic terms
| Term | Description |
|---|---|
| Serial port | A communication port that transfers data one bit at a time. USB microcontrollers use serial |
| Port name | The name the OS uses to identify a serial port. COM3 on Windows, under /dev/ on Mac/Linux |
| Baud rate | The communication speed per second. Must match the peer device |
| SerialPortManager | The 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
Recommended for these projects
- 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
- Install the plugin and enable UniversalSerial.
- Create a
Serial Port Managerand store it in a variable. - Bind the
Connected,Data Received, and other events. - Specify the port name and communication settings with
Initialize, then start communication withOpen. - Call
Closewhen 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 version | Supported UE versions |
|---|---|
| v1.3.0 | UE5.5 - 5.8 |
Platform support
| Category | Platforms |
|---|---|
| Target platforms | Windows, Mac, Linux |
| Development platforms | Windows, Mac, Linux |
Verified environments
| Platform | Verified OS |
|---|---|
| Windows | Windows 11 24H2 |
| Mac | macOS Sequoia 15.5 |
| Linux | Ubuntu 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.