DiskStation als Airplay Empfänger

Status
Für weitere Antworten geschlossen.

teplet

Benutzer
Mitglied seit
24. Jul 2011
Beiträge
144
Punkte für Reaktionen
0
Punkte
0
Geht das irgendwie?
Würde gerne die Boxen die an meiner Diskstation auch vom iPhone bespielen können (bspw. mit Spotify!).
 

yasmin_k

Benutzer
Mitglied seit
15. Aug 2009
Beiträge
285
Punkte für Reaktionen
0
Punkte
16
Geht das irgendwie?
Würde gerne die Boxen die an meiner Diskstation auch vom iPhone bespielen können (bspw. mit Spotify!).


Es gibt für Java eine Applikation, die heisst AirReceiver.
Ich habe die Version 1.2 - die läuft leider nicht, anscheinend gibt's eine Version 1.3 im GitHub aber der Link ist tot.
Habe aber keine Ahnung ob die auf der DS laufen wird, unter Windows tut's.

Gruß,
Yasmin
 

niklasR

Benutzer
Mitglied seit
16. Jun 2010
Beiträge
220
Punkte für Reaktionen
0
Punkte
0
1.3 gibt es hier. Damit wird iOS 5, und headless Operation (ohne GUI) unterstuetzt.
 

paxos

Benutzer
Mitglied seit
23. Mrz 2012
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
Klappt das echt nicht mit Hausmitteln? (hab derzeit keine USB Soundkarte und kann es daher nicht testen).

Synology NAS als Airplay EMPFÄNGER?
 

paolee

Benutzer
Mitglied seit
01. Jul 2011
Beiträge
48
Punkte für Reaktionen
0
Punkte
0
Synology als Airplay Empfänger, das wäre hammer wenn dies funktionieren würde. Gibt es da eine einfach Möglichkeit?
 

yasmin_k

Benutzer
Mitglied seit
15. Aug 2009
Beiträge
285
Punkte für Reaktionen
0
Punkte
16
Hallo zusammen,

also, ich habe das leider nicht mehr weiter verfolgt, aber vom Airfoil gibt's eine Linux Version.
Ich benutze Airfoil seit ein paar Jahren auf dem Mac.

Hier: https://getsatisfaction.com/rogueamoeba/topics/airfoil_speakers_for_linux_3_2_5

Braucht aber Mono, ncurses, libasound2 und avahi.

Bin gerade dabei Mono zum laufen zu bringen (werde einen anderen Thread aufmachen, da ich Probleme habe).
IPKG installiert. ncurses ist im IPKG drin, avahi soweit ich weiss haben wir, es schaut aber schlecht aus mit libasound2.

Falls jemand doch weitergekommen ist, bitte melden.

gruß,
Yasmin
 

paolee

Benutzer
Mitglied seit
01. Jul 2011
Beiträge
48
Punkte für Reaktionen
0
Punkte
0
hi, gibt es zu diesem Thema Neuigkeiten? Wäre sehr interessiert...
 

yasmin_k

Benutzer
Mitglied seit
15. Aug 2009
Beiträge
285
Punkte für Reaktionen
0
Punkte
16
hi, gibt es zu diesem Thema Neuigkeiten? Wäre sehr interessiert...

Von meiner Seite, habe ich Mono leider nicht zum kompilieren gebracht auf der PPC als auch auf der Atom DS.
Werde evtl. versuchen sie zu crosscompilieren, aber leider fehlt mir jetzt die Zeit.

Vielleicht hat jemand hier noch im Forum noch was versucht.

Gruß,
Yasmin
 

Anna_Konda

Benutzer
Mitglied seit
01. Sep 2010
Beiträge
129
Punkte für Reaktionen
0
Punkte
22
Hallo,

ich versuche gerade shairport analog post #7 auf meiner DS212+ zum laufen zu bekommen.
Jedoch möchte ich nicht die Perl-Version nutzen sondern das Binary. Hintergrund ist, dass ich zum einen nicht mit verschiedenen Perl-Version rumoperieren will, und dass ich Perl als sehr speicherintensiv kenne.
Dazu habe ich mir shairport von github gezogen und die shairport.c-Version gegen eine Version ersetzt, die wie die Perl-Version die definition des outputs erlaubt. http://dl.dropbox.com/u/62477888/shairport.c

Durchführen von make bringt für jeden Compileraufruf eine Fehlermeldung, da es den Compiler mit "cc" aufruft. Ich habe jeden aufruf statt dessen mit "gcc" wiederholt (geht bestimmt auch einfacher) und komme dann wirklich zu einem binary.
Mit dem Thema "avahi" muss man wie in http://blog.elsdoerfer.name/2011/05/15/shairport-on-synology-nas/ beschrieben verfahren.
shairport starte ich dann z.B. so:
Rich (BBCode):
/usr/syno/etc/rc.d/S99avahi.sh stop
/opt/sbin/avahi-daemon &
/opt/etc/init.d/S20dbus stop
rm /opt/var/run/dbus/pid
/opt/etc/init.d/S20dbus start
./shairport -b 512 -o 6002 --ao_driver=oss --ao_devicename=/dev/dsp4

Shairport erscheint auch dann ohne Probleme auf meinen iPhone, aber ich habe immer noch Probleme, dass device zu öffnen, wie in der o.b. Quelle unter
It shairport still complains about not being able to open the device, the problem might be that have an older version of libao. You then need to edit shairport’s hairtunes.c and modify one of the calls to ao_append_option() so that the –ao_devicename option is applied using the key “dsp”, rather than “dev”.
beschrieben. Ich habe zwar die beschriebene Stelle im Code gefunden und damit experimentiert, aber es hat nichts gebracht.
/dev/dsp4 ist definitiv richtig, dass habe ich mit der Audiostation geprüft. Auch habe ich die Audiostation anschließend so umgestellt, dass das device nicht mehr blockiert sein sollte.
Ob das nun an "oss" liegt, an der libao-version oder was ich sonst noch probieren könnte weiß ich leider nicht. Vielleicht will jemand mithelfen der mehr Ahnung hat und versucht meine Schritte nachzuvollziehen?
Viele Grüße, Anna
 

8bitCrunch

Benutzer
Mitglied seit
10. Okt 2012
Beiträge
11
Punkte für Reaktionen
0
Punkte
0
Hi Anna,

ich habe seit kurzem eine DS213+ und kämpfe seit ein paar Stunden mit shairport. Ich wollte mal fragen, ob du es zum Laufen bekommen hast.

Ich war nicht in der Lage shairport auf der DS zu kompilieren (habe nach mehreren Experimenten bzgl. der Compilerflags aufgegeben):

Rich (BBCode):
gcc -std=gnu99 -I/opt/include -L/lib -L/opt/lib -lpthread -lm -ldl -O2 -Wall -I/opt/include -DHAIRTUNES_STANDALONE hairtunes.c alac.o -o hairtunes -L/opt/lib -lssl -lcrypto -ldl -lao
/volume1/@optware/bin/../lib/gcc/powerpc-linux-gnuspe/3.4.6/../../../../powerpc-linux-gnuspe/lib/libpthread.so: undefined reference to `__on_exit@GLIBC_PRIVATE'
/volume1/@optware/bin/../lib/gcc/powerpc-linux-gnuspe/3.4.6/../../../../powerpc-linux-gnuspe/lib/libm.so: undefined reference to `__adddf3@GLIBC_2.3.3'
/volume1/@optware/bin/../lib/gcc/powerpc-linux-gnuspe/3.4.6/../../../../powerpc-linux-gnuspe/lib/libm.so: undefined reference to `__muldf3@GLIBC_2.3.3'
/volume1/@optware/bin/../lib/gcc/powerpc-linux-gnuspe/3.4.6/../../../../powerpc-linux-gnuspe/lib/libdl.so: undefined reference to `_dl_open@GLIBC_PRIVATE'
/volume1/@optware/bin/../lib/gcc/powerpc-linux-gnuspe/3.4.6/../../../../powerpc-linux-gnuspe/lib/libdl.so: undefined reference to `_dl_close@GLIBC_PRIVATE'
/volume1/@optware/bin/../lib/gcc/powerpc-linux-gnuspe/3.4.6/../../../../powerpc-linux-gnuspe/lib/libpthread.so: undefined reference to `__librt_multiple_threads@GLIBC_PRIVATE'
/volume1/@optware/bin/../lib/gcc/powerpc-linux-gnuspe/3.4.6/../../../../powerpc-linux-gnuspe/lib/libpthread.so: undefined reference to `_errno@GLIBC_2.0'
/volume1/@optware/bin/../lib/gcc/powerpc-linux-gnuspe/3.4.6/../../../../powerpc-linux-gnuspe/lib/libm.so: undefined reference to `__fixunsdfsi@GLIBC_2.3.3'
/volume1/@optware/bin/../lib/gcc/powerpc-linux-gnuspe/3.4.6/../../../../powerpc-linux-gnuspe/lib/libm.so: undefined reference to `__floatsidf@GLIBC_2.3.3'
/volume1/@optware/bin/../lib/gcc/powerpc-linux-gnuspe/3.4.6/../../../../powerpc-linux-gnuspe/lib/libm.so: undefined reference to `__extendsfdf2@GLIBC_2.3.3'
/volume1/@optware/bin/../lib/gcc/powerpc-linux-gnuspe/3.4.6/../../../../powerpc-linux-gnuspe/lib/libm.so: undefined reference to `__subdf3@GLIBC_2.3.3'
/volume1/@optware/bin/../lib/gcc/powerpc-linux-gnuspe/3.4.6/../../../../powerpc-linux-gnuspe/lib/libpthread.so: undefined reference to `__libc_sigaction@GLIBC_PRIVATE'
/volume1/@optware/bin/../lib/gcc/powerpc-linux-gnuspe/3.4.6/../../../../powerpc-linux-gnuspe/lib/libpthread.so: undefined reference to `_h_errno@GLIBC_2.0'

Ich konnte allerdings shairport über die DSM Tool Chain unter Debian cross-kompilieren. Statt der libao aus IPKG habe ich die Version 1.1.0 von xiph.org genutzt und die entsprechenden Dateien nach /opt/lib und /opt/lib/ao kopiert.

Mit dbus, avahi bin ich wie im von Dir verlinkten Blog beschrieben vorgegangen.

Ich kann shairport wie folgt starten:
cd /opt/local/shairport && LD_LIBRARY_PATH=/opt/lib ./shairport -vv -a Kitchen -b 512 -o 6002 --ao_driver=oss --ao_devicename=/dev/dsp4

Ich erhalte leider u.a.
Rich (BBCode):
FATAL: Could not find requested ao driver
(komplette Ausgabe)



Ich denke da läuft irgendwas mit meiner libao Installation schief. Habe dann noch mal zum Testen libao-1.1.0 auf der DS kompiliert und installiert. Die Rechte sehen gut aus, vielleicht fehlt mir noch irgendwas anderes:

Rich (BBCode):
ByteStation> cd /opt/lib
ByteStation> ls -al libao*
-rwxr-xr-x 1 root root   908 Oct 10 23:02 libao.la
lrwxrwxrwx 1 root root    14 Oct 10 23:02 libao.so -> libao.so.4.0.0
lrwxrwxrwx 1 root root    14 Oct 10 23:02 libao.so.4 -> libao.so.4.0.0
-rwxr-xr-x 1 root root 36646 Oct 10 23:02 libao.so.4.0.0
ByteStation> cd ao/plugins-4/
ByteStation> ls -al
total 52
drwxr-xr-x 2 root root  4096 Oct 10 23:02 .
drwxr-xr-x 3 root root  4096 Oct 10 23:02 ..
-rwxr-xr-x 1 root root   917 Oct 10 23:02 liboss.la
-rwxr-xr-x 1 root root 38161 Oct 10 23:02 liboss.so

Ich erhalte trotzdem den oben genannten libao Fehler. Die 2 Varianten der hairtunes.c "ao_append_option(&ao_opts, "dsp", libao_devicename);" und "ao_append_option(&ao_opts, "dev", libao_devicename);" habe ich ebenfalls erfolglos getestet.

Ich muss wohl erstmal nach einem Weg finden meine libao Installation zu überprüfen - jetzt geh ich aber erstmal schlafen...

Gruß, ByteCrunch

PS: kurios, dass das Wort "Byte" hier im Forum nicht im Benutzernamen enthalten sein darf, jetzt musste ich mich 8bitCrunch nennen ;)
 

Mojito84

Benutzer
Mitglied seit
27. Mrz 2012
Beiträge
5
Punkte für Reaktionen
0
Punkte
1
Hallo ByteCrunch,

ich habe vor kurzem dasselbe Problem mit der Meldung "Could not find requested ao driver" bei meiner DS212 gehabt. Habe mir den Quellcode angeguckt und eine Lösung gefunden.

Die Ursache liegt darin, dass die C-Version von shairport nicht die Parameter für ao_driver und ao_devicename an hairtunes übergibt. Eine Änderung der Datei shairport.c hat hier Abhilfe geschaffen:

Aktuell enthält shairport.c folgende Zeilen:
Rich (BBCode):
char *tAoDriver = NULL;
char *tAoDeviceName = NULL;

Diese habe ich per Hand an meine DiskStation angepasst (bitte entsprechend dem Modell ggf. wählen):
Rich (BBCode):
char *tAoDriver = "oss";
char *tAoDeviceName = "/dev/dsp4";

Danach sollte es klappen mit dem ao device. :)

Überlege noch, das zu Verallgemeinern, sodass die C-Version entsprechende Parameter hat und nicht der Code an die DS angepasst werden muss.


Die Perl Version läuft übrigens ohne diese Fehlermeldung, da die Parameter entsprechend übergeben werden.


Meld dich doch mal, ob es dir geholfen hat.


Viele Grüße
Mojito
 

Anna_Konda

Benutzer
Mitglied seit
01. Sep 2010
Beiträge
129
Punkte für Reaktionen
0
Punkte
22
Hallo,

ich hatte shairport.c schon für die Ausgabe des Treibers usw angepasst, siehe oben.

Nein, habe nicht mehr weiter gemacht und es daher auch letztendlich nicht zum laufen bekommen.

Grüße, Anna
 

8bitCrunch

Benutzer
Mitglied seit
10. Okt 2012
Beiträge
11
Punkte für Reaktionen
0
Punkte
0
Hi Mojito & Anna,

@Mojito
Danke für deine Anmerkungen. Ich habe leider vergessen im Post zu erwähnen, dass ich Anna's shairtunes.c Version genutzt habe.
Mich würde mal interessieren, ob du die libao aus IPKG nutzt und ob du shairport auf der DS selbst kompiliert hast. AFAIK nutzt die DS212 eine ARM-CPU - bei PowerPC scheint es da noch Probleme mit der Toolchain zu geben.

Ansonsten muss ich da noch mal irgendwie debuggen, ob wirklich der richtige libao driver genutzt wird. Ich würde auch vorher gern noch mal unabhängig von shairport meine libao Installation prüfen.



Ich habe auf github auch noch einen ALSA shairport Fork gefunden. So wie ich das sehe, ist ALSA auf der DS installiert - zumindest sieht es danach aus:

Rich (BBCode):
ByteStation> cd /proc/asound/
ByteStation> ls
Device	card0  cards  devices  hwdep  modules  oss  pcm  seq  syno_audio_volume  timers  version
ByteStation> cat cards   
 0 [Device         ]: USB-Audio - USB PnP Sound Device
                      C-Media Electronics Inc.       USB PnP Sound Device at usb-0002:05:00.0-3, full

Das werde ich als nächstes mal ausprobieren, um die Probleme mit libao zu umgehen und auch evtl. shairport und AudioStation parallel betreiben zu können - falls Mixing möglich.

Gruß, ByteCrunch
 

Mojito84

Benutzer
Mitglied seit
27. Mrz 2012
Beiträge
5
Punkte für Reaktionen
0
Punkte
1
Hallo ByteCrunch,

du hast recht, die DS212 nutzt eine ARM-CPU. Habe libao in der Version 0.8.8.1 mittels IPKG installiert. Den Shairport habe ich auf der DiskStation kompiliert, aber nicht mit der Toolchain, sondern mittels gcc aus IPKG. Habe dazu automake, openssl usw. installiert. Die ToolChain habe ich nicht ans Laufen bekommen.

Mein Makefile musste ich etwas anpassen. Die erste Zeile lautet nun:
Rich (BBCode):
CC:=gcc

Ich bin mir nicht sicher, ob das einen unterschied macht. Aber vielleicht hilfts... :)

@Anna: Werde deine Anpassungen an die shairport.c Version mal übernehmen und mein Hard-Coding ersetzen!


Grüße, Mojito
 

Mojito84

Benutzer
Mitglied seit
27. Mrz 2012
Beiträge
5
Punkte für Reaktionen
0
Punkte
1
Hallo zusammen,

ich habe mir Anpassungen an Annas shariport.c Datei angeschaut, um die Parameter für ao_driver, ao_devicename und ao_deviceid zu übergeben. Ich vermute, dass die Initialisierung der entsprechenden globalen Variablen Probleme bereitet.

Im Code von Anna steht:
Rich (BBCode):
char tAoDriver[56] = "";
char tAoDeviceName[56] = "";
char tAoDeviceId[56] = "";

Hierdurch enthalten die drei Variablen immer einen String - entweder einen Leerstring oder den entsprechendne Aufrufparameter. Die Datei hairtunes.c erwartet aber, dass entweder ein Aufrufparameter oder NULL übergeben wird.

Daher habe ich die shairport.c Datei etwas angepasst. Die Deklaration lautet bei mir nun:
Rich (BBCode):
char *tAoDriver = NULL;
char *tAoDeviceName = NULL;
char *tAoDeviceId = NULL;

Beim Lesen und Übernehmen der Aufrufparameter verwende ich nun malloc:
Rich (BBCode):
    else if(!strncmp(arg, "--ao_driver=",12 ))
    {
	  tAoDriver = malloc(56);
      strncpy(tAoDriver, arg+12, 55);
    }
    else if(!strncmp(arg, "--ao_devicename=",16 ))
    {
	  tAoDeviceName = malloc(56);
      strncpy(tAoDeviceName, arg+16, 55);
    }
    else if(!strncmp(arg, "--ao_deviceid=",14 ))
    {
      tAoDeviceId = malloc(56);
      strncpy(tAoDeviceId, arg+14, 55);
    }

Hiermit ist sichergestellt, dass ao_deviceid immer noch NULL enthält, falls ao_driver und ao_devicename übergeben werden.

Da ich kein C-Experte bin, bitte ich euch das zu überprüfen.


Viele Grüße
Mojito
 

8bitCrunch

Benutzer
Mitglied seit
10. Okt 2012
Beiträge
11
Punkte für Reaktionen
0
Punkte
0
Hi,

ich habe heute noch mal mein NAS komplett neu aufgesetzt und noch mal versucht shairport ans Laufen zu bekommen.

Diesmal konnte ich es direkt auf dem NAS kompilieren. Zuerst hatte ich wieder die "undefined reference to" errors (s.o.) - das konnte ich allerdings lösen.
Ich habe dazu die Symlinks von libpthread, libm und libdl zu /opt/lib entfernt und durch Links zu den entsprechenden Libs in /lib ersetzt. Ich bin mir noch nicht sicher, ob das noch irgendwelche Auswirkungen haben wird - bisher läuft die Synology ohne Probleme.

libao habe ich diesmal via IPKG installiert.

Und nun funktioniert es (habe die letzte Version der shairport.c von Mojito84 genutzt).
Ich weiß leider schlussendlich nicht, wo das Problem lag. Vielleicht hängt es auch mit der verwendeten DSM Version zusammen. Nutze momentan DSM 4.2-3211.

Gruß, ByteCrunch
 

Masl

Benutzer
Mitglied seit
18. Dez 2011
Beiträge
29
Punkte für Reaktionen
0
Punkte
0
Kann das nochmal jemand zusammenfassen ? :eek:

ich blicke grade gar nicht mehr durch.. würde das auch gern zum laufen bekommen, aber so 100% fit bin ich in der sache nicht. Gerade was compilen angeht. Aber wenn einer von euch das ja schonmal für die 212er compiliert hat (also ARM), kann man das dann nicht hier schonmal fertig compiliert bereitstellen ? :)
 

Flashertyp

Benutzer
Mitglied seit
08. Sep 2010
Beiträge
58
Punkte für Reaktionen
2
Punkte
8
Wäre hier auch über Anleitung sehr dankbar, da ich fas gleiche vorhabe.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat