v1.0.0 · MIT · Rust 1.96+ · Windows / Linux / macOS

Share any sound card
over Ethernet.

The server PC shares its physical sound card — MOTU, RME, Focusrite, Universal Audio, PreSonus, Behringer — with a remote PC that sees it as a local device. Low-latency UDP streaming (~1.3 ms), auto-discovery over the network, bidirectional 48 kHz / 32-bit float audio. A single Rust binary and zero dependencies.

$ git clone https://github.com/devfrp/RJ-45-SOUND-CARD.git && cd rj45-sound-card && cargo build --release
00

An RJ45 cable, a professional audio link

RJ45 Sound Card turns a simple Ethernet cable into a multi-platform audio link. Just three network channels: discovery over UDP broadcast, audio over pure UDP, control over TCP. The client finds the server by itself and the remote sound card shows up as a local device — ideal for real-time monitoring between the studio and a laptop.

01

Features

Platforms

Cross-platform

Windows, Linux and macOS. A single Rust binary, no external dependencies.

Hardware

All sound cards

MOTU, RME, Focusrite, Universal Audio, Presonus, Behringer... compatible with any device recognized by the OS.

Stream

Bidirectional

Audio from studio to laptop AND mic/input capture from laptop sent back to studio.

Latency

Low latency

Pure UDP streaming with configurable buffers (64–1024 frames). Ideal for real-time monitoring.

Network

Auto-discovery

The client automatically finds servers on the local network via UDP broadcast.

Client

Virtual device

The remote sound card appears as a local device (ALSA loopback, BlackHole, VB-Cable).

02

Architecture

Server and client linked by three channels: discovery, audio, control.

SERVER · Studio PCphysical sound card (MOTU, RME, …) — capture → UDP TX · UDP RX → playback
RJ45 (Ethernet) — UDP 42000 discovery · UDP 42001 audio stream · TCP 42002 control
CLIENT · Laptopvirtual audio device (snd-aloop / BlackHole / VB-Cable) — UDP RX → local playback · capture → UDP TX

Network ports

PortProtocolUsage
42000UDPService discovery (JSON broadcast every 3s)
42001UDPAudio stream (raw PCM f32)
42002TCPControl (JSON messages, length-prefixed format)
03

Install

Build

git clone https://github.com/devfrp/RJ-45-SOUND-CARD.git
cd rj45-sound-card
cargo build --release
./target/release/rjsc --help

Virtual audio device (client)

# Linux 🐧
sudo ./scripts/linux_setup.sh install

# macOS 🍎
sudo ./scripts/mac_setup.sh install

# Windows 🪟
powershell -ExecutionPolicy Bypass -File scripts\windows_setup.ps1 install
04

Usage

1 · List devices

# On both machines
rjsc list

2 · Configure

rjsc init  # generates rjsc.toml

3 · Server (Studio PC)

# Share the sound card (MOTU, RME...)
rjsc serve

4 · Client (Laptop)

# Automatic connection
rjsc connect

# Or direct address
rjsc connect --server 192.168.1.100:42002

5 · GUI

# Control panel
rjsc gui
05

Latency

For 48 channels @ 48 kHz: ~55 Mbps, well within Gigabit Ethernet capacity.

BufferLatency (48 kHz)Usage
64 frames~1.3 msReal-time monitoring
128 frames~2.7 msOptimal performance
256 frames~5.3 msStandard usage
512 frames~10.7 msNon-optimized network
1024 frames~21.3 msTroubleshooting
06

Concrete example · Studio → Laptop

The studio PC (server) shares its physical sound card (e.g. MOTU, RME, Focusrite...) with a laptop (client) via RJ45. The client sees the remote sound card as a local device thanks to the virtual audio device. Latency is configurable down to ~1.3 ms over Gigabit Ethernet.

07

Technical specifications

SpecificationValue
LanguageRust (edition 2021)
BuildRust 1.96+, cargo build --release
Supported OSWindows 10/11, Linux (kernel 5.10+), macOS 12+
Architecturesx86_64 (AMD64), ARM64 (Apple Silicon native)
Sample rate44.1 kHz, 48 kHz, 88.2 kHz, 96 kHz, 176.4 kHz, 192 kHz
Audio formatPCM f32 (32-bit float), stereo by default
Channels1 (mono) to 48 simultaneous channels
Buffer64 — 1024 frames (configurable)
Minimum latency~1.3 ms @ 48 kHz / 64 frames (Gigabit Ethernet)
Bandwidth~55 Mbps for 48 channels @ 48 kHz
Discovery protocolUDP JSON broadcast (port 42000), every 3 seconds
Audio protocolUDP raw PCM stream (port 42001)
Control protocolTCP JSON messages length-prefixed (port 42002)
Virtual deviceALSA snd-aloop (Linux), BlackHole (macOS), VB-Cable (Windows)
GUIegui / eframe (Rust), real-time control panel
LicenseMIT
08

FAQ

What is the actual latency in practice?

Over Gigabit Ethernet with a 64-frame buffer: ~1.3 ms. With a 128-frame buffer: ~2.7 ms. Latency mainly depends on cable quality and network load. A dedicated Cat6 or Cat7 cable is recommended.

Can I use Wi-Fi instead of Ethernet?

Technically yes, but it is strongly discouraged. Wi-Fi introduces jitter and packet loss that degrade audio. Gigabit Ethernet is required for professional-grade latency.

How many simultaneous audio channels?

Up to 48 simultaneous channels in 48 kHz stereo. The required bandwidth is about 55 Mbps, well below the 1000 Mbps of Gigabit Ethernet.

Does it work with an external USB sound card?

Yes. The server shares any device recognized by the OS — internal PCIe cards, USB interfaces, FireWire, Thunderbolt. The client receives the stream as a local device.

How to configure the virtual audio device on the client?

Linux: sudo ./scripts/linux_setup.sh install (installs snd-aloop). macOS: sudo ./scripts/mac_setup.sh install (installs BlackHole). Windows: provided PowerShell script (VB-Cable).

Is the project stable for production use?

The project is functional for monitoring and light production sessions. We recommend prior testing before any use in critical environments.

09

Documentation

Select a document to view its content.

📚 RJ45 Sound Card Documentation

Select a document to view its content.