Veröffentlicht am

Wie stellst du die Datenpuffer bei USB und LAN richtig ein?

Einleitung

Jede Datenübertragung muss an den Schnittstellen gepuffert, also zwischengespeichert, werden. Sonst würde mit hoher Wahrscheinlichkeit der Datenstrom abreißen, weil die Geräte die Daten nicht synchron verarbeiten können.

Die Kunst liegt in der richtigen Einstellung der Puffergröße. Bei USB klagen manche über Knistern wie von der Schallplatte. Bei Ethernet klagen manche über Drop Outs. Die Ursache liegt in verlorenen Datenpaketen. Aber auch elektrisches Rauschen kann den Klang beeinflussen und dieses Rauschen wird auch von den Latenzen und der Bandbreite in der Datenverarbeitung bestimmt. Ebenso kann Jitter für schlechten Klang verantwortlich sein.

Viele wissen nicht, wo sie den Puffer administrieren können. Bei Linux und Mac OS wird es schwierig, da ohne Programmierkenntnisse nichts zu machen ist oder das Betriebssystem gleich ganz den Zugriff verweigert. Bei Windows sind die Einstellungen leicht zu finden.

USB

Taiko Audio USB Scripts

Taiko Audio stellte fest, dass unterschiedliche Einstellungen im USB ASIO Treiber auch unterschiedlich klingen und bietet seitdem Scripts für seine Extreme Server an. Die Scripts sind nicht öffentlich verfügbar. Der Clou dabei ist, dass die Einstellungen auf den jeweiligen DAC angepasst sind. Das verwundert auch nicht, weil die DACs unterschiedliche USB Controller verbaut haben. Für Windows werden von den DAC Herstellern in der Regel die ASIO Treiber zur Verfügung gestellt.

Was das Script von Taiko Audio im einzelnen ausführt, entzieht sich meiner Kenntnis. Ich vermute hier jedoch die Optimierung der Puffergröße, die du auch selbst durchführen kannst. Vorausgesetzt dein DAC Hersteller stellt einen ASIO Treiber zur Verfügung, der diese Einstellungen ermöglicht.

Thesycon USB Treiber

T+A hat sich zum Beispiel glücklicherweise für einen ASIO Treiber von Thesycon entschieden, der Puffereinstellungen ermöglicht. Die USB-Treiber von Thesycon gelten als die Besten. Die Thesycon Systemsoftware & Consulting GmbH ist ein deutsches Unternehmen und wurde im Juni 1998 gegründet. Es hat sich von Anfang an mit USB beschäftigt. Als Privatkunde erhältst du jedoch keine Treiber vom Unternehmen, da die DAC-Hersteller für die Verteilung selbst verantwortlich sind.

USB ASIO Puffer-Einstellungen

Im Bild unten ist links die Standardeinstellung mit einem relativ hohen Puffer zu sehen. Die Vorgabe erfolgt mit der Auswahl der bevorzugten Puffergröße. Im Beispiel sind es 512 Samples, welches ein hoher Wert ist. Nun könnte man denken, dass ein hoher Puffer eine gute Sache ist, weil mehr Daten zwischengespeichert werden. Dieser Denkansatz ist jedoch falsch, weil ein hoher Puffer die Verarbeitung verlangsamt. Warum das so ist, ergeben die nachfolgenden Berechnungen.

Beispiel Abtastrate PCM 44,1kHz (CD)

Da für die Puffergröße die Abtastrate (hier 44,1kHz) bestimmend ist, ergibt die Umrechnung für die Eingangslatenz 688 Samples und für die Ausgangslatenz 904 Samples. Latenz bedeutet zeitliche Verzögerung und folgerichtig sind in Klammern die Latenzen in Millisekunden (ms) angegeben. Eine Sekunde sind 1.000 ms. Am Eingang haben wir hohe 15,60 ms und am Ausgang 20,50 ms. Beim letzten Wert greift der Safe Mode ein, welcher die Ausgangs-Latenz erhöht.

Das andere Extrem ist die Vorgabe niedrigster Latenzen, hier mit einer bevorzugten Puffergröße von 8 Samples rechts im Bild. Im Ergebnis kommen bei 44,1kHz am Eingang 1,18 ms und am Ausgang 1,50 ms heraus.

Beispiel Abtastrate DSD64 (SACD)

Als weiteres Beispiel dient eine SACD (DSD64 = 64×44,1 kHz). Aufgrund der sehr hohen Abtastrate müssen mehr Samples in derselben Zeit verarbeitet werden, was aber bei einer moderen USB Hardware kein Problem darstellt. Die Samples werden je nach gewünschter Latenz automatisch umgerechnet.

Wenn du einmal die bevorzugte Puffergröße vorgegeben hast, gilt diese für alle Abtastraten. Es empfehlen sich daher Tests mit verschiedenen Abtastraten.

Netzwerkadapter

Netzwerk Puffer-Einstellungen

Die Puffer kannst du auch in deinem Netzwerk einstellen. Auch hier gilt, je niedriger die Bytes, desto geringer sind die Latenzen. Die Hardware und die Software müssen dafür geeignet sein. Bei der von uns angebotenen Network Interface Card (NIC) Xilinx Solarflare XtremeScale X2522 wirst du keine Probleme haben, weil diese Karte bereits vom Hersteller auf niedrigste Latenzen optimiert wurde.

Die Netzwerkeinstellungen sind unter „Systemsteuerung > Netzwerk und Internet > Netzwerk- und Freigabecenter„ zu finden. Im jeweiligen Netzwerkadapter kannst du die Verbindungsparameter kontrollieren. Unter „Eigenschaften“ und der Registerkarte „Erweitert“ sind viele Einstellungen des Netzwerkadapters möglich.

Die Eingangs-Latenz legst du mit Receive Buffers (die Bezeichnung kann je nach Hardware abweichen) fest. Beim Solarflare X2522 Adapter ist der geringsmögliche Wert 640 Bytes. Die Ausgangs-Latenz findest du unter Transmit Buffers, dort liegt der geringstmögliche Wert bei 512 Bytes.

Auswirkungen

Wir wissen jetzt, dass die Puffergröße die Latenzen beeinflusst. Also die Verarbeitungsgeschwindigkeit von Datenblock zu Datenblock. Eine geringere Puffergröße bedeutet eine geringere Latenz. Was sind nun die Auswirkungen?

Jitter

Niedrigere Latenzen veringern den Jitter!

Während die Latenz eine feste Zeit zwischen zwei Ereignissen definiert, beschreibt Jitter die Schwankungen innerhalb dieser Zeit. Im Bild unten wird das Audio Signal in Paketen versendet, welches im Originalzustand alle 5,8 ms ein Paket mit 256 Samples transportiert. Jitter kann dazu führen, dass die Samples unten im Beispiel auf bis zu 6,0 ms verlangsamt oder auf bis zu 5,6 ms beschleunigt werden. Wird die Taktung nicht korrigiert ist das hörbar. 

Nun lassen sich die Auswirkungen von Jitter vermindern, wenn die Latenzen durch einen geringeren Puffer verringert werden. Bei einer 44.1 kHz Audiodatei kann zum Beispiel der Puffer auf 52 Samples reduziert werden. Dies führt wie oben in den ASIO Puffereinstellungen gezeigt zu einer sehr geringen Latenz von 1,18 ms. Im Bild unten wird der Zusammenhang zwischen kleinem Puffer, dafür mehr Pakete und weniger Jitter (blaue Kurve) deutlich.

Packet loss

Niedrigere Latenzen minimieren das Risiko auf verlorene Datenblöcke!

In digitalen Kommunikationssystemen werden Informationen in Form von Bits (0 und 1) übertragen. Während der Übertragung können verschiedene Faktoren wie Rauschen, Interferenzen, elektromagnetische Störungen oder Signaldämpfung dazu führen, dass einzelne Bits verfälscht oder falsch interpretiert werden. Diese Verfälschungen werden als Bitfehler bezeichnet.

Die Ursache liegt in der analogen Übertragung per Hochfrequenz, wobei über verschiedene Spannungszustände die Bits (0 und 1) abgebildet werden. Siehe auch unsere Grundlagen zum Audio PC Netzwerk – Grigg Audio Solutions.

Damit solche Fehler vom Empfänger erkannt werden, schickt der Sender ein Prüfsummenprotokoll mit. Der Empfänger errechnet aufgrund der erhaltenen Werte ebenfalls eine Prüfsumme. Stimmen die Prüfsummen nicht überein, wird vom Empfänger das Datenpaket verworfen und vom Sender neu angefordert.

Die Neuanforderung ist ein zeitkritischer Vorgang. Sind die Latenzen hoch ist auch das im Puffer gespeicherte Datenpaket groß. Es steht weniger Zeit für mehr Daten zur Verfügung als bei geringeren Latenzen. Sind die Latenzen niedrig, dann sind die Datenpakete kleiner und gehen schneller auf die Reise. Biterrors können somit schneller erkannt und Datenpakete neu angefordert werden.

Im Beispiel mit den Pufferwerten von oben ist das leicht nachzuvollziehen. Bei einer Abtastrate von 44,1kHz liegt der Standard AusgangsPuffer bei 904 Samples. Das ergibt eine hohe Latenz von 20,50 ms. Bei der Einstellung niedrigster Latenzen wird der Ausgangs-Puffer auf 66 Samples gesetzt. Das Datenpaket ist damit um das 13,7-fache kleiner. Die Ausgangs-Latenz beträgt 1,50 ms und ist damit ebenfalls um das 13,7-fache geringer.

Elektrisches Rauschen

Niedrigere Latenzen bedeuten mutmaßlich weniger elektrisches Rauschen!

Die Hauptursache für elektrisches Rauschen ist die thermische Bewegung von Elektronen in einem elektrischen Leiter. Diese thermische Bewegung erzeugt kleine, zufällige Spannungs- und Stromschwankungen, die als thermisches Rauschen bezeichnet werden. Dieses Rauschen tritt unabhängig von äußeren Einflüssen auf und ist ein inhärenter Aspekt elektrischer Systeme.

Der Vorteil von niedrigen Latenzen liegt mutmaßlich in einem geringeren bzw. gleichmäßigerem elektrischen Rauschen. Bei geringen Latenzen gehen kleinere Datenpakete in einem gleichmäßigerem Fluss über die Leitung, während bei hohen Latenzen große Datenpakete in größeren Zeitabständen einen Daten Burst verursachen können, welche das elektrische Rauschen punktuell erhöhen.

CPU Belastung

Niedrigere Latenzen erhöhen die benötige Rechenleistung!

Einen Nachteil möchte ich nicht verschweigen. Die Hardware und Software müssen für eine hohe Rechenlast geeignet sein, sonst führen die häufigen Interrupts zu einer Überlastung des Systems und der Datenstrom reißt ab. Geeignet sind dafür Audio PCs mit Mehrkern-CPUs und hoher Taktrate.

Beim fis Audio PC verwenden wir die besten Intel CPUs mit 16 Kernen und 24 Threads auf dem Markt:

Außerdem optimieren wir alles auf niedrige Latenzen.

Zusammenfassung

Die Puffer kannst du sowohl bei USB, als auch beim Netzwerkadapter unter Windows in der Regel selbst einstellen. Die Puffergröße hat Auswirkungen auf die Latenzen. Ich empfehle (wie üblich ohne Gewähr) geringstmögliche Pufferwerte zu setzen, welche die Latenzen minimieren.

Niedrigste Latenzen wirken positiv auf

  • Jitter,
  • Biterrors und
  • Elektrisches Rauschen.

Der Nachteil liegt in einer höheren Belastung der CPU, die mehr Pakete berechnen und verteilen muss. In der Praxis tastest du dich mit mehreren Puffereinstellungen und unterschiedlichen Abtastraten an den stabilen Betrieb heran. Wenn dauerhaft kein Knistern, beziehungsweise keine Drop Outs zu hören sind und die Sound Qualität (SQ) zunimmt, sind die Einstellungen richtig gesetzt.

Du hast Fragen oder möchtest etwas beitragen? Schreibe uns: Kontaktformular
Oder schreibe per E-Mail an: info@griggaudio.de