Re: How to stream mp3 to an airport express using only open source
Pardon me, but I'm a bit of a Linux newb. I followed your directions exactly and I get the following when I run the start_airport_express script
Quote:
DBG: Audio-Jack-Status: connected; type=analog
DBG: CSeq: 2
DBG: Session: 809E3B40
DBG: Transport: RTP/AVP/TCP;unicast;interleaved=0-1;mode=record;server_port=6000
DBG: Audio-Jack-Status: connected; type=analog
DBG: CSeq: 3
DBG: Audio-Jack-Status: connected; type=analog
DBG: CSeq: 4
DBG: Audio-Jack-Status: connected; type=analog
connected
ERR: errror: auds_open
Not sure what the problem is.
Re: How to stream mp3 to an airport express using only open source
I'm not sure either. Maybe another computer was connected to your express when you ran it? I think it supports one connection only.
Re: How to stream mp3 to an airport express using only open source
Great thread guys, but I have one addition that will take this a step further.
After following the second tutorial on this page to install raop_play alsa driver, install pulseaudio (there are plenty of tutorials online). This will let you send the audio of any app to your airport express, not just amorok.
One change that needs to be done is to add to following line
load-module module-alsa-sink device=hw:0,1
to /etc/pulse/default.pa
If you have any questions feel free to ask.
Ben
Re: How to stream mp3 to an airport express using only open source
Quote:
Originally Posted by
bensonious
Great thread guys, but I have one addition that will take this a step further.
After following the second tutorial on this page to install raop_play alsa driver, install pulseaudio (there are plenty of tutorials online). This will let you send the audio of any app to your airport express, not just amorok.
Ben
Thanks, this sounds really cool! With pulseaudio integrated into Hardy hopefully this will be really easy to get to work with rhythmbox.
Re: How to stream mp3 to an airport express using only open source
I use the raop_play alsa driver to stream my flac files to my Benchmark DAC1. It usually works extremely well -- as well as any CD transport! However I've just upgraded to the new development kernel from Hardy "2.6.24-11-generic", and I can no longer load the driver. [Edit: I'm using the 64bit Ubuntu, in case that's important]
raop_play -- including the essential alsa driver -- compiled and installed after applying the patch to the latest 0.5.1 release.
When I try to load the driver I get this:
$ sudo sh driver_start
FATAL: Error inserting alsa_raoppcm (/lib/modules/2.6.24-11-generic/sound/alsa_raoppcm.ko): Unknown symbol in module, or unknown parameter (see dmesg)
mknod: missing operand after `0'
Try `mknod --help' for more information.
here's the dmesg:
Code:
$ dmesg | grep alsa
[ 322.098948] alsa_raoppcm: disagrees about version of symbol snd_pcm_new
[ 322.098950] alsa_raoppcm: Unknown symbol snd_pcm_new
[ 322.098994] alsa_raoppcm: disagrees about version of symbol snd_pcm_lib_preallocate_pages_for_all
[ 322.098995] alsa_raoppcm: Unknown symbol snd_pcm_lib_preallocate_pages_for_all
[ 322.099029] alsa_raoppcm: disagrees about version of symbol snd_pcm_lib_malloc_pages
[ 322.099030] alsa_raoppcm: Unknown symbol snd_pcm_lib_malloc_pages
[ 322.099043] alsa_raoppcm: disagrees about version of symbol snd_pcm_lib_ioctl
[ 322.099043] alsa_raoppcm: Unknown symbol snd_pcm_lib_ioctl
[ 322.099057] alsa_raoppcm: disagrees about version of symbol snd_pcm_lib_free_pages
[ 322.099058] alsa_raoppcm: Unknown symbol snd_pcm_lib_free_pages
[ 322.099071] alsa_raoppcm: disagrees about version of symbol snd_pcm_set_ops
[ 322.099072] alsa_raoppcm: Unknown symbol snd_pcm_set_ops
[ 322.099086] alsa_raoppcm: disagrees about version of symbol snd_pcm_period_elapsed
[ 322.099087] alsa_raoppcm: Unknown symbol snd_pcm_period_elapsed
[ 721.923178] alsa_raoppcm: disagrees about version of symbol snd_pcm_new
[ 721.923181] alsa_raoppcm: Unknown symbol snd_pcm_new
[ 721.923224] alsa_raoppcm: disagrees about version of symbol snd_pcm_lib_preallocate_pages_for_all
[ 721.923225] alsa_raoppcm: Unknown symbol snd_pcm_lib_preallocate_pages_for_all
[ 721.923259] alsa_raoppcm: disagrees about version of symbol snd_pcm_lib_malloc_pages
[ 721.923260] alsa_raoppcm: Unknown symbol snd_pcm_lib_malloc_pages
[ 721.923273] alsa_raoppcm: disagrees about version of symbol snd_pcm_lib_ioctl
[ 721.923274] alsa_raoppcm: Unknown symbol snd_pcm_lib_ioctl
[ 721.923287] alsa_raoppcm: disagrees about version of symbol snd_pcm_lib_free_pages
[ 721.923288] alsa_raoppcm: Unknown symbol snd_pcm_lib_free_pages
[ 721.923301] alsa_raoppcm: disagrees about version of symbol snd_pcm_set_ops
[ 721.923302] alsa_raoppcm: Unknown symbol snd_pcm_set_ops
[ 721.923316] alsa_raoppcm: disagrees about version of symbol snd_pcm_period_elapsed
[ 721.923317] alsa_raoppcm: Unknown symbol snd_pcm_period_elapsed
And here's all the output from the compile/install:
Code:
$ make
for i in rendezvous raop_play aexcl; do make -C $i; done
make[1]: Entering directory `/home/simon/Desktop/raop_play-0.5.1/rendezvous'
gcc -Wall -DNOT_HAVE_SA_LEN -c -o mDNSPosix.o mDNSPosix.c
gcc -Wall -DNOT_HAVE_SA_LEN -c -o mDNSUNP.o mDNSUNP.c
gcc -Wall -DNOT_HAVE_SA_LEN -c -o ExampleClientApp.o ExampleClientApp.c
gcc -Wall -DNOT_HAVE_SA_LEN -c -o mDNS.o mDNS.c
gcc -Wall -DNOT_HAVE_SA_LEN -c -o Client.o Client.c
Client.c: In function 'main':
Client.c:333: warning: format '%ld' expects type 'long int', but argument 4 has type 'mStatus'
gcc mDNSPosix.o mDNSUNP.o ExampleClientApp.o mDNS.o Client.o -o mDNSClient
make[1]: Leaving directory `/home/simon/Desktop/raop_play-0.5.1/rendezvous'
make[1]: Entering directory `/home/simon/Desktop/raop_play-0.5.1/raop_play'
gcc -Wall -c raop_play.c -o raop_play.o
gcc -Wall -c raop_client.c -o raop_client.o
gcc -Wall -c rtsp_client.c -o rtsp_client.o
gcc -Wall -c aexcl_lib.c -o aexcl_lib.o
gcc -Wall -c base64.c -o base64.o
gcc -Wall -c aes.c -o aes.o
gcc -Wall -c m4a_stream.c -o m4a_stream.o
gcc -Wall -c audio_stream.c -o audio_stream.o
gcc -Wall -c wav_stream.c -o wav_stream.o
gcc -Wall -c mp3_stream.c -o mp3_stream.o
gcc -Wall -c flac_stream.c -o flac_stream.o
gcc -Wall -c ogg_stream.c -o ogg_stream.o
gcc -Wall -c aac_stream.c -o aac_stream.o
gcc -Wall -c pls_stream.c -o pls_stream.o
gcc -Wall -c pcm_stream.c -o pcm_stream.o
gcc -o raop_play -lssl -lsamplerate -lid3tag raop_play.o raop_client.o rtsp_client.o aexcl_lib.o base64.o aes.o m4a_stream.o audio_stream.o wav_stream.o mp3_stream.o flac_stream.o ogg_stream.o aac_stream.o pls_stream.o pcm_stream.o
make[1]: Leaving directory `/home/simon/Desktop/raop_play-0.5.1/raop_play'
make[1]: Entering directory `/home/simon/Desktop/raop_play-0.5.1/aexcl'
fluid -c aexcl_gui.fl
g++ -Wall -D_GNU_SOURCE -I../raop_play -I../rendezvous -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -c aexcl_gui.cxx
g++ -Wall -D_GNU_SOURCE -I../raop_play -I../rendezvous -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -c aexcl_play.cxx
aexcl_play.cxx: In function 'int play_next_song()':
aexcl_play.cxx:154: warning: deprecated conversion from string constant to 'char*'
aexcl_play.cxx: In function 'int aex_contplay()':
aexcl_play.cxx:311: warning: deprecated conversion from string constant to 'char*'
aexcl_play.cxx: In function 'int aex_pause()':
aexcl_play.cxx:341: warning: deprecated conversion from string constant to 'char*'
aexcl_play.cxx: In function 'int main(int, char**)':
aexcl_play.cxx:436: warning: deprecated conversion from string constant to 'char*'
aexcl_play.cxx:436: warning: deprecated conversion from string constant to 'char*'
aexcl_play.cxx:436: warning: deprecated conversion from string constant to 'char*'
aexcl_play.cxx:437: warning: deprecated conversion from string constant to 'char*'
g++ -Wall -D_GNU_SOURCE -I../raop_play -I../rendezvous -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -c ipod_browser.cxx
gcc -Wall -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I../raop_play -DGLIB_SUBST -c ipod/itunesdb.c -o ipod/itunesdb.o
gcc -Wall -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I../raop_play -DGLIB_SUBST -c -o ipod/glibsubst.o ipod/glibsubst.c
g++ -o aexcl_play aexcl_gui.o aexcl_play.o ipod_browser.o ../raop_play/aexcl_lib.o ipod/itunesdb.o ipod/glibsubst.o -lfltk
rm aexcl_gui.cxx
make[1]: Leaving directory `/home/simon/Desktop/raop_play-0.5.1/aexcl'
$ sudo make install
for i in rendezvous raop_play aexcl; do make -C $i install; done
make[1]: Entering directory `/home/simon/Desktop/raop_play-0.5.1/rendezvous'
/bin/bash ../mkinstalldirs /usr/local/bin/
install -s mDNSClient /usr/local/bin
make[1]: Leaving directory `/home/simon/Desktop/raop_play-0.5.1/rendezvous'
make[1]: Entering directory `/home/simon/Desktop/raop_play-0.5.1/raop_play'
/bin/bash ../mkinstalldirs /usr/local/bin/
install -s raop_play /usr/local/bin
make[1]: Leaving directory `/home/simon/Desktop/raop_play-0.5.1/raop_play'
make[1]: Entering directory `/home/simon/Desktop/raop_play-0.5.1/aexcl'
/bin/bash ../mkinstalldirs /usr/local/bin/
install -s aexcl_play /usr/local/bin
make[1]: Leaving directory `/home/simon/Desktop/raop_play-0.5.1/aexcl'
And now the alsa driver:
$ make
make -C /lib/modules/2.6.24-11-generic/build SUBDIRS=/home/simon/Desktop/raop_play-0.5.1/drivers modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.24-11-generic'
Building modules, stage 2.
MODPOST 1 modules
make[1]: Leaving directory `/usr/src/linux-headers-2.6.24-11-generic'
simon@aristurtle:~/Desktop/raop_play-0.5.1/drivers$ sudo make install
install -d /lib/modules/2.6.24-11-generic/sound
cp -f alsa_raoppcm.ko /lib/modules/2.6.24-11-generic/sound || exit 1
strip -g /lib/modules/2.6.24-11-generic/sound/alsa_raoppcm.ko || exit 1
depmod
simon@aristurtle:~/Desktop/raop_play-0.5.1/drivers$
In case it's relevant, here are the kernel related packages I have installed:
Code:
$ apt-cache search 2.6.24
linux-image-2.6.24-11-generic - Linux kernel image for version 2.6.24 on x86/x86_64
linux-restricted-modules-2.6.24-8-generic - Non-free Linux 2.6.24 modules on x86/x86_64
linux-restricted-modules-common - Non-free Linux 2.6.24 modules helper script
linux-source-2.6.24 - Linux kernel source for version 2.6.24 with Ubuntu patches
linux-restricted-modules-2.6.24-11-generic - Non-free Linux 2.6.24 modules on x86/x86_64
linux-ubuntu-modules-2.6.24-11-generic - Ubuntu supplied Linux modules for version 2.6.24 on x86/x86_64
linux-headers-2.6.24-11-generic - Linux kernel headers for version 2.6.24 on x86/x86_64
linux-image-2.6.24-8-generic - Linux kernel image for version 2.6.24 on x86/x86_64
linux-headers-2.6.24-11 - Header files related to Linux kernel version 2.6.24
linux-ubuntu-modules-2.6.24-8-generic - Ubuntu supplied Linux modules for version 2.6.24 on x86/x86_64
Any help will be *really* appreciated (I have my new Sonus Faber speakers coming tomorrow and I'd really like to test them out!)
Thanks!
Simon
Re: How to stream mp3 to an airport express using only open source
This no longer works on Hardy (Beta)
I get these warnings during the build:
Code:
WARNING: "snd_pcm_lib_ioctl" [/home/kirby/raop_play-0.5.1/drivers/alsa_raoppcm.ko] undefined!
WARNING: "snd_pcm_period_elapsed" [/home/kirby/raop_play-0.5.1/drivers/alsa_raoppcm.ko] undefined!
WARNING: "snd_card_register" [/home/kirby/raop_play-0.5.1/drivers/alsa_raoppcm.ko] undefined!
WARNING: "snd_pcm_lib_preallocate_pages_for_all" [/home/kirby/raop_play-0.5.1/drivers/alsa_raoppcm.ko] undefined!
WARNING: "snd_pcm_set_ops" [/home/kirby/raop_play-0.5.1/drivers/alsa_raoppcm.ko] undefined!
WARNING: "snd_pcm_new" [/home/kirby/raop_play-0.5.1/drivers/alsa_raoppcm.ko] undefined!
WARNING: "snd_card_new" [/home/kirby/raop_play-0.5.1/drivers/alsa_raoppcm.ko] undefined!
WARNING: "snd_pcm_lib_malloc_pages" [/home/kirby/raop_play-0.5.1/drivers/alsa_raoppcm.ko] undefined!
WARNING: "snd_pcm_lib_free_pages" [/home/kirby/raop_play-0.5.1/drivers/alsa_raoppcm.ko] undefined!
WARNING: "snd_card_free" [/home/kirby/raop_play-0.5.1/drivers/alsa_raoppcm.ko] undefined!
make[1]: Leaving directory `/usr/src/linux-headers-2.6.24-12-generic'
after installing, sudo /sbin/modprobe alsa_raoppcm does not return.
Is this the end of the road for raop_play?
Re: How to stream mp3 to an airport express using only open source
same warnings here, and some errors too:
during make of raop_play
Quote:
make[1]: *** [ipod/glibsubst.o] Error 1
rm aexcl_gui.cxx
make[1]: Leaving directory `/home/mtin/Desktop/raop_play-0.5.1/aexcl'
make: *** [all] Error 2
during make install
Quote:
install -s aexcl_play /usr/local/bin
install: cannot stat `aexcl_play': No such file or directory
make[1]: *** [install] Error 1
make[1]: Leaving directory `/home/mtin/Desktop/raop_play-0.5.1/aexcl'
make: *** [install] Error 2
and yeah its not working anymore....if I run the script, i just get
Quote:
mtin@mtin-desktop:~$ start_ae
mknod: missing operand after `0'
Try `mknod --help' for more information.
mtin@mtin-desktop:~$
then, after a few seconds this appears and thats all:
Quote:
mtin@mtin-desktop:~$ start_ae
mknod: missing operand after `0'
Try `mknod --help' for more information.
mtin@mtin-desktop:~$ DBG: CSeq: 1
DBG: Apple-Response: AR/FD3MCvUGYdYToOb1CUT/FjXjXvXbJJQYQqk/UShLQMSz/4frt1mZ1Pn3K1q3JPqivz0JyrGAZ8IyviL2uSoa54BXx7WWscJ deHEh3CqwLdDpmy5XQsEpb0h3LGKy5oj5LAfhauDyo1sDpMKOp NyNva4qVPuZD6054xFej3zgjjJwb2Z2tSqjS/IRKfMB9/bz79zYl6eE6fDXVmyCIoEH0XF9zvTpu0ip8e3Ns9fIYT4ssiCt EohxeWvxWhkcDcQGLve1qQbSBdKTRfW0dXSBfWjjCegL9IUxwa Yjl/Qdnpbcu1PcF/XmcTgPYXLgCQ/qW0XwZiiqvig39hezIzw
DBG: Audio-Jack-Status: connected; type=analog
DBG: CSeq: 2
DBG: Session: 80947B60
DBG: Transport: RTP/AVP/TCP;unicast;interleaved=0-1;mode=record;server_port=6000
DBG: Audio-Jack-Status: connected; type=analog
DBG: CSeq: 3
DBG: Audio-Jack-Status: connected; type=analog
DBG: CSeq: 4
DBG: Audio-Jack-Status: connected; type=analog
connected
ERR: errror: auds_open
so, well.....seems pretty broken...used to work with 7.10 before I upgraded to this damn beta :)
:mad:
can anybody help here?
and another question, IF it would work again, would it be possible to route the whole system sound to the airport express via pulse audio? so that everything gets played there, expecially rhythmbox!? that would be so great *dream*.... :D
Re: How to stream mp3 to an airport express using only open source
I can compile by making this patch to aexcl/ipod/glibsubst.c:
Code:
--- ../raop_play-0.5.1-original/aexcl/ipod/glibsubst.c 2005-12-16 06:17:00.000000000 -0800
+++ aexcl/ipod/glibsubst.c 2008-03-24 11:31:24.000000000 -0700
@@ -32,12 +32,12 @@
#include "aexcl_lib.h"
-inline gpointer g_malloc(gulong size)
+inline gpointer g_malloc(gsize size)
{
return malloc(size);
}
-inline gpointer g_malloc0(gulong size)
+inline gpointer g_malloc0(gsize size)
{
gpointer p;
if((p=malloc(size))) memset(p,0,size);
but the bigger problem is that the module still doesn't load.
Re: How to stream mp3 to an airport express using only open source
This is the only open source tool I've found to stream audio via wi-fi to the Airport Extreme base station.
What you can do with this How-to:
It's pretty basic, you can stream wirelessly single mp3 files or all the files in a given folder to your Airport Express base station (pretty basic AirTunes functionality). Hopefully this will inspire other people to make xmms/amarok/vlc plugins to accomplish more advanced functionalities.
What you need:
Mono:
Code:
sudo apt-get install mono mono-gmcs
JustePort.exe: Download JustePort-0.2.tar.gz from http://nanocrew.net/sw/justeport/JustePort-0.2.tar.gz. Extract the contents somewhere, open a terminal, navigate to the folder you just extracted and compile JustePort with mono typing the following command:
Code:
mcs -out:JustePort.exe *.cs
That will make a file named JustePort.exe that you'll have to move to /usr/bin/ to make it available as a shell command:
Code:
sudo cp JustePort.exe /usr/bin/
I've been following the instructions above but get stuck when I try to move the JustePort.exe to the usr/bin/ because apparently I don't have the permission to copy the file into that folder.
Any help much appreciated
Re: How to stream mp3 to an airport express using only open source
Quote:
Originally Posted by
bzzzzz
I've been following the instructions above but get stuck when I try to move the JustePort.exe to the usr/bin/ because apparently I don't have the permission to copy the file into that folder.
Any help much appreciated
Are you sure your using "sudo"? That should give you adequate permission to copy to the /usr/bin folder.
Try: sudo -s
And then just: cp JustePort.exe /usr/bin
You can run the program without putting it in the /usr/bin directory.
Just run it with: sudo ./JustePort.exe