projekte:2025:usb_to_spdif

USB zu S/PDIF Adapter

Ein Projekt von: H3

Je nach Betriebssystem und Software gibt es unterschiedliche Lösungen um Audio auf die Musikanlagen des Space zu bekommen. Chromecast für Android mit Google Diensten, AirPlay für Apple-Geräte. Wer diese Protokolle nicht unterstützt kann sich per HDMI Verbinden. Viele Smartphones unterstützen jedoch keine Videoausgabe über ihren USB-Anschluss. Mittlerweile ist auch die 3.5mm-Klinkenbuchse selten verbaut. Übrig bleibt Audio über USB, was von fast allem beherrscht wird. Eine USB-Soundkarte mit Klinkenbuchse würde hier eine einfache Lösung bieten, kommt jedoch mit einem Problem: Brummen. Eine Längere Verbindung wie sie vom Verstärker auf der Brücke zur Couch nötig wäre fängt erfahrungsgemäß zu viele Störungen auf. Ich finde es macht mehr Sinn, die Übertragungskette bis zum Verstärker digital zu halten. Daher habe ich diese Lösung entwickelt:

Auf einem RP2040 läuft eine modifizierte Version der FoxDAC-Firmware, aus der alles entfernt wurde was nicht zur USB oder S/PDIF funktionalität gehört.

Zur Zeit ist auf Windows-Geräten noch keine Lautstärkeregelung möglich. Im Gegensatz zu Linux Mint 22, lehnen Windows 10 und 11 USB-Audio-Geräte ab, welche keine Hardware-Lutstärkerregelung bieten. Da hier aber kein Kopfhörerverstärker mit seuerbarem Ausgabelevel existiert, müssten die Audio-Daten skaliert werden. Ich habe mich bis jetzt noch nicht genug mit der modifizierten Firmware beschäftigt, um dies zu Implementieren. Ziel ist es, die Lautstärker des DENON-Verstärkers direkt über RS232 zu steuern, und diese Befehle z.B. über eine andere Lichtfarbe in Richtung Verstärker zu übertragen.

Ein Kabelkanal mit einer USB-C Buchse zwischen einer Steckdose und Ethernetdose. Die USB-C Buchse ist mit einem Wiki-to-Label-Tag versehen, und mit "AUDIO IN: USB/AUX" beschriftet. Ein schwarz-weisses Kabel ist eingesteckt.

Standort: ReplikatorRaum

Die neuste Version ist komplett in den Kabelkanal integriert. Ein mehrere Meter langer Lichtleiter (danke Kai) im Kabelkanal verbindet den Adapter mit dem Verstärker. Hier kommt wie bei V1.5 eine rote LED mit 3D-gedruckter TOSLINK-Buchse zum Einsatz.

Ansicht von Oben, ohne Schumpfschlauch. Ein USB-C Kabel ist in ein RP2040-Nano Board eingesteckt. Auf der unterseite ist ein aus der anderen RIchtung zeigendes TOSLINK-Kabel eingesteckt. Ansicht von Unten, ohne Schumpfschlauch. Man sieht nun, dass das TOSLINK-Kabel in einen passenden Transmitter gesteckt wurde. Dünne Drähte vom Board, sowie ein Widerstand sind mit dem Transmitter verbunden.

Standort: Brücke

Diese Version ist deutlich kompakter, da ein „RP2040-Pico“-Board zusammen mit einem TOTX195 TOSLINK-Transmitter verwendet wird. Es nimmt einen Bruchteil der Fläche ein (siehe Bild).

TOTX195 Pin RP2040-PICO Pin
1 (GND) GND
2 (I_set) 5V über 9.8k Widerstand (siehe Datenblatt)
3 (V_cc) 5V
4 (IN) 15 (S/PDIF Output)

Erweiterung: Akku aufladen und gleichzeitig Musik abspielen

Innenansicht einer grauen Abzweigdose. Ein rotes USB-C breakout-Board, ein schwarzes USB-C-splitter-Board, sowie ein schwarzer Spannungsregler sind mit Heißkleber befestigt. Kabel verbinden sie.

Um gleichzeitig den Akku des Smartphones laden zu können wurde eine Adapterbox aus Resten zusammengebaut. Ein USB-C Lade- und Kopfhörer-Adapter mit beschädigter Audioschaltung wird wiederverwendet, um per USB-C Power-Delivery auszuhandeln, dass ein Smartphone bis zu 12V vom Netzteil anfrägt und gleichzeitig seinen USB-Anschluss auf Host-Modus schaltet. Dazu wied in das Adapterboard ein Netzteil eingesteckt und die CC-Leitung (für USB-PD-Kommunikation) an das Handy durchgereicht. Die USB-Datenleitungen D+/D- werden aber zum RP2040 abgezweigt, statt diese mit der defekten Audioschaltung des Adapterboards zu verbinden. Somit lädt das Smartphone und erkennt gleichzeitig den RP2040 als Kopfhörer. Da sich die Stecker von USB-C Kabel auf Dauer abnutzen wird das Kabel zum Handy mit einer Buchse an der Box verbunden, anstatt es fest zu verlöten. So ist es einfach wechselbar. USB-C-Buchsen haben normalerweise 2 CC-Pins verbunden, da ein Kabel, welches nur eine CC-Leitung hat, je nach Drehung entweder den einen oder den anderen CC-Pin der Buchse benutzt. Da das Adapterboard jedoch ursprünglich eine integriertes Kabel hatte, hat es nur einen CC-Pin. Da nur ein CC-Pin der Buchse verbunden ist, funktioniert das Kabel zum Handy nur in einer Drehrichtung. Man könnte beide CC-Pins der Buchse miteinander verbinden, was jedoch zu Problemen mit Kabeln über 60W Maximalleistung führt, denn diese haben im Stecker einen Chip um die Maximal zulässigen Werte des Kables zu Speichen. Diese Chip versorgt sich über den zweiten CC-Pin und stört den CC-Bus wenn beide CC-Pins miteinander verbunden sind. Da dieses Verhaltenvermutlich verwirrender ist, als den Stecker drehen zu müssen, wurde sich hierfür entschieden.

Flussdiagramm

 Flussdiagramm, welches das eben beschriebene visualisiert.

Ein recht großes, grünes PCB (Design: Nikolai Müller), eigentlich zur ansteuerung von Neopixel-LEDs gedacht. Darauf sind recht hässlich ein Spannungsteiler, Kondensator und  Coax-Buchse, sowie eine 3D-gedruckte TOSLINK-Buchse angebracht. Wie vorheriges, nun mit leuchtender power- und TOSLINK-LED. Beide rot.

Standort: Replikatorraum

Das gleiche Entwicklungsboard wie in V1 wird verwendet, jedoch hat es nun eine zusätzliche Coax-Buchse und einen 3D-gedruckten Adapter von 3mm-LED zu TOSLINK-Kabel.

 Selbiges Neopixel-Dev-Board. Mit Panzertape ist ein TOSLINK-Kabel vor eine gelbe LED geklebt.

(zu V1.5 aktualisiert)

Am Pin des S/PDIF-Ausgang ist eine LED angeschlossen, welche in ein TOSLINK-Kabel leuchtet. Dieses ist mit dem Verstärker verbunden. Aktuell ist ein recht großes Entwicklungsboard von N.M. im Einsatz, da Ich nichts anderes mit einem RP2040 übrig hatte. Auch ist die Ausrichtung der LED mit dem TOSLINK-Kabel nicht stabil. Beides wird in Zukunft verbessert.

  • projekte/2025/usb_to_spdif.txt
  • Zuletzt geändert: 2026/03/20 16:50
  • von hacker3000