
Description
UnrealDeviceLink offers quick setup, easy IP/port configuration, and understandable Blueprint nodes. Whether you switch sirens in a simulation or add extra dashboard elements: this plugin effortlessly connects PC and mobile devices in the local network and keeps them always in sync.
- Easy Setup, configure IP/Port and connect after Port forwarding
- Connect your Phone with your Unreal Project
- Send String Commands
- Mulitple Platforms / OS
- Easy to use

UnrealDeviceLink: Showcase
Turn your smartphone into a live controller or an interactive dashboard with just a few nodes. Perfect for vehicle controls, system toggles, and advanced in-game UI. Supports Windows, macOS, Linux, iOS, and Android, so your project can shine on any platform.
Documentation & News
First Steps
- Create two Unreal Engine projects of your choice, e.g., PC and Android.
- Add the plugin and decide which of your projects will be the “server”.
- Add “Start Server” to your server and “Connect to Device” to your device. Ensure that the IP/Port are correct and that the respective port is open.
- Purpose: Establish a TCP connection between two applications on the same network, e.g., PC and phone, to transmit inputs and exchange status messages.
- Host Project: Listens on a port (e.g., 7777) and accepts incoming connections.
- Device Project: Connects to a server (IP, Port).
Usage in Blueprints
StartServer
- Category:
UnrealDeviceLink SubSystem
- Description: Starts a TCP server and listens on
InPort
. - Inputs:
- InPort: Port number, e.g., 7777
- Outputs (return):
- true, if the server was started successfully
- false, if, for example, binding or listening failed
StopServer
- Category:
UnrealDeviceLink SubSystem
- Description: Stops the listening server and closes the corresponding socket.
ConnectToDevice
- Category:
UnrealDeviceLink SubSystem
- Description: Establishes a connection as a TCP client to a server (IP, Port).
- Inputs:
- InIP: IP address (e.g.,
"192.168.0.10"
) - InPort: Port number, e.g., 7777
- InIP: IP address (e.g.,
- Outputs (return):
- true, if the Connect call was successfully made
- false, if a socket could not be created, the IP is invalid, or no connection was established
DisconnectFromDevice
- Category:
UnrealDeviceLink SubSystem
- Description: Disconnects an active connection, closes the socket and thread.
IsDeviceConnected
- Category:
UnrealDeviceLink SubSystem
- Description: Returns whether there is currently an active socket connection (client connection or accepted socket).
- Outputs (return):
- true, if a valid socket exists
- false, if not
SendMessageToDevice
- Category:
UnrealDeviceLink SubSystem
- Description: Sends a message to the other side. Uses a small protocol (4 bytes length + UTF-8 data).
- Inputs:
- Message: Any text (e.g.,
"1"
,"W1"
,"Hello World"
, etc.)
- Message: Any text (e.g.,
- Outputs (return):
- true, if sending succeeded and the correct number of bytes was transmitted.
- false, if no socket is open or the socket write fails.
Usage of Events
OnConnectionSucceeded
- Category:
UnrealDeviceLink SubSystem
- Description: Triggered as soon as a connection is successfully established (as a client) or when a client worker is started (for accepted connections on the server).
- Workflow:
- In the client worker, once the
Recv
loop starts - Can be used to provide UI feedback (“Connected!”).
- In the client worker, once the
OnConnectionFailed
- Category:
UnrealDeviceLink SubSystem
- Description: Fires when
ConnectToDevice
fails. - Workflow:
- IP invalid
- Port blocked
- Socket could not be created
OnConnectionClosed
- Category:
UnrealDeviceLink SubSystem
- Description: Reports that the connection was broken or manually disconnected.
- Workflow:
- Call of
DisconnectFromDevice()
- Connection unexpectedly lost (other side closed socket)
- Call of
OnMessageReceived
- Category:
UnrealDeviceLink SubSystem
- Description: Contains the received text from the counterpart.
- Outputs (return):
- Message: Received string
- Workflow:
- As soon as the Recv loop reads a complete package
- In the length-based protocol, first the size is evaluated, then the UTF-8 message
- Suitable for: Button ID from phone (“1”), status from PC (“W1”), etc.
Blueprint Example
Example PC Side (Server / Host)
- Event BeginPlay (e.g., Level BP)
- Get Game Instance Subsystem →
UnrealDeviceLinkSubsystem
- StartServer(7777)
- Bind/Assign OnMessageReceived → process phone inputs
- Bind/Assign OnConnectionSucceeded → optionally display “Client connected” message
- Get Game Instance Subsystem →
- If the phone client successfully connects, the PC can send something back using
SendMessageToDevice("W1")
.
Example Phone Side (Client / Device)
- Event BeginPlay (e.g., in UI or Level BP)
- Get Game Instance Subsystem →
UnrealDeviceLinkSubsystem
- ConnectToDevice(“192.168.0.10”, 7777)
- Bind/Assign OnMessageReceived → process PC responses
- Bind/Assign OnConnectionSucceeded → UI feedback (“Connected to PC”)
- Get Game Instance Subsystem →
- Button OnPressed →
SendMessageToDevice("1")
→ PC receives"1"
→ opens door. - If PC sends
"W1"
, it appears inOnMessageReceived("W1")
→ phone changes icon.
Troubleshooting & Common Issues
- In a LAN setup, usually PC = Server (Port 7777) and Phone = Client (ConnectToDevice).
- Theoretically reversible, but Android often blocks incoming connections behind NAT/Firewall.
- Yes, a TCP connection supports simultaneous sending/receiving in both directions.
- Ensure the port is open (e.g., 7777) in the Windows firewall.
- No problem thanks to length-based transmission. No faulty bytes are received.
Demonstration Content
You can download an Unreal Engine Android project and an Unreal Engine Windows project here. Both plugins utilize the UnrealDeviceLink plugin, as well as Unreal Engine 5.4. Make sure to install and use the plugin via the Epic Games Launcher and/or move it to the /Plugins/ folder in the project directory.
You may need to rebuild the projects with Visual Studio. Right-click on the .uproject file and click on “Generate Visual Studio Files” – then launch the project.
Unreal 5.4 – Android Demo Project: https://drive.google.com/file/d/1RES4d2T45x6xa6ZH7S751pH1hpZdvU3b/view?usp=sharing
Unreal 5.4 – Windows Demo Project: https://drive.google.com/file/d/1RM_htZOXbTqIWALpsbz2n4Za4gBLlL7B/view?usp=sharing