Einen Raspberry Pi in einen OAAT-Audio-Endpoint verwandeln
Einen Raspberry Pi mit OAAT in einen bit-perfekten Audio-Endpoint verwandeln

Diese Anleitung führt Sie Schritt für Schritt durch die Konfiguration eines Raspberry Pi 3B+ oder 4 als High-Fidelity-Audio-Endpoint mit dem OAAT-Protokoll (Open Advanced Audio Transport).
OAAT ist ein Open-Source-Protokoll, das als offene Alternative zum proprietären RAAT von Roon konzipiert wurde:
- Bit-perfektes Audio — PCM bis 768 kHz / 32 Bit, natives DSD bis DSD512
- Multiroom-Synchronisation — unter 1 ms zwischen Endpoints, über PTP-Clock
- Formataushandlung — der Controller passt sich automatisch an die Fähigkeiten des DAC an
- Gapless — nahtlose Übergänge, selbst bei einem Formatwechsel
- Zero-Config — Discovery über mDNS/DNS-SD, keine IP-Eingabe nötig
- Open Source — Apache 2.0, Rust-Code auf GitHub
OAAT vs. andere Protokolle
- OAAT: Open Source, bit-perfekt, natives DSD, Multiroom-Sync unter 1 ms
- RAAT (Roon): bit-perfekt, DSD, Multiroom — aber proprietär und geschlossen
- DLNA/UPnP: Open Source — aber keine Multiroom-Sync, unzuverlässiges Gapless, DSD nur als DoP
- AirPlay 2: Apple-Multiroom — aber nicht bit-perfekt, kein DSD, geschlossenes Ökosystem
Der Raspberry Pi ist der ideale Begleiter: 35–75 €, lautlos (kein Lüfter), mit einem nativen I2S-Bus, der den DAC direkt an den GPIO anbindet — der kürzeste und reinste Audioweg.
OAAT-Architektur
graph LR
A["🎵 Tune Server
(Controller)"] -->|"TCP :9740
JSON-Steuerung"| B["🔊 RPi Endpoint
(DAC I2S)"]
A -->|"UDP :9741
Audio PCM/FLAC"| B
A <-->|"UDP :9742
Clock-Sync PTP"| B
B -->|"I2S GPIO"| C["🎧 DAC
ESS 9038 / HifiBerry / ..."]
C --> D["🔈 Verstärker + Lautsprecher"]
style A fill:#4a90d9,stroke:#333,color:#fff
style B fill:#50c878,stroke:#333,color:#fff
style C fill:#f5a623,stroke:#333,color:#fff
style D fill:#e8e8e8,stroke:#333,color:#333
Benötigte Hardware
Der Raspberry Pi
- RPi 4B (2 oder 4 GB) — PCM max.: 384 kHz / 32 Bit — ✅ Empfohlen
- RPi 3B+ — PCM max.: 192 kHz / 32 Bit — Budget / gebraucht
- RPi 5 — PCM max.: 384 kHz / 32 Bit — funktioniert ebenfalls
Der RPi 3B+ ist durch seinen I2S-Bus auf 192 kHz begrenzt. Für höhere Hi-Res-Raten (352,8 / 384 kHz) sollten Sie den RPi 4 wählen.
Der I2S-DAC (HAT)
OAAT unterstützt alle Raspberry-Pi-kompatiblen I2S-DACs. Hier die gängigsten:
- Audiophonics ESS 9038Q2M (ESS ES9038Q2M) — 384 kHz / 32 Bit — ~120 € — Overlay:
i-sabre-q2m— Linux-Treiber - HifiBerry DAC2 HD (PCM1796) — 192 kHz / 24 Bit — ~65 € — Overlay:
hifiberry-dacplushd - HifiBerry DAC+ Pro (PCM5122) — 192 kHz / 32 Bit — ~45 € — Overlay:
hifiberry-dacplus - Allo Boss (PCM5122) — 384 kHz / 32 Bit — ~50 € — Overlay:
allo-boss-dac-pcm512x-audio - IQaudio DAC+ (PCM5122) — 192 kHz / 24 Bit — ~30 € — Overlay:
iqaudio-dacplus - JustBoom DAC HAT (PCM5122) — 384 kHz / 32 Bit — ~35 € — Overlay:
justboom-dac
⚠️ Wichtig: Das Linux-Overlay muss exakt zu Ihrem DAC passen. Ein falsches Overlay = kein Ton (ALSA-Fehler -121 oder -22).
Zubehör
- microSD-Karte: mindestens 8 GB (16 GB empfohlen)
- Netzteil: offizielles RPi-Netzteil oder 5V/3A USB-C (RPi 4) / Micro-USB (RPi 3)
- Ethernet-Kabel: empfohlen für stabile Audiowiedergabe (WLAN funktioniert, fügt aber ~50 ms Jitter bei der Clock-Sync hinzu)
- Gehäuse (optional): Audiophonics bietet integrierte Gehäuse für Pi + DAC an
SD-Karte flashen
1. Raspberry Pi Imager installieren
- macOS:
brew install --cask raspberry-pi-imager - Windows: Installer herunterladen
- Linux:
sudo apt install rpi-imager
2. Konfigurieren und flashen
- Raspberry Pi Imager öffnen
- Gerät wählen: Raspberry Pi 3 oder 4
- Betriebssystem wählen:
Raspberry Pi OS (other)→ Raspberry Pi OS Lite (64-bit) — der Desktop wird nicht benötigt - Speicher wählen: Ihre microSD-Karte
- Auf das Zahnrad (⚙️) klicken, um zu konfigurieren:
- Hostname:
oaat-endpoint - SSH aktivieren: ja, mit Passwort
- Benutzername / Passwort: nach Wunsch
- WLAN: konfigurieren, falls kein Ethernet vorhanden
- Zeitzone:
Europe/Paris
- Hostname:
- Flashen — dauert 2–3 Minuten
3. Erster Start
- SD-Karte in den Pi einsetzen
- DAC-HAT auf den GPIO stecken (falls noch nicht montiert)
- Ethernet + Netzteil anschließen
- 1–2 Minuten warten (der erste Boot dauert etwas länger)
- Per SSH verbinden:
ssh pi@oaat-endpoint.local
Tipp: Um die IP des Pi zu finden, schauen Sie in die Oberfläche Ihres Routers oder nutzen Sie arp -a | grep raspberry.
Installation
Überblick über den Ablauf
flowchart LR
A["📥 SD flashen
RPi Imager"] --> B["🔌 Boot + SSH"]
B --> C["⚙️ setup.sh
DAC-Auswahl"]
C --> D["🔄 Reboot"]
D --> E["✅ Endpoint aktiv
im Netzwerk sichtbar"]
style A fill:#e8e8e8,stroke:#333
style B fill:#e8e8e8,stroke:#333
style C fill:#f5a623,stroke:#333,color:#fff
style D fill:#e8e8e8,stroke:#333
style E fill:#50c878,stroke:#333,color:#fff
Automatische Installation (empfohlen)
Ein einziger Befehl installiert alles:
curl -sL https://raw.githubusercontent.com/renesenses/oaat/main/dist/rpi/setup.sh | sudo bash
Das Skript fragt Sie nach Ihrem DAC aus 6 unterstützten Modellen und führt dann Folgendes aus:
- Installiert die Systemabhängigkeiten (ALSA, Build-Tools)
- Konfiguriert das DAC-Overlay in
/boot/config.txt - Konfiguriert ALSA (
/etc/asound.conf) - Installiert Rust und kompiliert OAAT aus den Quellen
- Installiert den systemd-Service
Kompilierzeit:
- RPi 4: ~8 Minuten im Release-Modus
- RPi 3B+: ~20 Minuten im Release-Modus (das Skript verwaltet den Swap automatisch)
Nach der Installation:
sudo reboot
Der Reboot ist nötig, um das DAC-Overlay zu aktivieren. Nach dem Neustart startet der OAAT-Service automatisch.
Manuelle Installation (Schritt für Schritt)
Falls Sie jeden Schritt selbst kontrollieren möchten:
1. Systemabhängigkeiten
sudo apt-get update
sudo apt-get install -y libasound2 libasound2-dev alsa-utils curl git build-essential pkg-config
2. DAC konfigurieren
/boot/firmware/config.txt bearbeiten (bzw. /boot/config.txt, je nach OS-Version):
# Onboard-Audio deaktivieren
#dtparam=audio=on
# Ihr DAC — NUR EINE Zeile einkommentieren:
dtoverlay=i-sabre-q2m # Audiophonics ESS 9038Q2M
#dtoverlay=hifiberry-dacplus # HifiBerry DAC+ / DAC+ Pro
#dtoverlay=hifiberry-dacplushd # HifiBerry DAC2 HD
#dtoverlay=allo-boss-dac-pcm512x-audio # Allo Boss
#dtoverlay=iqaudio-dacplus # IQaudio DAC+
#dtoverlay=justboom-dac # JustBoom DAC HAT
3. ALSA konfigurieren
sudo tee /etc/asound.conf << 'EOF'
pcm.!default {
type hw
card 0
device 0
format S32_LE
}
ctl.!default {
type hw
card 0
}
EOF
4. Rust installieren und kompilieren
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source ~/.cargo/env
sudo mkdir -p /opt/oaat
sudo chown $USER:$USER /opt/oaat
git clone https://github.com/renesenses/oaat.git /opt/oaat/src
cd /opt/oaat/src
cargo build --release --bin oaat
cp target/release/oaat /opt/oaat/oaat
cp dist/rpi/endpoint.toml /opt/oaat/endpoint.toml
5. systemd-Service und Reboot
sudo cp dist/oaat-endpoint.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable oaat-endpoint
sudo reboot
Konfiguration
Die Konfigurationsdatei befindet sich unter /opt/oaat/endpoint.toml:
[endpoint]
# In Tune und bei der mDNS-Discovery angezeigter Name
name = "Salon DAC"
port = 9740
[capabilities]
# An Ihren DAC anpassen:
pcm_max_rate = 384000 # Hz (384000, 192000...)
pcm_max_bits = 32 # Bit (32, 24)
channels_max = 2
dsd = false
flac = true # Empfohlen: reduziert die Bandbreite um ~50 %
[logging]
level = "info"
Tipps:
pcm_max_rate: Geben Sie nicht mehr an, als Ihr DAC tatsächlich unterstützt. OAAT handelt automatisch nach unten, wenn die Quelle darüber liegt.flac = true: empfohlen, besonders über WLAN. FLAC ist verlustfrei, also null Qualitätsverlust, und reduziert die Bandbreite um ~50–60 %.name: Wählen Sie einen sprechenden Namen — er erscheint in Tune als Wiedergabezone.
Beispiele je DAC
Audiophonics ESS 9038Q2M:
[endpoint]
name = "Audiophonics ESS 9038"
[capabilities]
pcm_max_rate = 384000
pcm_max_bits = 32
channels_max = 2
flac = true
HifiBerry DAC+ Pro / DAC2 HD:
[endpoint]
name = "HifiBerry DAC"
[capabilities]
pcm_max_rate = 192000
pcm_max_bits = 24
channels_max = 2
flac = true
Allo Boss / JustBoom:
[endpoint]
name = "Allo Boss DAC"
[capabilities]
pcm_max_rate = 384000
pcm_max_bits = 32
channels_max = 2
flac = true
Audiophonics ESS 9038Q2M — technische Details
Der ES9038Q2M unterstützt die Formate S16_LE und S32_LE, Abtastraten bis 384 kHz (im DSD-Modus sogar 1,536 MHz) und bietet erweiterte ALSA-Regler:
- Digitale Lautstärke: 0–100 (−100 dB bis 0 dB)
- FIR-Filter: 7 Typen (Brick Wall, Minimum Phase, Linear Phase ...)
- Eingangswahl: I2S / SPDIF
Der Linux-Treiber nutzt die I2C-Adresse 0x48. Auf aktuellem Raspberry Pi OS Bookworm ist das Overlay i-sabre-q2m in der Regel im Kernel enthalten. Bei einem älteren Kernel kompilieren Sie das Modul aus dem Audiophonics-Repository:
sudo apt-get install -y raspberrypi-kernel-headers
git clone https://github.com/audiophonics/I-Sabre_9038Q2M.git /tmp/i-sabre
cd /tmp/i-sabre
make
sudo make install
sudo reboot
Überprüfung und erster Ton
1. Prüfen, ob der DAC erkannt wird:
aplay -l
# Muss Ihren DAC als Karte 0 anzeigen
2. Ton direkt testen (ohne OAAT):
speaker-test -D hw:0,0 -c 2 -t sine -f 440
# Sie sollten ein A mit 440 Hz hören — Ctrl+C zum Beenden
3. OAAT-Service prüfen:
sudo systemctl status oaat-endpoint
# Active: active (running)
4. mDNS-Discovery prüfen (von einem anderen Gerät aus):
# macOS
dns-sd -B _oaat._tcp
# Linux
avahi-browse -r _oaat._tcp
5. Erster Ton über OAAT!
Von Ihrem Computer aus (mit installiertem oaat-CLI):
# Sinuston 440 Hz für 5 Sekunden
oaat controller --target IP_DU_PI:9740 --freq 440 --duration 5
Wenn Sie das A mit 440 Hz hören: Ihr OAAT-Endpoint funktioniert und ist bit-perfekt! 🎉
6. Vollständiger Konformitätstest:
oaat-test IP_DU_PI:9740
# OAAT Conformance Test
# [Handshake] 4 PASS
# [Capabilities] 4 PASS
# [Format Nego] 3 PASS (accept, counter, reject)
# [Clock Sync] 1 PASS
# [Audio] 1 PASS
# [Gapless] 2 PASS (same format, diff format)
# [Volume] 3 PASS
# [Reconnect] 2 PASS
# 20 tests: 20 passed — Endpoint is CONFORMANT
Einsatz mit Tune
Tune ist ein selbstgehosteter Musikserver mit nativer OAAT-Integration.
Läuft Tune im selben lokalen Netzwerk wie Ihr RPi, erscheint der OAAT-Endpoint automatisch als Wiedergabezone in der Weboberfläche. Eine zusätzliche Konfiguration ist nicht nötig.
Der OAAT-Endpoint hat in Tune Vorrang vor DLNA und AirPlay, da er den direktesten und klangtreuesten Audioweg bietet.
Die Formataushandlung ist vollständig transparent:
- Quelle in 24/96, DAC unterstützt 384/32 → Wiedergabe nativ in 24/96 (kein unnötiges Upsampling)
- Quelle in 24/192, DAC unterstützt max. 96 → Tune downsampelt auf 24/96 (gleiche 48-kHz-Familie)
- Quelle in DSD, DAC unterstützt kein DSD → transparente PCM-Konvertierung
Troubleshooting
Kein Ton
aplay -llistet keine Karte → DAC-Overlay fehlt oder ist falsch./boot/firmware/config.txtprüfen, Overlay korrigieren, rebooten.speaker-testliefert Fehler-121→ falsches Overlay für diesen DAC. Ein anderes Overlay ausprobieren (siehe Liste oben).speaker-testfunktioniert, OAAT aber nicht → Service nicht gestartet oder falsche Konfiguration. Prüfen mitsystemctl status oaat-endpointundjournalctl -u oaat-endpoint -f.- Knistern oder Aussetzer → instabiles WLAN. Auf Ethernet wechseln.
Der Endpoint wird von Tune nicht gefunden
- Prüfen, ob Tune und der RPi im selben Subnetz sind
- Bei Nutzung eines VPN (NordVPN etc.):
nordvpn set lan-discovery onaktivieren - Firewall prüfen: die Ports 9740 (TCP), 9741 (UDP), 9742 (UDP) und 5353 (mDNS) müssen offen sein
- mDNS-Discovery manuell testen (siehe Abschnitt Überprüfung)
Der Service startet nicht
# Detaillierte Logs ansehen
journalctl -u oaat-endpoint -f
# Häufige Fehler:
# "No such device" → DAC nicht erkannt, Overlay prüfen + Reboot
# "Address already in use" → ein anderer Prozess nutzt Port 9740
# "Permission denied" → User in der Service-Datei prüfen
RPi 3 vs. RPi 4
- PCM max. über I2S: RPi 3B+ = 192 kHz / RPi 4 = 384 kHz
- Kompilierzeit: RPi 3 ~20 Min. / RPi 4 ~8 Min.
- RAM: RPi 3 = 1 GB (Swap empfohlen) / RPi 4 = 2–8 GB
- Ethernet: RPi 3 = 100 Mbit/s (über USB) / RPi 4 = natives Gigabit
Der RPi 3B+ funktioniert einwandfrei für 16/44,1 (CD) bis 24/192 (Hi-Res). Wenn Sie hauptsächlich FLAC in CD-Qualität oder Qobuz 24/96 hören, reicht ein gebrauchter RPi 3 für 25 € völlig aus.
Audiophonics ESS 9038Q2M: Overlay nicht auffindbar
Auf manchen Raspberry-Pi-OS-Versionen ist das Overlay i-sabre-q2m nicht im Kernel enthalten. Symptom:
dtoverlay: failed to apply overlay 'i-sabre-q2m'
Lösung: den Treiber aus den Quellen kompilieren (siehe Abschnitt Konfiguration oben).
Weiterführendes
Endpoint aktualisieren
cd /opt/oaat/src
git pull
cargo build --release --bin oaat
cp target/release/oaat /opt/oaat/oaat
sudo systemctl restart oaat-endpoint
Synchronisiertes Multiroom
Zwei (oder mehr) Raspberry Pi im selben Netzwerk lassen sich auf unter 1 ms genau synchronisieren:
graph TD
A["🎵 Tune Server"] -->|"gleicher PTS"| B["🔊 RPi #1 — Wohnzimmer
ESS 9038Q2M"]
A -->|"gleicher PTS"| C["🔊 RPi #2 — Küche
HifiBerry DAC+"]
A -->|"gleicher PTS"| D["🔊 RPi #3 — Schlafzimmer
Allo Boss"]
B <-->|"Clock-Sync
PTP"| A
C <-->|"Clock-Sync
PTP"| A
D <-->|"Clock-Sync
PTP"| A
E["⏱️ Sync < 1 ms
zwischen allen Endpoints"]
style A fill:#4a90d9,stroke:#333,color:#fff
style B fill:#50c878,stroke:#333,color:#fff
style C fill:#50c878,stroke:#333,color:#fff
style D fill:#50c878,stroke:#333,color:#fff
style E fill:#fff3cd,stroke:#f5a623,color:#333
Jeder Endpoint erhält dieselben Audiopakete mit demselben Presentation Timestamp (PTS). Die PTP-Synchronisation korrigiert automatisch die Taktunterschiede zwischen den Pi.
In Tune genügt es, eine Zone anzulegen, die mehrere Endpoints gruppiert, um Multiroom zu aktivieren.
Netzwerkperformance
- PCM 16/44,1 Stereo: 1,41 Mbit/s
- PCM 24/192 Stereo: 9,22 Mbit/s
- PCM 32/384 Stereo: 24,58 Mbit/s
- FLAC 24/192 Stereo: ~4 Mbit/s (Kompression ~50 %)
Für synchronisiertes Multiroom wird Ethernet empfohlen. Für einen einzelnen Endpoint ist WLAN völlig in Ordnung.
Komplett headless
Das hier beschriebene Setup ist bereits zu 100 % headless. Einmal geflasht und gestartet, arbeitet der Pi autonom:
- Der OAAT-Service startet beim Boot
- Automatischer Neustart bei einem Absturz (systemd
Restart=always) - Automatische Wiederverbindung, wenn der Controller die Verbindung verliert
- Updates per SSH möglich
Nützliche Links:
- OAAT-Quellcode (Apache 2.0)
- OAAT-RFC-Spezifikation
- Audiophonics-Treiber ESS 9038Q2M
- Audiophonics — I2S-DACs und RPi-Gehäuse
Anleitung verfasst von MozAIk Labs — Mai 2026