Apple Airport Express Client Player

Main Features:

        raop_play is a music file player for Apple Airport Express,
        the main functionalities are as follows:

        * Make AEX become your 2'nd sound card device.
        * Discover Airport Express by Apple Rendezvous
        * Browse music files
          (Supported music file format: m4a(alac or aac), wav, mp3, ogg, flac, aac, pls, raw pcm)
        * Send selected files to the Airport Express
        * Play mp3 stream data (filename started with "http://")

Download the latest Version:

        debian(sarge) package:

Required Packages:

        openssl library and header
        fltk1.1.4 library and header
        fluid (this comes with fltk1.1.4)
        libglib-2.0 header only
        libsamplerate library and header
                (Secret Rabbit Code,
        libid3tag library and header

        In Debian case "apt-get install" for the next packages
        libsamplerate0, libsamplerate0-dev, libid3tag0, libid3tag0-dev

        To play mp3 data, mpg321 needs to be in the executable path.
        To play ogg data, ogg123 needs to be in the executable path.
        To play aac data, faad needs to be in the executable path.
        To play flac data, flac needs to be in the executable path.

Compile and Install:

        make install

        # SUSE users may need the next way
        CPPFLAGS="-I/usr/X11R6/include" ./configure
        CXXFLAGS="-I/usr/X11R6/include" make
        make install

                if you see a message like "aexcl_gui.cxx : No such file or directory",
                you are missing 'fluid'.  aexcl_gui.h and aexcl_gui.cxx are generated by 'fluid'.

How to play:

        aexcl_play [--ipod ipod_mount_point] [--aexip AEX_ip_address] [audio_data_directory]
        (e.g. aexl_play --ipod /mnt/ipod /home/cat/audio_data)

        The gui shows list of accessible Airport Expres, you choose one of

        In the ipod mode (check "ipod" check box)
        You can browse songs like what your ipod browser does.
        On a songs level menu, select files you want to play, then Push the
        play button.

        In the local file mode (don't check "ipod" check box)
        Select audio files you want to play, then Push the play button.

        Pushing the forward button, it goes to a next selected song.
        Pushing the rewind button, it goes to a previous selected song.
        Checking the repeat box, it goes back to the top selected song when
        it finished the last selected song.

How to play mp3 stream:

        If the filename starts with "http://", which is decoded by
        mpg321 and sent to the selected Airport Express.  The gui
        doesn't have a way to input http://* type name.  To play from
        the gui, you need to prepare playlist file (*.pls file) which
        includes http://* type name.

        To play from an internet browser, create a script as follows:

        if pidof raop_play > /dev/null ; then
            killall raop_play
                sleep 10
        raop_play YOUR_AEX_IP $1

        Selecting this script from your internet browser, you can listen to
        internet radio stations which provide mp3 stream.
        To kill previously running raop_play takes a long time: 10 seconds,
        which is very long.  And there is no way to stop playing other than
        running kill command manually.  The gui may support the playing from
        an internet browser in future version.

How to mount iPod:

        Either usb or ieee1394 can be used to mount an iPod,
        For the usb, most of cases just need a mount command like the next:
        mount -t vfat /dev/sda2 /mnt/ipod
        (sda2 could be sdb2,sdc2,..., by the number of scsi disk devices)

        For ieee1394, here is a good document:

Known issues:

Programs :

        This package consists of three programs: aexcl_play, raop_play and mDNSClient.
        (about the alsa driver, check drivers/README)

        this is a gui to manage raop_play and mDNSClient, and to browse music files.
        this uses fltk-1.1.4 library.
        fltk is available at  Now the latest stable version is 1.1.5,
        it is probably all right to use this version.

        To parse itunesDB file, I picked up itunesdb.c from the gtkpod (
        by Jorg Schuler.
        That parser is originally written by Adrian Ulrich as a perl script "", which 
        is provided in gnupod-tools (

        itunesdb.c was simplified for read only purpose.
        Since I wanted to play this program on an ARM9 based small board (frame buffer +
        microwindows + nxlib + fltk1.1.4), I removed the glib dependency by providing glibsubst.c.
        But it still needs glib header files.
        Using libglib-2.0 might have a better result, you can remove "GLIB_SUBST=1" in aexcl/Makefile
        to use libglib-2.0.

        This is a ported version of "JustePort" which is programed by Jon Lech Johansen.
        Please look at raop_play/README

        Apple rendezvous client program to discover accessible Airport Express.
        I've slightly modified the original Apple code.
        Original Apple source codes are from mDNSResponder-58.8.tar.gz; the tar file is
        available at

Shiro Ninomiya <shiron_AT_snino_DOT_com> Logo