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
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.
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.
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.
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.
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.
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ß
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.
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.
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.
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....
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
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?
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ß.
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.
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.
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 :-/
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
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.
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?