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
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.
Fonctionnalités
Multi-plateforme
Windows, Linux et macOS. Un seul binaire Rust, aucune dépendance externe.
Toutes les cartes son
MOTU, RME, Focusrite, Universal Audio, Presonus, Behringer… compatible avec tout périphérique reconnu par l'OS.
Bidirectionnel
Audio du studio vers le portable ET capture micro/input du portable renvoyée au studio.
Faible latence
Streaming UDP pur avec buffers configurables (64–1024 frames). Idéal pour monitoring temps réel.
Auto-découverte
Le client trouve automatiquement les serveurs sur le réseau local via UDP broadcast.
Périphérique virtuel
La carte son distante apparaît comme un périphérique local (ALSA loopback, BlackHole, VB-Cable).
Architecture
Serveur et client reliés par trois canaux : découverte, audio, contrôle.
UDP TX · UDP RX → playbackUDP RX → lecture locale · capture → UDP TXPorts réseau
| Port | Protocole | Usage |
|---|---|---|
| 42000 | UDP | Découverte de services (broadcast JSON toutes les 3s) |
| 42001 | UDP | Flux audio (PCM f32 brut) |
| 42002 | TCP | Contrôle (messages JSON, format length-prefixed) |
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
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
Latence
Pour 48 canaux @ 48 kHz : ~55 Mbps, bien dans la capacité du Gigabit Ethernet.
| Buffer | Latence (48 kHz) | Usage |
|---|---|---|
| 64 frames | ~1.3 ms | Monitoring temps réel |
| 128 frames | ~2.7 ms | Performance optimale |
| 256 frames | ~5.3 ms | Usage standard |
| 512 frames | ~10.7 ms | Réseau non optimisé |
| 1024 frames | ~21.3 ms | Dépannage |
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.
Spécifications techniques
| Spécification | Valeur |
|---|---|
| Langage | Rust (edition 2021) |
| Compilation | Rust 1.96+, cargo build --release |
| OS supportés | Windows 10/11, Linux (kernel 5.10+), macOS 12+ |
| Architectures | x86_64 (AMD64), ARM64 (Apple Silicon natif) |
| Taux d'échantillonnage | 44.1 kHz, 48 kHz, 88.2 kHz, 96 kHz, 176.4 kHz, 192 kHz |
| Format audio | PCM f32 (32-bit float), stéréo par défaut |
| Canaux | 1 (mono) à 48 canaux simultanés |
| Buffer | 64 — 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écouverte | UDP broadcast JSON (port 42000), toutes les 3 secondes |
| Protocole audio | UDP flux PCM brut (port 42001) |
| Protocole contrôle | TCP messages JSON length-prefixed (port 42002) |
| Périphérique virtuel | ALSA snd-aloop (Linux), BlackHole (macOS), VB-Cable (Windows) |
| Interface graphique | egui / eframe (Rust), panneau de contrôle temps réel |
| Licence | MIT |
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.
Documentation
Sélectionnez un document pour afficher son contenu.
📚 Documentation RJ45 Sound Card
Sélectionnez un document pour afficher son contenu.