Forum: Mikrocontroller und Digitale Elektronik Apples Airplay mit µC im Eigenbau?


von Airplayer (Gast)


Lesenswert?

Hi,

Apple bietet ja seit einiger Zeit diese wunderbare Airplay Funktion an. 
Damit lassen sich Musik und Filme von jedem Apple Gerät auf ein Airplay 
fähiges Gerät übertragen.

Nun interessiert mich ob soetwas schon mal jemand mit einem Atmel oder 
einem anderen µC realisiert hat? Musikübertragung würde mir vollkommen 
reichen und Wlan ist auch nicht notwendig (Lan würde reichen), es ginge 
mir nur um den eigentlichen "Airplaychip" und wie man diesen ansteuert.

Ich hab jetzt weder in diesem Forum noch im Internet Infos darüber 
gefunden, eine Möglichkeit wäre natürlich eine Airport Express zu 
"schlachten" aber es geht hier darum es selbst zu machen und vernüftig 
in eine Gesamtschaltung mit einer Gesamtsteuerung zu integrieren.

Vielen Dank
Gruß
Martin

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Da das "Airtunes"-Protokoll (so hieß das früher, bevor mit AppleTV die 
Videoübertragung dazukam) geknackt ist und der Quelltext eines 
entsprechenden Servers existiert, musst Du Dir nur einen ausreichend 
dimensionierten µC aussuchen, um die Software und die erforderliche 
Umgebung darauf zum Laufen zu bekommen.
Am einfachsten ist das ganze vermutlich auf einem ARM o.ä. mit ucLinux, 
da da zumindest einige der Voraussetzungen "von Hause aus" erfüllt sein 
dürften.

Ansonsten: Sieh Dir die Sourcen halt einfach mal an:
https://github.com/albertz/shairport

(shairport4w ist eine Portierung davon nach Windows, mit der man 
natürlich auch erstmal herumspielen kann)

Hier http://archlinuxarm.org/forum/viewtopic.php?f=5&t=1023 haben sich 
anscheinend schon Leute damit auseinandergesetzt, das ganze auf einem 
ARM zum Laufen zu bekommen.

von Coder (Gast)


Lesenswert?

Was nützt dir der Chip?
Schau die das Protokoll an, bastel Dir ein WLAN an deinen uC und los 
gehts.

von Airplayer (Gast)


Lesenswert?

Danke für die Antworten.

Oh ok wird doch etwas aufwendiger, ich kenn mich zwar mit 8Bit 
Controllern einigermaßen aus und kann auch kleinere Programme schreiben, 
bzw. arbeite mich recht schnell auf etwas neues ein aber mit einem ARM 
hab ich mich noch nie auseinandergesetzt. Wäre das eine Art Raspberry Pi 
nur komplett selbst gestrickt?

Auf einem 8Bit Controller wird man den Code wohl nicht kompiliert 
bekommen denke ich.


>Was nützt dir der Chip?
>Schau die das Protokoll an, bastel Dir ein WLAN an deinen uC und los
>gehts.

Naja ich dachte mir es gibt einen "fertigen" Chip der die komplette 
Verarbeitung macht und man extern nur noch einen µC zur Steuerung und 
eventuell noch einen Signal A/D fürs Audiosignal braucht aber so einfach 
ist es dann wohl doch nicht^^


>Ansonsten: Sieh Dir die Sourcen halt einfach mal an:
>https://github.com/albertz/shairport

Vielen Dank für den Link, hab den Code grad schon überflogen und werd 
mich jetzt mal einarbeiten.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Airplayer schrieb:
> Wäre das eine Art Raspberry Pi
> nur komplett selbst gestrickt?

Ganz so "fett" muss das System zwar vermutlich nicht sein, aber der Pi 
dürfte sich vorzüglich für die Aufgabe eignen, zumal da die 
erforderliche Linux-Umgebung schon komplett vorhanden ist.

Daß ein 8-Bitter à la AVR ausreicht, bezweifle ich, aber das ist 
zugegebenermaßen nur ein "Bauchgefühl".

Airplayer schrieb:
> Naja ich dachte mir es gibt einen "fertigen" Chip der die komplette
> Verarbeitung macht

Nein, das ist der µC - und das, was darauf läuft, ist im großen und 
ganzen das, was die Shairport-Sourcen auch machen.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Mehr infos hier:
http://oaep.codeplex.com/
und hier
http://ovesens.net/projects

Das Projekt 'justeport' (guhgeln) beschreibt auch die nötige 
Verschlüsselung etc.

Rufus Τ. Firefly schrieb:
> Daß ein 8-Bitter à la AVR ausreicht, bezweifle ich, aber das ist
> zugegebenermaßen nur ein "Bauchgefühl".

Schafft er nicht, da Apple den Audiostream verschlüsselt. M.W. haben die 
Airport Express schon einen ARM7 drin.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Matthias Sch. schrieb:
> Mehr infos hier:
> http://oaep.codeplex.com/
> und hier
> http://ovesens.net/projects

Das ist das Gegenstück, das man braucht, wenn man ein vorhandenes Gerät 
mit Airtunes ansteuern will.

> Das Projekt 'justeport' (guhgeln) beschreibt auch die nötige
> Verschlüsselung etc.

Auch hier geht es um das Senden an ein Airtunes-fähiges Gerät, nicht 
um das Empfangen.

>> Daß ein 8-Bitter à la AVR ausreicht, bezweifle ich, aber das ist
>> zugegebenermaßen nur ein "Bauchgefühl".
>
> Schafft er nicht, da Apple den Audiostream verschlüsselt. M.W. haben die
> Airport Express schon einen ARM7 drin.

Naja, pauschal ist Verschlüsselung nicht zwingend etwas, was viel 
Rechenleistung erfordert, das kommt schon auf die verwendete 
Verschlüsselung an.

Wie auch immer, mit etwas "dickeren" ARMen scheint shairport ja schon 
umgesetzt worden zu sein, nun muss der Threadstarter sich entscheiden, 
ob er einfach eines der vielen ARM-Boards à la Raspberry, Beagleboard, 
Sheevaplug oder was auch immer nutzt und "nur" noch die Software darauf 
zum Laufen bringt, oder ob er sich den Kram komplett selberstrickt.

Ausreichend viele Hinweise, in welche Richtung zu suchen ist, sollten 
hier mittlerweile gegeben worden sein.

von Coder (Gast)


Lesenswert?

Vielleicht übt der Threadersteller das Senden vom PC aus. Wenn er das 
hinbekommen hat, würde ich mir Gedanken um eine uc anwendung machen.

von Airplayer (Gast)


Lesenswert?

Also das Senden von einem Linux Rechner (Debian) aus hab ich schon mal 
gemacht, ist zwar schon eine Weile her aber das ging ganz gut. Bin 
beruflich Systemadmin und kenne mich daher mit Linux recht gut aus.

Mich würde es schon reizen mich in die ARM-Welt einzuarbeiten, 
Programmiere aktuell immer in C. Kann ich einen ARM genauso über ISP 
programmieren? z.b. einen AT91SAM7 gibt es ja bei Reichelt recht 
günstig.

Sind diese Controller vom Grundaufbau identisch zu den AVR's? Sprich 
kann ich dort genauso Ports und Register ansprechen um z.b. Werte des 
AD's auszulesen oder eine PWM zu generieren oder läuft das dort komplett 
anders ab?

Ich hoffe die Frage klingt jetzt nicht zu dumm aber kann ich den Code 
von der Seite (https://github.com/albertz/shairport) direkt auf den ARM 
spielen? Natürlich vorher kompilieren und Register anpassen etc... aber 
so vom Grundverständnis her oder muss ich auf dem ARM erst ein OS wie 
z.b. µcLinux laufen lassen und dann von dort aus das Shairport Script 
starten?

Gruß

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Airplayer schrieb:
> Ich hoffe die Frage klingt jetzt nicht zu dumm aber kann ich den Code
> von der Seite (https://github.com/albertz/shairport) direkt auf den ARM
> spielen?

Das Programm braucht eine Umgebung, die eben ein Betriebssystem zur 
Verfügung stellt, dazu gehören Audiotreiber, der tcp/ip-Stack, der 
Netzwerkhardwaretreiber ...

Nein, Du brauchst einen µC, auf dem ein Betriebssystem läuft.

von Coder (Gast)


Lesenswert?

Ich würde vermutlich ein Raspberry Pi mit einem Linux nehmen. Dann würde 
ich auf Desktop Rechner unter Linux die ersten AirPlay-Versuche starten. 
Bei einem ersten Erfolg würde ich versuchen es auf das Raspberry zu 
portieren.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Coder schrieb:
> Dann würde
> ich auf Desktop Rechner unter Linux die ersten AirPlay-Versuche starten.

Die bestehen darin, das vorhandene Paket auszupacken und aufzurufen, das 
ist eher ... unspektakulär.

von Coder (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Coder schrieb:
>> Dann würde
>> ich auf Desktop Rechner unter Linux die ersten AirPlay-Versuche starten.
>
> Die bestehen darin, das vorhandene Paket auszupacken und aufzurufen, das
> ist eher ... unspektakulär.

Ja. Mein Gedanke ist auf großen Linux-Rechner, die Workstation, schön 
bequem testen und auf dann auf dem kleinen Linux Rechner, der Raspberry, 
weitermachen.

Und wenn er noch mehr Zeit hat, kann er auch uClinux+ BlackFin DSP 
nehmen oder auch ein FPGA oder....

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ja, in etwa das habe ich ja wohl auch nahegelegt.

von Airplayer (Gast)


Lesenswert?

Coder schrieb:
> Ja. Mein Gedanke ist auf großen Linux-Rechner, die Workstation, schön
> bequem testen und auf dann auf dem kleinen Linux Rechner, der Raspberry,
> weitermachen.
>
> Und wenn er noch mehr Zeit hat, kann er auch uClinux+ BlackFin DSP
> nehmen oder auch ein FPGA oder....

So werde ich es auch machen. Vielen Dank für die Hinweise, ich werde 
versuchen das Thema hier weiter mit meinen Fortschritten zu füttern. 
Vielleicht hab ich in einigen Wochen ja wirklich ein selbst gestricktes 
ARM Board vor mir liegen :))

Und es ist keineswegs "langweilig" ein fertiges Paket einfach zu 
entpacken und laufen zu lassen, gerade in der Linuxwelt hat sich das 
schon mehr als einmal zu einem riesen Problem entwickelt ;-)

P.S. noch nicht mal Windows Softwarepakete auf Windows Betriebssystemen 
lassen sich immer problemlos zum laufen bringen... duck und weg

von Airplayer (Gast)


Lesenswert?

Achja die Frage ist noch offen und würde mich brennend interessieren:

Airplayer schrieb:
> Mich würde es schon reizen mich in die ARM-Welt einzuarbeiten,
> Programmiere aktuell immer in C. Kann ich einen ARM genauso über ISP
> programmieren? z.b. einen AT91SAM7 gibt es ja bei Reichelt recht
> günstig.
>
> Sind diese Controller vom Grundaufbau identisch zu den AVR's? Sprich
> kann ich dort genauso Ports und Register ansprechen um z.b. Werte des
> AD's auszulesen oder eine PWM zu generieren oder läuft das dort komplett
> anders ab?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

ARMe programmiert man sinnvollerweise nicht über eine ISP-Schnittstelle, 
sondern über das JTAG-Interface. Das hat den Vorteil, daß man sie 
darüber auch gleich debuggen kann, und anders als bei AVRs ist so ein 
JTAG-Interface für ARMe auch deutlich günstiger (-> OpenOCD).

Nein, ein ARM ist nicht identisch oder auch nur ähnlich mit AVRs, er ist 
deutlich komplexer und weist auch deutlich komplexere, aber auch 
leistungsfähigere Peripherie auf.

Sinnvoll ist es, sich mit nichts älterem als den Cortex-ARMen zu 
beschäftigen, die davor beliebten Einsteiger-ARMe mit ARM7TDMI-Kern (wie 
Philips/NXP LPC2106) waren gerade in Sachen Interruptprogrammierung ein 
gewisser Krampf.

Wie die Peripherie nun im einzelnen aussieht, hängt vom jeweiligen 
gewählten ARM ab, da die von verschiedenen Herstellern in 
unterschiedlichen Familien produziert werden, ist die Bandbreite sehr, 
sehr groß.

von Airling (Gast)


Lesenswert?

Gibt es etwas neues? Bin auch sehr an einem AirPort Empfänger 
interessiert. Zur Verfügung steht ein 84mhz cortex-M3 Chip (arduino due)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Es gibt wohl eine Mediacenter-Software für den Rasperry Pi, die auch 
AirPlay unterstützt, aber das ist ein etwas anderes Kaliber als ein 
Cortex M3 mit 84 Millihertz (oder auch Megahertz).

Davon abgesehen sehe ich keine Änderung zu meinen Aussagen vom Oktober.

von JojoS (Gast)


Lesenswert?

Im xmbc mediacenter für den Pi ist AirPlay integriert, ein Häkchen in 
den Einstellungen zum aktivieren und fertig.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das meinte ich.

Es dürfte allerdings nicht so ohne weiteres möglich sein, dieses 
Mediacenter auf einem Cortex M3 mit 96 kB RAM und 512 kB ROM laufen zu 
lassen.

Eventuell ist es möglich, die grundlegenden Anforderungen von 
shairport mit uclinux zu erfüllen, und das könnte eventuell auf dem im 
Arduino Due verbauten Controller zum Laufen zu bringen sein -- und dann 
muss neben dem fehlenden Netzwerkinterface auch noch ein Audiointerface 
an den Arduino Due gestrickt werden.

Wenn es nur darum geht, Airplay zum laufen zu bekommen, dürfte der 
Raspberry Pi definitiv die bessere Wahl sein - zumal er auch noch 
weniger kostet als der Arduino Due.

von Airling (Gast)


Lesenswert?

Hi, ja das airplay auf meinem raspberry nutze ich bereits, nur leider 
ist es mMn. Einfach Overkill. Der erhebliche Nachteil den ih darin sehe 
ist auch die Bootzeit von knapp 10-20 Sekunden. Ich hab bereits einen 
taijiuno (arduino due Pendant) mit Netzwerkanbindung in mein System 
integriert welches über i2C das ganze steuert. Müsste ich diesen jetzt 
durch ein raspberry ersetzen, müsste dieses Dienste zeit mitlaufen. 
Daher suche ich nach einer guten Lösung für einen Converter: airplay -> 
spdif out (koax) :D

Wie ich gesehen habe gibt es bereits von Microchips airplay Lösungen. Um 
diese zu beziehen muss man leider jedoch im Apple Hardware Developer 
Programm sein :-/

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Tjo was lernt man aus dem restriktiven Apfel?
Genau, Äpfel bleiben lieber im Kuchen und wenn man basteln will geht man 
zum Androiden.
Da machste dann einfach Ton über Bluetooth oder UPNP

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Airling schrieb:
> Daher suche ich nach einer guten Lösung für einen Converter: airplay ->
> spdif out (koax) :D

Aber das hat eine Airport Express schon drin - ok, bis auf den 
Optical-Koax Adapter. Ob die Airport Dingse allerdings gut sind, wage 
ich zu bezweifeln. Meine AE ist jedenfalls nach einem Jahr erstmal 
kaputtgegangen, ohne Schraubstock wäre sie das heute noch.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Matthias Sch. schrieb:
> Meine AE ist jedenfalls nach einem Jahr erstmal
> kaputtgegangen, ohne Schraubstock wäre sie das heute noch.

Und woran lag das? Na?

Genau: Am Netzteil, das abgefackelt ist.


Wer hat das Netzteil hergestellt?

Genau: Samsung.

(Ich habe zwei Airport Express wieder reaktiviert, beide hatten das 
gleiche Netzteil mit dem gleichen Standarddefekt)

Airling schrieb:
> Hi, ja das airplay auf meinem raspberry nutze ich bereits, nur leider
> ist es mMn. Einfach Overkill. Der erhebliche Nachteil den ih darin sehe
> ist auch die Bootzeit von knapp 10-20 Sekunden.

Hast Du Dir mal die Bootzeit eines Airport Express angesehen? Die liegt 
auch bei 10..20 Sekunden.

Und was soll am Pi nun "Overkill" sein? Das Ding kostet erheblich 
weniger als die angedachte Arduino-Lösung.

Wie auch immer:
Die Sourcen sind verfügbar, Du musst nur die fehlenden Dinge 
(Netzwerkprotokolle, Audiowiedergabe und sonstige etwaige benötigte 
Betriebssystemumgebung) nachbilden.

Was hält Dich auf?

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.