Phase 3.2 et 3.3 - Documentation intégrations audio professionnelles DANTE_SETUP.md: - Guide installation Dante Virtual Soundcard (DVS) - Configuration JACK pour macOS/Linux/Windows - Routing Dante Controller vers PTT Live - Configuration multi-canaux (8+ canaux) - Scripts de connexion automatique JACK - Troubleshooting latence et connectivite - Budget latence end-to-end (62-165ms) - Comparaison couts DVS vs AES67 AES67_SETUP.md: - Alternative open source gratuite a Dante - Installation driver Merging ALSA RAVENNA (Linux) - Configuration PTP (Precision Time Protocol) complete - Setup reseau (VLAN, QoS, IGMP snooping) - Configuration services systemd (ptp4l, phc2sys) - Integration JACK avec flux RTP multicast - Interoperabilite Dante mode AES67 - Configuration real-time Linux - Troubleshooting PTP sync et xruns JACK - Alternative trx pour RTP sans driver RAVENNA Fonctionnalites documentees: - Routing audio multi-canaux professionnel - Synchronisation horloge reseau (PTP) - Configuration switches manageables - Optimisations performance Linux - Budget latence < 150ms end-to-end TODO.md mis a jour: Phase 3.2 et 3.3 partiellement completees
13 KiB
Configuration AES67 avec PTT Live
Guide pour intégrer PTT Live avec des équipements AES67 (alternative open source à Dante)
Vue d'ensemble
AES67 est un standard ouvert pour le transport audio sur IP (IEEE 1722, IETF RTP). Il est interopérable avec Dante (mode AES67), Ravenna, Livewire, et d'autres protocoles audio-over-IP.
Avantages vs Dante Virtual Soundcard
| Caractéristique | AES67 | Dante (DVS) |
|---|---|---|
| Coût | Gratuit | ~300€/licence |
| Ouverture | Standard ouvert | Propriétaire Audinate |
| Complexité | Configuration CLI | GUI simple |
| Interopérabilité | Multi-vendor | Dante + AES67 mode |
| PTP sync | Requis | Optionnel |
Architecture
[Équipements AES67] ←→ [RTP Multicast] ←→ [ALSA/JACK] ←→ [PTT Live]
↓
[PTP Clock Sync]
Prérequis
Matériel
- Interface réseau Ethernet Gigabit (obligatoire)
- Switch manageable avec support :
- IGMP snooping
- PTP (Precision Time Protocol)
- QoS/DSCP
- Jumbo frames (recommandé)
Système d'exploitation
- Linux recommandé : Ubuntu 22.04+, Debian 11+, Arch Linux
- macOS possible (via outils tiers)
- Windows non supporté nativement
Logiciels
- PTPd ou linuxptp : synchronisation horloge PTP
- JACK Audio : routing audio
- Merging ALSA RAVENNA/AES67 Driver (optionnel mais recommandé)
Installation (Linux)
1. Installation des dépendances
Ubuntu/Debian
# Outils réseau et audio
sudo apt update
sudo apt install -y \
build-essential \
git \
jackd2 \
jack-tools \
qjackctl \
linuxptp \
ptp4l \
phc2sys \
ethtool \
net-tools
# ALSA dev (si compilation driver Merging)
sudo apt install -y \
libasound2-dev \
linux-headers-$(uname -r)
Arch Linux
sudo pacman -S --needed \
jack2 \
qjackctl \
linuxptp \
ethtool \
alsa-lib
2. Installation Merging ALSA RAVENNA/AES67 Driver
Ce driver crée une carte ALSA virtuelle qui envoie/reçoit des flux AES67 RTP.
Téléchargement
cd /tmp
wget https://www.merging.com/ravenna/ALSA_RAVENNA_1.2.9.tar.gz
tar -xzf ALSA_RAVENNA_1.2.9.tar.gz
cd ALSA_RAVENNA
Compilation et installation
# Compilation
make
# Installation
sudo make install
# Chargement du module kernel
sudo modprobe MergingRAVENNA
# Vérification
lsmod | grep Merging
Configuration persistante
# Charger le module au démarrage
echo "MergingRAVENNA" | sudo tee -a /etc/modules-load.d/ravenna.conf
# Reboot pour tester
sudo reboot
Configuration Réseau
1. Configuration interface réseau
AES67 nécessite une configuration réseau spécifique.
Trouver l'interface réseau
ip link show
# Exemple : eth0, enp3s0, etc.
Configuration IP statique
Éditer /etc/network/interfaces (Debian) ou /etc/netplan/01-netcfg.yaml (Ubuntu) :
Netplan (Ubuntu 22.04+) :
network:
version: 2
ethernets:
enp3s0: # Votre interface
dhcp4: no
addresses:
- 192.168.10.100/24 # IP statique dans VLAN audio
mtu: 9000 # Jumbo frames
Appliquer :
sudo netplan apply
Interfaces (Debian) :
auto eth0
iface eth0 inet static
address 192.168.10.100
netmask 255.255.255.0
mtu 9000
Appliquer :
sudo systemctl restart networking
Optimisations noyau
Éditer /etc/sysctl.conf :
# Buffers réseau pour audio temps réel
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.core.rmem_default = 16777216
net.core.wmem_default = 16777216
# Multicast
net.ipv4.igmp_max_memberships = 512
Appliquer :
sudo sysctl -p
2. Configuration Switch
Paramètres switch requis :
| Paramètre | Valeur |
|---|---|
| VLAN | 10 (exemple, dédié audio) |
| IGMP Snooping | Activé |
| PTP | Activé sur tous les ports |
| QoS/DSCP | EF (46) pour audio, CS7 (56) pour PTP |
| Jumbo Frames | MTU 9000 |
| Flow Control | Désactivé |
Configuration PTP (Precision Time Protocol)
AES67 requiert une synchronisation horloge précise (±1µs).
1. Configuration ptp4l
Créer /etc/ptp4l.conf :
[global]
dataset_comparison = ieee1588
priority1 = 128
priority2 = 128
domainNumber = 0
slaveOnly 1
two_step 1
# Configuration réseau
network_transport UDPv4
delay_mechanism E2E
# Timers
logAnnounceInterval 0
logSyncInterval -3
logMinDelayReqInterval -3
# Interface réseau (adapter selon votre système)
[enp3s0]
2. Démarrage PTP
Test manuel
# Lancer ptp4l en mode slave (synchronisé par master du réseau)
sudo ptp4l -i enp3s0 -f /etc/ptp4l.conf -m
# Dans un autre terminal : synchroniser l'horloge système
sudo phc2sys -s enp3s0 -w -m
Vous devriez voir :
ptp4l[...]: master offset -2 s2 freq -15432 path delay 125
phc2sys[...]: enp3s0 sys offset -4 s2 freq -12345 delay 1256
L'offset doit être < 1000 ns (1µs).
Service systemd
Créer /etc/systemd/system/ptp4l.service :
[Unit]
Description=PTP Daemon
After=network.target
[Service]
Type=simple
ExecStart=/usr/sbin/ptp4l -i enp3s0 -f /etc/ptp4l.conf -m
Restart=always
[Install]
WantedBy=multi-user.target
Créer /etc/systemd/system/phc2sys.service :
[Unit]
Description=PHC to System Clock Sync
After=ptp4l.service
Requires=ptp4l.service
[Service]
Type=simple
ExecStart=/usr/sbin/phc2sys -s enp3s0 -w -m
Restart=always
[Install]
WantedBy=multi-user.target
Activer :
sudo systemctl daemon-reload
sudo systemctl enable ptp4l phc2sys
sudo systemctl start ptp4l phc2sys
Vérifier :
sudo systemctl status ptp4l
sudo systemctl status phc2sys
Configuration JACK + AES67
1. Démarrage JACK avec carte ALSA RAVENNA
# Lister les cartes ALSA
aplay -l
# Devrait afficher quelque chose comme :
# card 2: RAVENNA [Merging RAVENNA], device 0: ...
Démarrer JACK avec la carte RAVENNA :
jackd -d alsa \
-d hw:RAVENNA \
-r 48000 \
-p 256 \
-n 2 \
-S \
-P
Paramètres :
-d hw:RAVENNA: carte ALSA RAVENNA-r 48000: sample rate AES67 standard-p 256: buffer size (5.3ms @ 48kHz)-n 2: 2 périodes-S: soft mode (moins de xruns)-P: playback + capture
2. Configuration QjackCtl (GUI alternative)
- Lancer
qjackctl - Setup :
- Driver : alsa
- Interface : hw:RAVENNA
- Sample Rate : 48000
- Frames/Period : 256
- Periods/Buffer : 2
- Start
3. Configuration des flux AES67
Le driver Merging RAVENNA se configure via des fichiers JSON.
Configuration RTP streams
Créer /etc/ravenna/streams.json :
{
"sources": [
{
"name": "Input_1",
"sdp": "239.69.1.1:5004",
"channels": 2,
"payloadType": 98,
"sampleRate": 48000
},
{
"name": "Input_2",
"sdp": "239.69.1.2:5004",
"channels": 2,
"payloadType": 98,
"sampleRate": 48000
}
],
"sinks": [
{
"name": "Output_1",
"sdp": "239.69.2.1:5004",
"channels": 2,
"payloadType": 98,
"sampleRate": 48000
}
]
}
Charger la configuration :
# Via l'outil Merging (si disponible)
ravenna-daemon -c /etc/ravenna/streams.json
Intégration PTT Live
1. Démarrer PTT Live
PTT Live détectera automatiquement JACK :
cd /chemin/vers/PTT\ Live/server
npm start
Logs attendus :
✓ Backend audio : JACK (Linux professionnel)
📻 Devices audio détectés : 2
- JACK System Capture (in:8, out:0)
- JACK System Playback (in:0, out:8)
2. Routing JACK
Connecter les ports JACK :
# Liste des ports
jack_lsp
# Exemple de ports disponibles :
# RAVENNA:capture_1
# RAVENNA:capture_2
# RAVENNA:playback_1
# RAVENNA:playback_2
# PTTLive:input_1
# PTTLive:output_1
# Connexion
jack_connect "RAVENNA:capture_1" "PTTLive:input_1"
jack_connect "PTTLive:output_1" "RAVENNA:playback_1"
Script automatique
Créer server/scripts/connect-aes67.sh :
#!/bin/bash
# Connexion automatique JACK ↔ AES67
echo "Connexion des canaux AES67 → PTT Live..."
for i in {1..8}; do
jack_connect "RAVENNA:capture_$i" "PTTLive:input_$i" 2>/dev/null
jack_connect "PTTLive:output_$i" "RAVENNA:playback_$i" 2>/dev/null
done
echo "✓ Routing JACK configuré"
chmod +x server/scripts/connect-aes67.sh
./server/scripts/connect-aes67.sh
Monitoring et Diagnostics
Vérification PTP
# Status PTP
sudo systemctl status ptp4l
# Offset temps réel (doit être < 1µs)
sudo ptp4l -i enp3s0 -f /etc/ptp4l.conf -m | grep "master offset"
Vérification multicast
# Afficher les groupes multicast rejoints
netstat -g
# Capture trafic RTP AES67 (exemple)
sudo tcpdump -i enp3s0 -n 'multicast and udp port 5004'
Vérification JACK
# Statistiques JACK
jack_samplerate # 48000
jack_bufsize # 256
# Xruns (buffer underruns)
jack_evmon # Surveille les xruns en temps réel
Logs driver RAVENNA
# Kernel messages
sudo dmesg | grep -i ravenna
# Logs système
sudo journalctl -u ravenna-daemon -f
Interopérabilité Dante ↔ AES67
Les équipements Dante peuvent basculer en mode AES67 pour communiquer avec des devices AES67 natifs.
Activation AES67 sur Dante
- Ouvrir Dante Controller
- Device → sélectionner équipement Dante
- Device Config → AES67 Config
- Cocher "Enable AES67"
- Configurer :
- Sample Rate : 48kHz
- Encoding : L24 (24-bit)
- Packet Time : 1ms
- Reboot device
SDP (Session Description Protocol)
AES67 utilise des fichiers SDP pour annoncer les flux.
Exemple SDP pour un flux stéréo :
v=0
o=- 123456 1 IN IP4 192.168.10.50
s=PTT Live Output
c=IN IP4 239.69.2.1/32
t=0 0
m=audio 5004 RTP/AVP 98
a=rtpmap:98 L24/48000/2
a=ptime:1
a=sync-time:0
Sauvegarder dans /etc/ravenna/pttlive-output.sdp et référencer dans la config du driver.
Optimisation Performance
Latence typique
| Étape | Latence |
|---|---|
| Réseau RTP | 1-5 ms (selon packet time) |
| Driver ALSA RAVENNA | 2-5 ms |
| JACK | 5-10 ms (256 samples @ 48kHz) |
| PTT Live bridge | 20-40 ms |
| WebRTC client | 30-100 ms |
| TOTAL | 58-160 ms |
Réduction latence
- Packet time : 0.125ms ou 0.25ms (au lieu de 1ms)
- JACK buffer : 128 samples (2.7ms au lieu de 5.3ms)
- PTT Live jitter buffer : preset "ULTRA_LOW"
Configuration JACK basse latence :
jackd -R -P 70 -d alsa -d hw:RAVENNA -r 48000 -p 128 -n 3
-R: mode real-time-P 70: priorité real-time (nécessite config/etc/security/limits.conf)
Attention : Risque de xruns si CPU/réseau surchargé.
Configuration real-time Linux
Éditer /etc/security/limits.conf :
@audio - rtprio 95
@audio - memlock unlimited
Ajouter votre utilisateur au groupe audio :
sudo usermod -a -G audio $USER
Reboot requis.
Troubleshooting
Pas de son
Vérifications :
- PTP synchronisé :
sudo ptp4l -i enp3s0 -f /etc/ptp4l.conf -m(offset < 1µs) - Driver RAVENNA chargé :
lsmod | grep Merging - JACK voit la carte :
jack_lsp | grep RAVENNA - Ports connectés :
jack_lsp -c - Flux RTP visibles :
sudo tcpdump -i enp3s0 -n multicast
Xruns JACK
Causes :
- Buffer trop petit
- CPU overload
- IRQ conflicts
Solutions :
- Augmenter buffer JACK :
-p 512au lieu de 256 - Désactiver CPU frequency scaling :
sudo cpupower frequency-set -g performance - Isoler CPU cores pour audio (kernel parameter
isolcpus)
Offset PTP trop élevé
Causes :
- Pas de PTP master sur le réseau
- Switch ne supporte pas PTP
Solutions :
- Configurer un device comme PTP master (grandmaster)
- Vérifier config switch (PTP enabled sur tous les ports)
- Utiliser un PTP hardware clock (si carte réseau compatible)
Coût Total
| Élément | Prix |
|---|---|
| Switch PTP | 200-2000€ (selon modèle) |
| Merging ALSA RAVENNA Driver | Gratuit |
| Logiciels Linux | Gratuit |
| PTT Live | Gratuit |
| TOTAL | 200-2000€ |
Bien moins cher que Dante DVS (300€/licence) si plusieurs postes.
Alternatives sans RAVENNA Driver
Utilisation de daemon RTP natif
Si le driver Merging n'est pas disponible, utiliser trx ou rtptools :
# Installation trx
git clone https://github.com/x42/trx.git
cd trx
make
sudo make install
# Réception flux RTP
trx --recv 239.69.1.1 5004 -j output_1
# Émission flux RTP
trx --send 239.69.2.1 5004 -j input_1
Ressources
- AES67 Standard : http://www.aes.org/publications/standards/search.cfm?docID=96
- Merging RAVENNA : https://www.merging.com/products/ravenna
- Linux Audio : https://wiki.linuxaudio.org/
- PTP Configuration : http://linuxptp.sourceforge.net/
Dernière mise à jour : 2026-05-26 Version PTT Live : 0.1.0 (Phase 3)