Maak je eigen AirPlay-speakers met de Raspberry Pi 2

© PXimport

Maak je eigen AirPlay-speakers met de Raspberry Pi 2

Geplaatst: 27 november 2015 - 11:19

Aangepast: 14 december 2022 - 12:15

Koen Vervloesem

Voor speakers waarop je muziek streamt via Apples AirPlay-muziekprotocol moet je diep in de buidel tasten. Voor een fractie van die prijs configureren we een Raspberry Pi 2 zodat hij AirPlay ontvangt en hangen we er losse speakers aan. In dit artikel leggen we je uit hoe je dit voor elkaar krijgt.

Stap 1 - Raspbian installeren

We gaan ervan uit dat je het besturingssysteem Raspbian op de Raspberry Pi 2 hebt geïnstalleerd (zie ook dit artikel). Heb je NOOBS gebruikt om een ander besturingssysteem op je Pi te zetten, zoals OpenELEC, dan is dat eenvoudig terug te draaien. Steek de voeding van je Raspberry Pi 2 in een stopcontact en houd onmiddellijk de Shift-toets ingedrukt om het installatieprogramma opnieuw te openen.

Stap 2 - Benodigdheden installeren

Vervolgens updaten we de pakketinformatie van Raspbian met het commando sudo apt-get update, zodat we de nieuwste versies van alle software kunnen downloaden. Daarna upgraden we alle software op de Pi met het commando sudo apt-get upgrade naar de nieuwste beschikbare versies. En we installeren een boel pakketten die we nodig hebben om hierna de AirPlay-software te kunnen installeren: sudo apt-get install autoconf libtool libdaemon-dev libasound2-dev libpopt-dev avahi-daemon libavahi-client-dev libssl-dev.

 

© PXimport

Installeer met commando's de juiste benodigdheden.

Stap 3 - Shairport Sync installeren

Om audio naar onze Pi te streamen via het AirPlay-protocol gebruiken we de software Shairport Sync. Download de broncode met de opdracht git clone https://github.com/mikebrady/shairport-sync.git, navigeer naar de gedownloade directory met cd shairport-sync, voer de opdracht autoreconf -i -f uit en compileer de broncode met ./configure --with-alsa --with-avahi --with-ssl=openssl && make. Tot slot installeren we de software met sudo make install.

Stap 4 - Shairport Sync starten

Start nu Shairport Sync met de opdracht shairport-sync -a RaspberryPlay -- -d hw:0 -t hardware -c PCM. Vervang RaspberryPlay door een naam naar keuze en zet die tussen aanhalingstekens als er een spatie in voorkomt. Dat is de naam waaronder je Pi zichtbaar is bij AirPlay-compatibele apparaten. Als je op je iPad of iPhone het AirPlay-menu opent, zie je de Raspberry Pi tussen de beschikbare apparaten staan om audio naar te streamen. In iTunes kun je de Pi kiezen als je op het icoontje naast de volumeregelaar klikt. En OS X laat zelfs toe om je Pi als standaard audio-uitvoerapparaat te gebruiken via de menu's Systeemvoorkeuren / Geluid / Uitvoer.

 

© PXimport

In OSX kun je je Pi als standaard audio-uitgang gebruiken.

Stap 5 - Testen en tweaken

Sluit speakers aan op je Pi en test het streamen eens. Als je daarvoor de jackaansluiting van de Pi gebruikt, zul je wel merken dat er vrij veel ruis op zit. Daarom dat we verder in deze workshop een externe usb-geluidskaart gebruiken. Maar voor de test volstaat de jackaansluiting. Het audiovolume staat overigens standaard vrij laag in Raspbian. Sluit Shairport Sync af met Ctrl+C. Met de opdracht alsamixer open je een volumeregelaar. Met de pijltjestoetsen omhoog en omlaag pas je het volume aan. Ga niet boven de 80%, want dan wordt het geluid sterk vervormd. Met een druk op Esc sla je de instelling op.

Stap 6 - Automatisch opstarten

Nu moeten we er nog voor zorgen dat Shairport Sync automatisch opstart wanneer de Pi opstart. Daarvoor passen we het opstartscript aan. Open het met het commando sudo nano /etc/init.d/sharepoint-sync en ga naar regel 66, die begint met start-stop-daemon --start en eindigt met -d || return 2. Voeg achter de -d de volgende opties toe: -a RaspberryPlay -- -d hw:0 -t hardware -c PCM. Sla het bestand op met Ctrl+O en sluit het af met Ctrl+X. Herstart nu je Pi en probeer nog eens muziek te streamen naar je Pi.

 

© PXimport

Shaiport Sync automatisch opstarten als je Pi start.

Betere audio

De ingebouwde geluidsuitvoer van de Raspberry Pi is niet van al te goede kwaliteit. Gelukkig bestaan er heel wat oplossingen om daar iets aan te doen. Het eenvoudigste is een usb-geluidskaart. Het voordeel daarvan is ook dat je het in andere projecten kunt hergebruiken. Zelfs een goedkope usb-geluidskaart geeft al een merkbaar betere geluidskwaliteit. Daarnaast bestaat er ook audiohardware die speciaal voor de Raspberry Pi is ontworpen, zoals de HiFiBerry: de DAC+-versie heeft een analoge uitvoer en de Digi+-versie een elektrische en optische SPDIF-uitvoer.

Stap 7 - USB-geluidskaart

Aangezien de jackaansluiting van de Raspberry Pi geen denderende geluidskwaliteit geeft, steken we een usb-geluidskaart in onze Pi. We kozen voor de LogiLink TODO, die standaard door Raspbian is ondersteund. Kijk op de wiki van elinux.org (zie ook dit artikel) voor een uitgebreide lijst van ondersteunde geluidskaarten. Controleer met de opdracht aplay -l of je geluidskaart wordt herkend. Naast je card 0 (de interne audiohardware van de Pi) krijg je een card 1 te zien waarbij USB Audio staat.

 

© PXimport

Een USB-geluidskaart geeft betere geluidskwaliteit.

Stap 8 - USB-geluidskaart eerst

De Pi geeft voorrang aan zijn eigen audiohardware. We gaan nu instellen dat Raspbian de voorkeur geeft aan de usb-geluidskaart, niet alleen voor Shairport Sync, maar voor alle programma's die audio gebruiken. Open het configuratiebestand van ALSA (TODO) met de opdracht sudo nano /etc/modprobe.d/alsa-base.conf. Vind de regel met options snd-usb-audio index=-2 en vervang die door options snd-usb-audio nrpacks=1. Sla het bestand op met Ctrl+O en sluit nano af met Ctrl+X.

Stap 9 - Alias

Voor de volgende stap moeten we de alias van de usb-geluidskaart te weten komen. Voer de opdracht aplay -L uit. Bij ons zien we in de uitvoer onder andere front:CARD=Set,DEV=0. De alias is dan front:Set. Maak dan een configuratiebestand voor asound aan met het commando sudo nano /etc/asound.conf en plaats daarin achtereenvolgens de regels (waarbij je in de laatste regel in plaats van front:Set uiteraard de juiste alias in jouw situatie gebruikt):

pcm.mmap0 {

type mmap_emul;

slave {

pcm "hw:0,0";

}

}

pcm.!default front:Set

 

© PXimport

Maak een configuratiebestand aan voor de alias van jouw USB-geluidskaart.

Stap 10 - Volumemixer

Nu moeten we nog nakijken hoe de volumemixer van de usb-geluidskaart heet. Bij de interne audio van de Pi is dat PCM. Open nog eens alsamixer om het geluidsvolume aan te passen en kijk welke naam er onder het volumebalkje en achter Item: staat. Bij onze LogiLink TODO is dat Headphone. Open terug het opstartscript van Shairport Sync met het commando sudo nano /etc/init.d/shairport-sync en ga naar regel 66. Vervang daar -c PCM door -c Headpone of de overeenkomstige naam in jouw situatie. Reboot daarna je Pi en sluit je speakers op de audio-uitvoer van de geluidskaart aan. Stream opnieuw de audio van je Apple-apparaat naar je Pi en geniet van de betere geluidskwaliteit.

Stap 11 - Volume-instellingen opslaan

Tot nu toe moesten we na elke reboot opnieuw het volume veranderen in alsamixer omdat de standaardinstelling van het volume heel laag staat. Gelukkig kunnen we dat zelf ook definitief instellen. Start alsamixer en stel het volume in. Met de pijltjestoetsen naar links en rechts kun je van audio-uitvoer veranderen en met F6 kies je andere audioapparaten. Als je alles hebt ingesteld, druk je op Esc om je instellingen op te slaan en voer je daarna de opdracht sudo alsactl store 0 uit om je instellingen definitief op te slaan. Na een reboot blijft je volume nu zo hoog staan als je hebt ingesteld.

 

© PXimport

Zo sla je volume-instellingen op, wel zo handig.

Stap 12 - Meer opties

Shairport Sync ondersteunt nog heel wat opties. Bekijk de webpagina op GitHub voor meer informatie. Een interessante eigenschap van Shairport Sync is dat het altijd gesynchroniseerd blijft met de bron van de audio en dus ook met andere apparaten waarnaar dezelfde audio gestreamd wordt. Dat betekent dat multiroom-audio eenvoudig mogelijk is: plaats gewoon in elke kamer een Pi die Shairport Sync draait.

Speakers

Aan je speakers kun je zoveel of zo weinig geld uitgeven als je wilt. Voor een kleine ruimte of incidenteel gebruik volstaan zeker draagbare speakers die je al voor een tientje vindt. Ook een bluetooth-speaker is mogelijk, maar dat vereist wat extra configuratie en biedt doorgaans geen hoge audiokwaliteit. Voor enkele tientjes heb je al goede pc-speakers. Voor grotere ruimtes heb je uiteraard wat meer vermogen nodig en kijk je beter naar hifi-speakers.

Deel dit artikel
Voeg toe aan favorieten