Forum: Mikrocontroller und Digitale Elektronik Kopfhörer-Fernbedienung: Adapter für proprietäres Apple Protokoll (mit MSP430)


von Andreas (sandreas)


Lesenswert?

Hallo zusammen,

ich hab hier mal wieder ein kleines Projekt auf dem Tisch liegen, wo die 
Machbarkeit fraglich ist - daher brauche ich einen Expertenrat. Vorab: 
Dass das Projekt finanziell nicht rentabel oder vielleicht technisch 
nicht sehr sinnvoll erscheint, ist für mich zweitrangig - es geht erst 
mal primär um die Machbarkeit.

Folgendes Problem:

Mein iPod Nano 7G hat einen Klinke Kopfhörer-Anschluss mit 4 Kontakten 
(TRRS). Über zwei der Kontakte (R und S) wird die 
Kopfhörer-Fernbedienung gesteuert (lauter, leiser, play/pause, weiter, 
zurück, spulen). Leider nutzt Apple hier ein proprietäres Protokoll um 
hauseigene Kopfhörer zu "authentifizieren" (ein Ultraschall Signal), so 
dass "lauter" und "leiser" der Fernbedienung nur mit original 
Apple-Kopfhörern funktioniert, nicht aber mit Kopfhörern anderer 
Hersteller (zumindest mit den meisten).

Jemand hat das ganze mal reverse engineered... hier ist es sehr gut 
dokumentiert:
https://tinymicros.com/wiki/Apple_iPod_Remote_Protocol

Kopfhörer für z.B. Android-Telefone mit Klinkenanschluss steuern die 
Lautstärke über einen Widerstand zwischen R und S Kontakt, wobei man 
200Ω für vol+ (lauter) and und 600Ω für vol- (leiser)  spezifiziert. Der 
Play/Pause Knopf ist bei beiden Standards mit 2Ω spezifiziert, 
Play-Pause funktioniert also auch mit den Android-Kopfhörern.

Leider sind die Apple-Kopfhörer vom Sound her nicht die tollsten, kein 
In-Ear und sie gehen sehr schnell kaputt bei hohem Preis.

Ich würde nun also gerne einen Adapter in Form einer "Man in the middle 
- Klinkenverlängerung" bauen...

1
          ______________
2
     ____|   ______     |____
3
<===|____|  |MSP430|    ||||o| <--- Buchse
4
^        |______________|
5
|
6
-- Stecker


Sprich:

- Der geplante Adapter hat einen TRRS-Stecker, eine TRRS-Buchse und 
dazwischen einen MSP430 zur Signal-Steuerung
- Man stöpselt den TRRS-Stecker des Adapters in den iPod
- Dann den Android-Kopfhörer in die TRRS-Buchse
- Der MSP430 emuliert das proprietäre Apple Protokoll
- Eine Schaltung misst Widerstand des Android Kopfhörers zwischen R und 
S
- Ist er 200Ω emuliert man Apples vol+
- Ist er 600Ω emuliert man Apples vol-
- ist er < 10Ω schaltet man durch / emuliert man play/pause

Wichtig: Der Adapter sollte in einer Custom PCB Version nicht allzu groß 
sein (sagen wir mal maximal Rasperry PI Zero Größe). Bestenfalls sollte 
der Adapter OHNE eine extra Batterie / Stromquelle auskommen und vom 
iPod selbst versorgt werden, daher habe ich den MSP430 gewählt. Wenn es 
was besseres gibt, immer her damit.

Meine Fragen:
- Ist das grundsätzlich überhaupt möglich?
- Ist der zu erwartende Verbrauch des Adapters ohne eigene Stromquelle 
so hoch, dass es den Akku vom iPod Nano 7g (220mah) zu schnell 
auffressen würde bzw. wovon hängt das ab?
- Was würde ich alles dazu brauchen? (gerne konkrete Angaben bezüglich 
chip-bezeichnungen, elektronischen Bauteilen und Programmern)

Vielen Dank für jeden Beitrag dazu :-)

: Bearbeitet durch User
von Frederic S. (frederics)


Lesenswert?

Das sollte grundsätzlich möglich sein, In dem Link den Du gepostet hast 
wird im Prinzip alles erklärt um den Kopfhörer zu emulieren.

Die Auswertung der Tasten am Standardkopfhörer ist einfach, du brauchst 
nur einen Widerstand gegen plus und die Spannung am Controllpin messen.

Stromversorgung über die Controlleitung könnte mit einem sehr sparsamen 
Mikrocontroller und stromspaarender Programmierung funktionieren wenn Du 
eine schottkey Diode von der Controllleitung zu plus des 
Mikrocontrollers und einen einigermaßen Kondensator von plus nach Masse 
schaltest.

von Andreas (sandreas)


Lesenswert?

Frederic S. schrieb:
> Das sollte grundsätzlich möglich sein, In dem Link den Du gepostet hast
> wird im Prinzip alles erklärt um den Kopfhörer zu emulieren.
>
> Die Auswertung der Tasten am Standardkopfhörer ist einfach, du brauchst
> nur einen Widerstand gegen plus und die Spannung am Controllpin messen.
>
> Stromversorgung über die Controlleitung könnte mit einem sehr sparsamen
> Mikrocontroller und stromspaarender Programmierung funktionieren wenn Du
> eine schottkey Diode von der Controllleitung zu plus des
> Mikrocontrollers und einen einigermaßen Kondensator von plus nach Masse
> schaltest.

Also zunächst mal vielen Dank für die Antwort.

Die Kopfhörer-Emulation ist tatsächlich nicht das Problem (das würde ich 
hinbekommen), sondern die Versorgung des Microcontrollers UND des 
angeschlossenenen Kopfhörers über die iPod Klinke (ohne extra Batterie), 
sowie das Messen der sich ändernden Widerstände der Klinken-Buchse.

Meines Wissens nach misst man Widerstände, in dem man einen kleinen 
Strom durchschickt und den Spannungsabfall prüft. Aber ist das der 
richtige Weg - denn hier ändert sich der Widerstand ja nur sehr kurz und 
kleine Ströme sind bei so einer knapp versorgten Schaltung sicher keine 
super Idee? Wie messe ich denn den Widerstand des 
Kopfhörer-Fernbedienungs-Drucks am besten?

Dieses Video hier bietet eine vergleichende Einführung in den MSP430:
https://www.youtube.com/watch?v=9Zyp4sdSUNM

Aber irgendwie gibt es da viele Varianten und ich weiß leider nicht 
genau, welchen ich da am besten nehmen würde (Leistungs und 
Verbrauchsmäßig meine ich)

von Harald K. (kirnbichler)


Lesenswert?

Es gibt tausende von Kopfhörern/Ohrstöpseln, die zum Apple-Protokoll 
kompatibel sind, ich sehe nicht so ganz den Sinn, zu versuchen, selbst 
einen "Protokollübersetzer" zu basteln. Oder ist der spezifische 
"Android"-Kopfhörer/Ohrstöpsel, den Du da adaptieren möchtest, so 
absolut irrwitzig obergöttlich und einzigartig?

Du könntest auch die Kabelfernbedienung eines applekompatiblen 
Kopfhörers transplantieren, die kannst Du entweder aus einem vorhandenen 
Gerät extrahieren oder als Ersatzteil für einen der etwas besseren der 
tausenden Over-oder-On-Ear-Kopfhörer kaufen, die applekompatibel sind.

Willkürliches Beispiel:

https://www.amazon.de/dp/B07XX22MMR?th=1

Da müsstest Du nur statt des einen Steckers eine Buchse dranbasteln, und 
schon kannst Du Deinen vorhandenen Kopfhörer/Ohrstöpsel weiterverwenden.

(Und sowas gibt es natürlich auch viel, viel billiger, auch gleich mit 
'nem Kopfhörer/Ohrstöpsel dran)

von Andreas (sandreas)


Lesenswert?

Harald K. schrieb:
> Es gibt tausende von Kopfhörern/Ohrstöpseln, die zum Apple-Protokoll
> kompatibel sind, ich sehe nicht so ganz den Sinn, zu versuchen, selbst
> einen "Protokollübersetzer" zu basteln.

Auch vielen Dank für diese Idee. Die hatte ich (leider) auch schon...
Zur Erklärung: NUR weil ein Hersteller schreibt, dass es kompatibel ist, 
ist das noch lange nicht der Fall. Und WENN die Kompatibilität 
tatsächlich gegeben ist, ist es oft nur unzureichend gelöst (sprich: 
Funktioniert nur alle 3 mal oder nur teilweise). Das von dir verlinkte 
Kabel hatte ich und es funktioniert mit dem iPod nicht richtig - die 
Qualität war auch nicht das, was ich mir vorgestellt habe.

Wie ich geschrieben habe:
Dass das Projekt finanziell nicht rentabel oder vielleicht technisch 
nicht sehr sinnvoll erscheint, ist für mich zweitrangig - es geht erst 
mal primär um die Machbarkeit. Ich habe meine Gründe für diesen hohen 
Aufwand.

Harald K. schrieb:
> Du könntest auch die Kabelfernbedienung eines applekompatiblen
> Kopfhörers transplantieren, die kannst Du entweder aus einem vorhandenen
> Gerät extrahieren oder als Ersatzteil für einen der etwas besseren der
> tausenden Over-oder-On-Ear-Kopfhörer kaufen, die applekompatibel sind.

Richtig, das könnte ich. Das ist auch aktuell meine einzige gangbare 
Lösung - allerdings NUR mit einer ECHTEN Apple EarPods Kopfhörer 
Fernbedienung akzeptabel - diese Klondinger sind einfach schlecht. Und: 
Ablöten kann man die nicht, man kann aber ein Stück Kabel dran lassen 
und die verlöten.
Problem dabei: Die Fernbedienungen sind nicht auf lange Haltbarkeit 
ausgelegt. Das sind billige Plastik-Teile die nach einer gewissen Zeit 
hakeln, kaputt gehen oder gar brechen - folglich braucht man einen 
Vorrat an defekten EarPods mit noch gangbarer Fernbedienung als 
Ersatzteilspender. Spaß macht das keinen.

Harald K. schrieb:
> (Und sowas gibt es natürlich auch viel, viel billiger, auch gleich mit
> 'nem Kopfhörer/Ohrstöpsel dran)

Genau darum geht es. Ich will nicht billig - ich will haltbar, 
hochwertig und halbwegs preiswert - bestenfalls reparierbar.

Meine aktuelle Lösung sieht so aus, dass ich mir ein selbst 
hergestelltes geflochtenes TRRS-Kabel modifiziere und eine 
Apple-Earpods-Fernbedienung einlöte. Sieht scheiße aus, aber ist 
halbwegs haltbar und funktioniert, abgesehen von der Fernbedienung. Die 
geht alle paar Monate mal drauf. Damit kann ich einigermaßen leben, aber 
schön ist das nicht.

Ich hoffe, die Erklärung ist ausreichend detailliert. Es gibt noch viel 
mehr was mich an diesen Klon-Geräten und halbgaren Kauflösungen stört 
:-)

von Harald K. (kirnbichler)


Lesenswert?

Andreas schrieb:
> Zur Erklärung: NUR weil ein Hersteller schreibt, dass es kompatibel ist,
> ist das noch lange nicht der Fall. Und WENN die Kompatibilität
> tatsächlich gegeben ist, ist es oft nur unzureichend gelöst (sprich:
> Funktioniert nur alle 3 mal oder nur teilweise).

Dann ist Dein iPod eine Mimose. Die von Dir geschilderten Probleme kenne 
ich bei keinem meiner verschiedenen Applegeräten, an denen ich 
kabelgebundene Kopfhörer eingesetzt habe.

(iPhone 4, iPhone 7 mit Lightning-TRRS-Adapter, iPad 3, iPad Pro 2018 
mit USB-C-TRRS-Adapter, MacBook Pro 17" (2011), MacBook Pro 16" (2019) 
...)

Mir sind EarPods auch schon kaputtgegangen, aber nie die Fernbedienung, 
sondern nur das Kabel am Ende des TRRS-Steckers, weil die die Belastung 
des  Betriebs "iPhone steckt in Hosentasche und Kabel im iPhone" nicht 
überlebt haben.

Übrigens gab es von Apple auch inEars mit diesen Silikonstöpseln, die 
hießen "ME186LL/A"
https://media.s-bol.com/qwYp5kPOj3y/1200x771.jpg

von Andreas (sandreas)


Lesenswert?

Harald K. schrieb:
> Dann ist Dein iPod eine Mimose. Die von Dir geschilderten Probleme kenne
> ich bei keinem meiner verschiedenen Applegeräten, an denen ich
> kabelgebundene Kopfhörer eingesetzt habe.

Ohja. Der iPod Nano 7g ist tatsächlich ein sehr zickiges Stück Hardware 
- leider für mich unersetzbar (zumindest bisher). Ich kenne kein Gerät 
in der Größe, was Hörbücher und die Steuerung per Fernbedienung so gut 
unterstützt, wie das Ding.

Der hat sogar einen Lightning-Anschluss, aber Lightning-Kopfhörer 
funktionieren nicht (nicht mal Original Apple). An diesem Gerät ist 
Lightning anscheinend ausschließlich für die Datenübertragung 
implementiert.

Android Geräte sind ganz cool (besonders weil die auch Wifi Sync 
hätten), allerdings sind diese Geräte nicht nur wesentlich größer, 
sondern haben auch einen hohen Energiebedarf. Akzeptabel von Größe und 
Batterielaufzeit wäre für mich der Fiio M6 (den es neu leider nicht mehr 
zu kaufen gibt - ich hab aber n paar davon). Der ist sehr klein, leicht 
und hat Android 7 - Kopfhörer-Fernbedienungen unterstützt der auch. 
Alternativ der HiBy M300 - aber der ist schon fast wieder zu groß und 
schwer.

Ich hab auch schon mal angefangen eine App zu entwickeln 
(https://github.com/sandreas/ToneAudioPlayer) bin aber dann zu Flutter 
gewechselt, weil die Audio-Controls der Kopfhörerfernbedienung in C# 
keine brauchbare Library haben und die Apps insgesamt zu schwergewichtig 
werden (> 70MB). Aber der Zeitbedarf für die Entwicklung einer App ist 
enorm - wesentlich höher als für so einen kleinen Adapter. Weil es nix 
gab, das mir gefallen hat, habe ich auch schon 
https://github.com/sandreas/m4b-tool und 
https://github.com/sandreas/tone entwickelt - ich mein das mit den 
Hörbüchern also echt ernst :-)

Für alle, die meine bisherige Odyssee besser nachvollziehen wollen, ich 
hab da schon mal was gepostet, wo es um iPod Alternativen geht und warum 
keine davon für mich mit dem iPod mithalten kann:

- https://news.ycombinator.com/item?id=39556206
- https://github.com/advplyr/audiobookshelf-app/issues/847


So, nun, nach diesem Exkurs aber zurück zum Thema: Wie würde eine solche 
Schaltung aussehen und geht das ohne externe Energiequelle / Akku? :-) 
Falls nicht, könnte ich auch einen Akku akzeptieren, solange er 
mindestens 5 Tage durchhält. MSP430 dev board hab ich mir schon mal 
günstig besorgt.

: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Andreas schrieb:
> Ohja. Der iPod Nano 7g ist tatsächlich ein sehr zickiges Stück Hardware

Blöde Frage: BT-Kopfhörer kommen nicht in Frage? Die haben auch 'ne 
Fernbedienung ...

von Andreas (sandreas)


Lesenswert?

Harald K. schrieb:
> Blöde Frage: BT-Kopfhörer kommen nicht in Frage? Die haben auch 'ne
> Fernbedienung ...

Leider nein. Bluetooth hat einige Nachteile ggü. Kabel und trotz 
Bluetooth 4.0 saugt das die Batterie von den 10 Jahre alten Geräten doch 
recht zügig leer :-)

Ich hab mir einen iPod mit 600mah Batterie modifiziert (statt der 
Standard 220mah). Wenn der fertig ist, denke ich drüber nach :-P aber 
ich werd wohl trotzdem das Projekt rein aus Interesse weiter verfolgen.

Wie gesagt: Es geht mir auch um die Machbarkeit... weniger um eine 
"bessere" oder "einfachere" Lösung.

Wenn es so einen Adapter gäbe und der Open Source wäre, dann wären alle 
meine Probleme zwar auch erst mal gelöst, aber ich finde es auch 
interessant, mit solch niedrigen Strömen (Klinkenanschluss) einen 
Microcontroller zu betreiben...

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
Noch kein Account? Hier anmelden.