Hallo zusammen, ich möchte fragen, ob es grundsätzlich möglich ist, einen USB-Proxy bzw. USB-Adapter zu entwickeln, der einen USB-Audio-Dongle transparent durchreicht und bei Bedarf logisch vom Host trennt und später wieder verbindet. Hintergrund ist folgender: Wireless-Headsets mit USB-Dongle (in meinem Fall ein SteelSeries Arctis Nova 5P) bleiben sowohl unter Windows als auch an der PlayStation 5 als aktives USB-Audiogerät angemeldet, obwohl das Headset ausgeschaltet ist. Dadurch erfolgt keine automatische Rückschaltung auf die Lautsprecher, solange der Dongle eingesteckt bleibt. Nach mehreren Tests (verschiedene USB-Ports, Firmware-Updates, Windows und PS5) sowie Rückmeldungen des Herstellers scheint dieses Verhalten beabsichtigt zu sein und nicht auf einen Defekt zurückzuführen. Die Idee wäre nun, einen universellen Adapter zwischen Host (PC, Konsole usw.) und dem USB-Dongle zu entwickeln. Dieser soll erkennen, dass das Headset nicht mehr aktiv ist, den Dongle gegenüber dem Betriebssystem logisch trennen und beim erneuten Einschalten des Headsets automatisch wieder verbinden – ganz ohne manuelles Ausstecken. Mir geht es ausdrücklich nicht um einen Workaround oder um Einstellungen an der PS5 oder unter Windows, sondern ausschließlich um die technische Machbarkeit eines solchen Geräts. Meine Fragen wären daher: * Ist ein solcher USB-Proxy grundsätzlich realisierbar? * Kann ein Mikrocontroller einen USB-Dongle transparent zwischen Host und Gerät durchreichen und bei Bedarf eine Trennung bzw. erneute Enumeration auslösen? * Welche Hardware- und Softwarekenntnisse wären für einen ersten Prototypen erforderlich? * Gibt es bereits ähnliche Projekte oder Open-Source-Ansätze, auf denen man aufbauen könnte? Ich freue mich über jede technische Einschätzung. Sollte sich herausstellen, dass die Idee grundsätzlich realisierbar ist, könnte ich mir vorstellen, daraus einen ersten Prototypen zu entwickeln. Vielen Dank im Voraus
Michi schrieb: > Dieser soll erkennen, dass das > Headset nicht mehr aktiv ist Und ... wie soll er das tun?
Harald K. schrieb: > Und ... wie soll er das tun? Langes Kabel vom Headset zu der Kiste mit dem Dongle-Abschalt-Relais.
evtl. über den „Verlust“ der 2,4Ghz Verbindung? Sobald das headset aus ist löst sich doch die Verbindung? Es müsste ein internes Signal im dongle geben der dann die Stromversorgung löst
Headsetbuchsen haben oft einen Kontakt, mit welchem beim Einstöpseln Schalthandlungen durchgeführt werden. Damit einfach die 5 Volt USB-Spannung für den Audio-Dongle ein- und ausschalten. Dazu in der +Ub eine Trennstelle einbauen.
:
Bearbeitet durch User
Michi schrieb: > Es müsste ein internes Signal im dongle geben der dann die > Stromversorgung löst Dann finde heraus, wie du an dieses Dignal heran kommst. Idealerweise elektrisch, nicht per Software/USB-Kommunikation.
Michi schrieb: > Die Idee wäre nun, einen universellen Adapter zwischen Host (PC, Konsole > usw.) und dem USB-Dongle zu entwickeln. Dieser soll erkennen, dass das > Headset nicht mehr aktiv ist, den Dongle gegenüber dem Betriebssystem > logisch trennen und beim erneuten Einschalten des Headsets automatisch > wieder verbinden – ganz ohne manuelles Ausstecken. Kriegst du nicht hin. Es gibt zwar Soundkarten, die erkennen können ob ein Gerät am Audio-Port steckt und so bei (Nicht)vorhandensein des Kopfhörers das Audio-Signal entsprechend routen. Aber das geht eben nur über die Buchsenbelegung. Im Prinzip könnte eine solche Soundkarte das dann gegenüber dem Host kommunizieren. Aber: das ist ein Eingriff in die grundlegende Funktionsweise des USB-Audio Adapters. Wenn der das nicht von Haus aus kann, geht das nicht nachzurüsten. Und ob du nun das Headset aus den Adaper ausstöpselst oder gleich den ganzen Adapter rausziehst, bleibt gehüpft wie gesprungen. Was klappen könnte, wäre ein USB-Hub der zwischen 2 Upstream USB-Hosts umgeschaltet werden kann. Z.B. https://www.amazon.de/dp/B0DGFC4MWK
Würde man sowas auch nicht hinbekommen, wenn man so ein Gerät selbst entwickeln könnte? Also von Grund auf.
Michi schrieb: > Würde man sowas auch nicht hinbekommen, wenn man so ein Gerät selbst > entwickeln könnte? Also von Grund auf. Natürlich. Headsets mit so 2.4GHz-Nicht-Bluetooth-Dongles von anderen Herstellern machen das ja. (Also nicht das komplett abschalten/disconnecten. Aber über ein zusätzliches HID-Interface teilt der Dongle dem Betriebssystem mit, ob das Headset verbunden ist oder nicht, das kann daraufhin den Audio-Kanal umschalten)
Hast du dafür evtl. einen Link und wie funktioniert das in der Praxis? Das würde evtl. mein Problem lösen, weil genau das kann die Software meiner PlayStation nicht.
Michi schrieb: > Das würde evtl. mein Problem lösen, weil genau das kann die Software > meiner PlayStation nicht. Verstehe ich nicht. Wenn die Playstation das nicht kann, wie löst es (das zusätzliches HID-Interface) dann dein Problem?
Michi schrieb: > Hast du dafür evtl. einen Link Such nach "USB Audio Class 2.0 Specification" (beim USB-IF), dort bei "Terminal Descriptor" o.Ä. Das wäre der "Native Weg", rein mit dem Klassentreiber. > und wie funktioniert das in der Praxis? Hängt stark von den verwendeten Chips (und deren Firmware) ab. Beliebt sind z.B. die Chips von Zhuhai Jieli Technology Co., weil billig. Gibt leider kaum Dokumentation dafür, alles unter NDA... Die könnten das, wenn in der Firmware aktiviert. Die meisten Hersteller nehmen aber nur deren Beispiel-Firmware, tauschen den Vendor-String im Descriptor aus und sind fertig. Dann geht das nicht, und das Dongle meldet einen ganzen Zoo an Tasten, die weder am Dongle noch am Headset überhaupt vorhanden sind. Bei Steelseries wäre die Info die du suchst in einem HID-Raw-Report. Vermutlich. Inoffiziell reverse-engineered: Bei Arctis 1 im zweiten Byte, das ist 0x01 wenn disconnected. Bei Arctis 9 im ersten und zweiten Byte, 0xAA 0x01 ist connected. Bei Arctis 5: Selber suchen... Problem: Das mit dem HID-Report ist schön und gut, wenn du einen passenden Treiber hast. Wenn du nur den Standard-USB-Audio-Klassentreiber benutzt (was die Playstation wohl machen wird), hilft das nicht weiter.
:
Bearbeitet durch User
Vielleicht könnte ein anderes System brauchbarer sein? An der grünen Klinkenbuchse und Strom/Daten von USB eine kleine Umschaltbox (...)
Eine Lösung zum dazwischenstöpseln könnte man z.B. aus einem RasPi (4B, 5) basteln, so als Prototyp. Der kriegt als USB-Host den Empfänger-Dongle, und stellt als USB-Gadget ein Audio-Interface für PC oder PS bereit, was dann natürlich per Software auch disconnected werden kann. Vorteile: - Du bist frei in der Trigger-Wahl, wann du zum PC hin abschaltest. z.B. wenn länger kein Batteriestand vom Headset mehr gemeldet wird, wenn das Mic komplett stumm ist (ganz ohne Rauschen), wenn spezielle HID-Events kommen usw. - Du kannst den RasPi nebenbei noch was rechnen lassen, z.B. DSP-Filter wie Echo-Cancel, Noise-Suppression, Equalizer, … Nachteile: - Hardware wäre ziemlicher Overkill - du kriegst ca. 40ms Latenz dazu Wenn du das am RasPi am laufen hast, kannst du überlegen das auf einen µC zu portieren. Größenordnung STM32H7, vielleicht reicht sogar STM32F4. Die haben zwei USB-Ports, ST USB Device Library und ST USB Host Library kannst du im CubeMX reinklicken...
.● Des|ntegrator ●. schrieb: > An der grünen Klinkenbuchse und Strom/Daten von USB > eine kleine Umschaltbox (...) Wo hat USB denn eine grüne Klinkenbuchse? Das Headset läuft doch komplett ohne Analogteil am PC.
Warum der ganze Aufwand, meist reicht es doch schon, wenn man die 5V des Dongles trennt. Das Headset liegt dann z.B. auf einer Ablage mit Magnetschalter o.ä. und schaltet eben diese 5V.
Rahul D. schrieb: > .● Des|ntegrator ●. schrieb: >> An der grünen Klinkenbuchse und Strom/Daten von USB >> eine kleine Umschaltbox (...) > > Wo hat USB denn eine grüne Klinkenbuchse? > Das Headset läuft doch komplett ohne Analogteil am PC. Na? wird Dir zu warm?
.● Des|ntegrator ●. schrieb: > Na? wird Dir zu warm? Das wollte ich dich schon fragen. Wie kommst du auf die grüne Buchse?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.