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

Partagez n'importe quelle
carte son sur Ethernet.

Le PC serveur partage sa carte son physique — MOTU, RME, Focusrite, Universal Audio, PreSonus, Behringer — vers un PC distant qui la voit comme un périphérique local. Streaming UDP basse latence (~1.3 ms), auto-découverte réseau, audio bidirectionnel 48 kHz / 32-bit float. Un seul binaire Rust, sans dépendance.

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

Un câble RJ45, une liaison audio professionnelle

RJ45 Sound Card transforme un simple câble Ethernet en liaison audio multi-plateforme. Trois canaux réseau seulement : la découverte en broadcast UDP, le flux audio en UDP pur, le contrôle en TCP. Le client trouve le serveur tout seul et la carte son distante apparaît comme un périphérique local — idéal pour le monitoring temps réel entre le studio et un portable.

01

Fonctionnalités

Plateformes

Multi-plateforme

Windows, Linux et macOS. Un seul binaire Rust, aucune dépendance externe.

Matériel

Toutes les cartes son

MOTU, RME, Focusrite, Universal Audio, Presonus, Behringer… compatible avec tout périphérique reconnu par l'OS.

Flux

Bidirectionnel

Audio du studio vers le portable ET capture micro/input du portable renvoyée au studio.

Latence

Faible latence

Streaming UDP pur avec buffers configurables (64–1024 frames). Idéal pour monitoring temps réel.

Réseau

Auto-découverte

Le client trouve automatiquement les serveurs sur le réseau local via UDP broadcast.

Client

Périphérique virtuel

La carte son distante apparaît comme un périphérique local (ALSA loopback, BlackHole, VB-Cable).

02

Architecture

Serveur et client reliés par trois canaux : découverte, audio, contrôle.

SERVEUR · PC Studiocarte son physique (MOTU, RME, …) — capture → UDP TX · UDP RX → playback
RJ45 (Ethernet) — UDP 42000 découverte · UDP 42001 flux audio · TCP 42002 contrôle
CLIENT · PC Portablepériphérique audio virtuel (snd-aloop / BlackHole / VB-Cable) — UDP RX → lecture locale · capture → UDP TX

Ports réseau

PortProtocoleUsage
42000UDPDécouverte de services (broadcast JSON toutes les 3s)
42001UDPFlux audio (PCM f32 brut)
42002TCPContrôle (messages JSON, format length-prefixed)
03

Installation

Compilation

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

Périphérique audio virtuel (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

Utilisation

1 · Lister les périphériques

# Sur les deux machines
rjsc list

2 · Configurer

rjsc init  # génère rjsc.toml

3 · Serveur (PC studio)

# Partager la carte son (MOTU, RME…)
rjsc serve

4 · Client (PC portable)

# Connexion automatique
rjsc connect

# Ou adresse directe
rjsc connect --server 192.168.1.100:42002

5 · Interface graphique

# Panneau de contrôle
rjsc gui
05

Latence

Pour 48 canaux @ 48 kHz : ~55 Mbps, bien dans la capacité du Gigabit Ethernet.

BufferLatence (48 kHz)Usage
64 frames~1.3 msMonitoring temps réel
128 frames~2.7 msPerformance optimale
256 frames~5.3 msUsage standard
512 frames~10.7 msRéseau non optimisé
1024 frames~21.3 msDépannage
06

Exemple concret · Studio → Portable

Le PC studio (serveur) partage sa carte son physique (ex: MOTU, RME, Focusrite…) vers un PC portable (client) via RJ45. Le client voit la carte son distante comme un périphérique local grâce au périphérique audio virtuel. La latence est configurable jusqu'à ~1.3 ms en Gigabit Ethernet.

07

Spécifications techniques

SpécificationValeur
LangageRust (edition 2021)
CompilationRust 1.96+, cargo build --release
OS supportésWindows 10/11, Linux (kernel 5.10+), macOS 12+
Architecturesx86_64 (AMD64), ARM64 (Apple Silicon natif)
Taux d'échantillonnage44.1 kHz, 48 kHz, 88.2 kHz, 96 kHz, 176.4 kHz, 192 kHz
Format audioPCM f32 (32-bit float), stéréo par défaut
Canaux1 (mono) à 48 canaux simultanés
Buffer64 — 1024 frames (configurable)
Latence minimale~1.3 ms @ 48 kHz / 64 frames (Gigabit Ethernet)
Bande passante~55 Mbps pour 48 canaux @ 48 kHz
Protocole découverteUDP broadcast JSON (port 42000), toutes les 3 secondes
Protocole audioUDP flux PCM brut (port 42001)
Protocole contrôleTCP messages JSON length-prefixed (port 42002)
Périphérique virtuelALSA snd-aloop (Linux), BlackHole (macOS), VB-Cable (Windows)
Interface graphiqueegui / eframe (Rust), panneau de contrôle temps réel
LicenceMIT
08

FAQ

Quelle est la latence réelle en pratique ?

En Gigabit Ethernet avec un buffer de 64 frames : ~1.3 ms. Avec un buffer de 128 frames : ~2.7 ms. La latence dépend surtout de la qualité du câble et de la charge réseau. Un câble Cat6 ou Cat7 dédié est recommandé.

Puis-je utiliser le Wi-Fi au lieu de l'Ethernet ?

Techniquement oui, mais c'est fortement déconseillé. Le Wi-Fi introduit du jitter et des pertes de paquets qui dégradent l'audio. Le Gigabit Ethernet est requis pour une latence professionnelle.

Combien de canaux audio simultanément ?

Jusqu'à 48 canaux simultanés en stéréo 48 kHz. La bande passante nécessaire est d'environ 55 Mbps, bien en dessous des 1000 Mbps du Gigabit Ethernet.

Est-ce que ça fonctionne avec une carte son externe USB ?

Oui. Le serveur partage tout périphérique reconnu par l'OS — cartes internes PCIe, interfaces USB, FireWire, Thunderbolt. Le client reçoit le flux comme un périphérique local.

Comment configurer le périphérique audio virtuel sur le client ?

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

Le projet est-il stable pour une utilisation en production ?

Le projet est fonctionnel pour du monitoring et des sessions de production légères. Nous recommandons des tests préalables avant toute utilisation en environnement critique.

09

Documentation

Sélectionnez un document pour afficher son contenu.

📚 Documentation RJ45 Sound Card

Sélectionnez un document pour afficher son contenu.