Shairport

Screen Shot 2015-02-04 at 17.36.47

DR P4 via iTunes, nu i alle rum

Indtil nu har vi blot lavet platformen klar, nu skal vi bruge dem til noget. Shairport er en open source implementation af Apples Airplay, ved at installere Shairport på serveren, kan vi med et slag have mulighed for at distribuere musik over hele huset. alt der kræves er et USB-lydkort og lidt bit-trilleri

Nedenstående foregår på den klient der har root monteret read/write den hedder porw, klienter der er readonly kalder jeg poro1 poro2 ..

Først skal vi have installeret lidt remedier, og konfigureret systemet

sudo apt-get update
sudo apt-get install locale-gen
sudo apt-get install locales
sudo locale-gen en_US.UTF-8
sudo dpkg-reconfigure locales
sudo apt-get install build-essential
sudo apt-get install avahi-daemon avahi-discover avahi-utils libnss-mdns
sudo apt-get install libao-dev libssl-dev libavahi-client-dev libasound2-dev
sudo apt-get install git

så vi kan hente kildeteksten.

mkdir src
cd src
git clone https://github.com/abrasive/shairport.git
cd shairport/
ls -l
total 328
-rw-r--r-- 1 peter peter 35788 Feb  3 11:53 alac.c
-rw-r--r-- 1 peter peter  1585 Feb  3 11:53 alac.h
-rw-r--r-- 1 peter peter  6622 Feb  3 11:53 audio_alsa.c
-rw-r--r-- 1 peter peter  3915 Feb  3 11:53 audio_ao.c
-rw-r--r-- 1 peter peter  2444 Feb  3 11:53 audio.c
-rw-r--r-- 1 peter peter  2336 Feb  3 11:53 audio_dummy.c
-rw-r--r-- 1 peter peter   536 Feb  3 11:53 audio.h
-rw-r--r-- 1 peter peter  3462 Feb  3 11:53 audio_pipe.c
-rw-r--r-- 1 peter peter  3877 Feb  3 11:53 audio_pulse.c
-rw-r--r-- 1 peter peter  2133 Feb  3 11:53 audio_sndio.c
-rw-r--r-- 1 peter peter  6573 Feb  3 11:53 common.c
-rw-r--r-- 1 peter peter  1582 Feb  3 11:53 common.h
-rwxr-xr-x 1 peter peter  2143 Feb  3 11:53 configure
-rw-r--r-- 1 peter peter  3170 Feb  3 11:53 daemon.c
-rw-r--r-- 1 peter peter   170 Feb  3 11:53 daemon.h
-rw-r--r-- 1 peter peter  6290 Feb  3 11:53 getopt_long.c
-rw-r--r-- 1 peter peter   843 Feb  3 11:53 getopt_long.h
-rw-r--r-- 1 peter peter  1612 Feb  3 11:53 LICENSES
-rw-r--r-- 1 peter peter  1438 Feb  3 11:53 Makefile
-rw-r--r-- 1 peter peter  4655 Feb  3 11:53 mdns_avahi.c
-rw-r--r-- 1 peter peter  3216 Feb  3 11:53 mdns.c
-rw-r--r-- 1 peter peter  2971 Feb  3 11:53 mdns_dns_sd.c
-rw-r--r-- 1 peter peter  4378 Feb  3 11:53 mdns_external.c
-rw-r--r-- 1 peter peter   514 Feb  3 11:53 mdns.h
-rw-r--r-- 1 peter peter  4717 Feb  3 11:53 mdns_tinysvcmdns.c
-rw-r--r-- 1 peter peter  4289 Feb  3 11:53 metadata.c
-rw-r--r-- 1 peter peter   426 Feb  3 11:53 metadata.h
-rw-r--r-- 1 peter peter 15387 Feb  3 11:53 player.c
-rw-r--r-- 1 peter peter   657 Feb  3 11:53 player.h
-rw-r--r-- 1 peter peter  5239 Feb  3 11:53 README.md
-rw-r--r-- 1 peter peter  5823 Feb  3 11:53 rtp.c
-rw-r--r-- 1 peter peter   215 Feb  3 11:53 rtp.h
-rw-r--r-- 1 peter peter 26272 Feb  3 11:53 rtsp.c
-rw-r--r-- 1 peter peter   114 Feb  3 11:53 rtsp.h
drwxr-xr-x 6 peter peter  4096 Feb  3 11:53 scripts
-rw-r--r-- 1 peter peter 10605 Feb  3 11:53 shairport.c
-rw-r--r-- 1 peter peter 55340 Feb  3 11:53 tinysvcmdns.c
-rw-r--r-- 1 peter peter  8001 Feb  3 11:53 tinysvcmdns.h
-rw-r--r-- 1 peter peter   143 Feb  3 11:53 TODO

Det skal så bare compileres og installeres

./configure
make
sudo make install
sudo rsync -av scripts/debian/. /etc
sudo useradd -g audio shairport
sudo update-rc.d shairport defaults
sudo /etc/init.d/shairport start

Så er den ged barberet – Jeg kan se shairport enheden på min Mac — MEEEN det virker ikke for godt, det er endda en ny version implementeret i C. Det var træls, jeg har ellers haft gode erfaringer med den gamle version der var implementeret i Perl. Jeg kan se på WEB-siden at der er ikke nogen der holder programellet vedlige mere, så vi går tilbage til den gamle version:

peter@porw:~/src/shairport git branch -r
  origin/0.x
  origin/1.0-dev
  origin/HEAD -> origin/master
  origin/master
  origin/metadata

Det ser ud til at denne gamle version er med i denne git, lad os smide det nye væk og finde den gamle frem:

peter@porw:~/src/shairport$ rm -rf *
peter@porw:~/src/shairport$ git checkout origin/0.x
Previous HEAD position was d65b8e8... Mark as unmaintained.
HEAD is now at b61faf1... Revert "socketlib: properly fix the IPv6 to IPv4 fallback code."
peter@porw:~/src/shairport$ ls -l
total 180
-rw-r--r-- 1 peter peter 35155 Feb  4 10:43 alac.c
-rw-r--r-- 1 peter peter  1511 Feb  4 10:43 alac.h
-rw-r--r-- 1 peter peter   123 Feb  4 10:43 FreeBSD.notes
-rw-r--r-- 1 peter peter 26792 Feb  4 10:43 hairtunes.c
-rw-r--r-- 1 peter peter   416 Feb  4 10:43 hairtunes.h
-rw-r--r-- 1 peter peter  3442 Feb  4 10:43 INSTALL.md
-rw-r--r-- 1 peter peter  1022 Feb  4 10:43 LICENSE
-rw-r--r-- 1 peter peter   932 Feb  4 10:43 Makefile
-rw-r--r-- 1 peter peter   469 Feb  4 10:43 org.mafipulation.shairport.plist
-rw-r--r-- 1 peter peter  2850 Feb  4 10:43 README.md
-rw-r--r-- 1 peter peter 35829 Feb  4 10:43 shairport.c
-rw-r--r-- 1 peter peter   940 Feb  4 10:43 shairport.h
-rwxr-xr-x 1 peter peter  1164 Feb  4 10:43 shairport.init.sample
-rwxr-xr-x 1 peter peter 27797 Feb  4 10:43 shairport.pl
-rw-r--r-- 1 peter peter  7128 Feb  4 10:43 socketlib.c
-rw-r--r-- 1 peter peter  1088 Feb  4 10:43 socketlib.h
peter@porw:~/src/shairport$ /etc/init.d/shairport stop # den gamle, dvs 1.0

På linken ovenfor er der instruktioner til hvordan man installerer den gamle version på Raspberry Pi, dem bruger vi.   Så er det bare at gå igang, her er hvad jeg gjorde:

git clone https://github.com/njh/perl-net-sdp.git
cd perl-net-sdp
perl Build.PL
./Build
./Build test
sudo ./Build install
cd ..

Først installerede vi et Perl library, så skal vi have compileret og installeret den gamle version

make
sudo make install
sed 's/NAME=ShairPort/NAME=\$(hostname)/' shairport.init.sample | sudo tee /etc/init.d/shairport
/etc/init.d/shairport start # den nye, dvs 0.x

Det virker bedre – man skal altså ikke bare smide den gamle software ud før man har en ny og bedre 😉

Næste gang en af de diskløse klienter booter vil den også være shairport klient

Jeg kan se at der er en ny version https://github.com/mikebrady/shairport-sync den har jeg ikke kigget på endnu, måske det er grunden til at mellemversionen ovenfor er opgivet.

This entry was posted in Linux. Bookmark the permalink.