REAC Exposed Audio Communications · EtherType 0x8819

Plug a Roland REAC stagebox into Linux, and it is ready.

REAC is the proprietary protocol Roland's digital mixers use to carry many channels of audio to their stageboxes over one Ethernet cable. FreeREAC reverse-engineered it for real — not a partial sniff, a working implementation — and proved it on real desks and real boxes: an M-200 driving REAC at 44.1 and 48 kHz, an M-5000 at 96 kHz, and S-1608, S-4000S and S-0808 stageboxes on the other end. Plug a box into a Linux machine and it comes up on the audio graph: the three REAC paces (44.1/48/96 kHz), head-amp control — gain, phantom power, pad — carried on the wire, both master and slave roles, and tagged VLAN trunk segments.

The stack

Three pieces.

libreacGPL-3.0-or-later

The protocol, and its transport — one repository, two libraries

libreac owns what the bytes mean: the REAC frame codec, the 32-byte control block and its checksums, head-amp records (gain, phantom, pad), box identity, and the master/slave establishment state machines. It touches no socket and no clock.

libreac-transport, built from the same repository, carries no opinion about what a frame means: AF_PACKET sockets, the real-time pacer that clocks the wire, and VLAN sub-interface handling on a trunk port.

github.com/FreeREAC/libreac
reac-pwGPL-3.0-or-later

The PipeWire endpoint

A PipeWire-native client that puts a REAC stagebox directly on a Linux audio graph as source and sink nodes — no bridge, no second encapsulation. It links libreac-transport for the wire and libreac underneath it for what the frames mean, rather than reimplementing either.

It can run as the REAC master, driving the stagebox itself, or as a slave, joining another master's segment as if it were a box.

github.com/FreeREAC/reac-pw
reac-stageboxesGPL-3.0-or-later

The desktop app for the preamps

A GTK4/libadwaita application that lists every REAC segment on the PipeWire graph and sets phantom power, the pad and the sensitivity on each input by writing reac-pw's own node parameters — nothing but reac-pw needed.

github.com/FreeREAC/reac-stageboxes

libreac-transport's public headers carry no socket type in any call shape: every transport object reaches the operating system through one opaque handle (include/reac/transport/reac_handle.h). No consumer sees AF_PACKET in a function signature, so a different backend — a Linux kernel module, for instance — can sit under the same headers without any caller changing. The namespace is already clean for it.

Install

A signed dnf repository, for Fedora 44.

sudo dnf config-manager addrepo --from-repofile=https://freereac.github.io/rpm/freereac.repo
sudo rpm --import https://freereac.github.io/rpm/RPM-GPG-KEY-freereac
sudo dnf install reac-pw

Every package and the repository metadata are GPG-signed, and `dnf` verifies both. `libreac` and `reac-pw` install on their own for the REAC transport; the same repository also carries the openmixer console (`sudo dnf install openmixer-full` for the console plus the REAC transport, or `openmixer` for the console alone).

Building from source

Every repository builds standalone. `libreac` is a hand-kept Makefile (`make && make test`); `reac-pw` is Meson (`meson setup build && ninja -C build && meson test -C build`) and needs `pipewire-devel`, `libreac-devel` and `libreac-transport-devel` at the versions its `meson.build` names. Each README has the exact commands.

Getting started

A Roland REAC stagebox on Linux.

  1. 1. Install `libreac` and `reac-pw` (above), and connect the stagebox to a network interface the Linux machine can reach — a direct link, or a port on the same VLAN segment as the box.
  2. 2. Run reac-pw with no arguments. It listens on every linked interface; a segment with a box and no master is taken as master after a short hunt and the box is granted, and a segment already mastered by a real desk is joined as a slave. Nothing has to be configured for a box to appear.
  3. 3. The stagebox's channels appear as PipeWire nodes — a `reac:capture` source for its inputs, a `reac:playback` sink for anything it should output — patchable with `pw-link`, `qpwgraph`, or any PipeWire-aware application, same as a sound card.
  4. 4. The packaged binary runs without root: the RPM sets the file capabilities `reac-pw` needs (`cap_net_raw`, `cap_net_admin`, `cap_sys_nice`).

Running it as a service

The `reac-pw` package installs the binary only, not a systemd unit. The openmixer console manages `reac-pw` for you, started and configured from its own Setup → Adapters page, and is the simplest way to keep a segment serviced across reboots. Running `reac-pw` on its own without openmixer: start it by hand, or install packaging/reac-pw.service from the `reac-pw` repository as a user unit (`systemctl --user enable --now reac-pw`).

Licence

GPL-3.0-or-later, every repository.

All FreeREAC code is GPL-3.0-or-later. Where a file derives from someone else's work, the derived files carry that author's copyright, and each repository's own `NOTICE` file has the full per-file attribution.

FreeREAC is an independent interoperability project, not affiliated with, sponsored by, or endorsed by Roland. REAC is a trademark of Roland Corporation, used here only to identify the protocol. No Roland firmware, binaries, symbols or decompilation listings are redistributed; everything published is FreeREAC's own re-expression of behaviour observed on its own equipment.

Repositories

Where the code lives.

libreac — the protocol and its transport, libreac-transport, built from the same repository. reac-pw — the PipeWire endpoint. reac-stageboxes — the desktop app for the preamps. reac-protocol — the wire-format reference, prose plus a machine-checkable Kaitai Struct grammar: the source of truth every repository above is verified against.

Also in the organisation
reac-tools — capture analysis: loss, reordering, jitter, and a head-amp record parser. reac-captures — a CC0 public-domain corpus of address-sanitised capture fixtures; the full corpus carries real hardware addresses and stays private.

All FreeREAC code lives at github.com/FreeREAC. Issues and pull requests are open on any of them.

FreeREAC

Open documentation and tools for REAC, the audio-over-Ethernet protocol used by Roland digital mixers and their stageboxes.

On this page

Licence

The code is GPL-3.0-or-later. The documentation is FreeREAC's own re-expression of observed protocol behaviour.

github.com/FreeREAC

Non-affiliation

FreeREAC is an independent interoperability project. It is not affiliated with, sponsored by, or endorsed by Roland. REAC is a trademark of Roland Corporation, used here only to identify the protocol this project interoperates with.

Reverse engineering for interoperability is permitted, and protocol interfaces are not copyrightable. FreeREAC publishes its own findings, re-expressed in its own words and tables, derived from its own packet captures on equipment it owns and from GPL-licensed open-source work. It redistributes no vendor firmware, binaries, symbols or decompilation listings. This is not official Roland documentation. (Not legal advice.)