← Explore
Tutorial19 May 20266 min read

TCP to UDP bridge: convert between protocols with the RELO IO8

The RELO IO8 can receive a message on one protocol and immediately forward it on another. Here is how to wire a TCP-to-UDP or UDP-to-TCP bridge in a few nodes.

The RELO IO8 handles both TCP and UDP on the same device. Because receive nodes and send nodes are completely independent, you can mix and match: take a message in on TCP and send it out on UDP, or the other way around. The whole bridge fits in three nodes and takes about two minutes to set up.

When this is useful

A lot of AV and control gear speaks one protocol but not the other. Older show controllers often send over serial-converted TCP, while DMX processors and media servers tend to expect UDP. Instead of replacing hardware or adding a separate conversion box, you can use the IO8 to sit in the middle and translate on the fly.

  • A wall panel sends TCP strings to trigger scenes on a UDP-only media server
  • A lighting console uses UDP for its network protocol, but your relay logic runs over TCP
  • Two systems need to exchange messages but were built for different network stacks

How the nodes work

The flow editor has four nodes that handle raw network messages: TCP Message Receive, UDP Message Receive, TCP Message Send and UDP Message Send. The receive nodes are triggers: they fire when a message arrives that matches what you configured. The send nodes are actions: they transmit a message when execution reaches them.

Receive nodes

Each receive node listens on the device network interface for incoming messages. You set a message string to match against. When an incoming message matches, the node fires and the connected actions run. Leave the message field empty if you want the trigger to fire on any incoming message regardless of content.

TCP Message Receive node with its message match field configured

Send nodes

Send nodes target a specific IP address and port. You can enter these manually or pick from a saved custom device. The message field supports three formats: plain text string, space-separated hexadecimal bytes such as FF 01 03 or decimal bytes. Pick the format the receiving system expects.

UDP Message Send node configuration panel showing IP address, port, message format and message source fields

Building a UDP to TCP bridge

This is the most common setup: something on your network sends UDP and you need to forward it over TCP to a device that only accepts TCP connections.

Add a UDP Message Receive node as your trigger. Set the message field to the exact string you expect to receive, or leave it blank to forward everything that arrives.

Connect the trigger output to the execute input of a TCP Message Send node. Enter the IP address and port of the TCP device in the send node. Set the message to match what you are sending and choose the correct format. That is the complete bridge.

Building a TCP to UDP bridge

The reverse setup works exactly the same way with the node types swapped.

Add a TCP Message Receive node. Connect its trigger output to the execute input of a UDP Message Send node. Configure the send node with the UDP target IP address and port.

Both bridge flows in the editor: TCP to UDP on top, UDP to TCP below

Sending a pre-set value

Both TCP and UDP send nodes have two message source modes. Static sends the same string every time. Stored pulls the current value from a Store Value node elsewhere in the flow, which is useful when other parts of your automation update that value based on conditions or events. Switch the mode in the send node configuration and select which Store Value node to read from.

One flow per message

The bridge sends a fixed message every time the trigger fires. If you need to send different messages depending on what arrives, build a separate flow for each case: one flow per expected input, each wired to a send node with its own message configured. This keeps the logic straightforward and easy to debug.

A practical example

Say you have a lighting console that sends a UDP string to port 6454, and a show controller that only accepts TCP on port 3000. Add a UDP Message Receive node set to match that string, connect it to a TCP Message Send node pointed at the show controller IP on port 3000, and configure the same string in the send node. Every time the console fires, the show controller receives it over TCP within milliseconds.

Things to keep in mind

  • The device handles both incoming and outgoing connections simultaneously, so one IO8 can run multiple bridge flows at once
  • TCP Message Send opens a connection, sends the message and closes it. If you need to keep a TCP connection open, use the TCP Persistent node instead, which maintains a persistent connection and supports multiple commands over it
  • UDP is connectionless: the send node fires a packet with no handshake required
  • Use the hex or decimal format when the target device expects binary data rather than a text string
RELO IO8

Featured product

RELO IO8

8 relay outputs, 8 GPIO inputs. Cloud-managed and PoE+ powered.

View product
Cueva Control Desktop

Featured product

Cueva Control Desktop

Node-based AV automation software for macOS and Windows.

View product

Continue reading

Tutorial5 min read

TCP command to relay: control physical outputs over the network

Send a TCP command from any device on the network and the IO8 switches a relay. Works with touch panels, screen controllers, building systems or any software that can send TCP.

Tutorial5 min read

GPIO button to TCP: send IP commands from a physical button

Wire a button to the IO8 and send a TCP command to any IP-controllable device the moment it is pressed. Works with projectors, displays, AV receivers and anything that accepts TCP.

← All articles
Send us a message