Airsonos auf dem Raspberry Pi 3

Diese Anleitung funktioniert weiterhin, ich würde jedoch zu einer neuen und einfacheren Variante raten. Schaut euch lieber diese Anleitung an.

 

Ich habe mir kürzlich einen Sonos Play:1 zugelegt, mit dem ich bisher wirklich sehr zufrieden bin. Trotz der super Software von Sonos, wollte ich auch gerne den Lautsprecher mittels Airplay ansprechen. Dazu verwende ich Airsonos.

Installation von Airsonos

  curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -   
  apt-get install -y nodejs   
  apt-get install libavahi-compat-libdnssd-dev   

Wir benötigen ebenfalls  Node.Js und Avahi und können anschließend  Airsonos installieren.

 npm install airsonos -g  

Damit alles auch einwandfrei funktioniert, müssen ein paar Dateien angepasst werden.

 npm root -g  

Mit diesem Befehl findet ihr euren Node-Ordner

Nun könnt ihr folgende Änderungen durchführen:

  • logicalDevices.js
 Anpassen:  
 <YOUR NODE INSTALL FOLDER>/node_modules/airsonos/node_modules/sonos/lib/logicalDevices.js
  
 Ersetze:  
 if (device.name === 'BRIDGE' || device.name === 'BOOST') return; // devices to ignore in search
  
 Mit:  
 if (device.coordinator === 'false' || device.name === 'BRIDGE' || device.name === 'BOOST') return; // devices to ignore in search  
  • sonos.js
 Anpassen:  
 <YOUR NODE INSTALL FOLDER>/node_modules/airsonos/node_modules/sonos/lib/sonos.js
  
 Ersetze 239.255.255.250:  
 _this.socket.send(PLAYER_SEARCH, 0, PLAYER_SEARCH.length, 1900, '239.255.255.250');
  
 Mit deiner Broadcast IP:  
 _this.socket.send(PLAYER_SEARCH, 0, PLAYER_SEARCH.length, 1900, '192.168.11.255');  

Mittel ifconfig findet ihr eure Boradcast-IP. Normalerweise sollte diese auf 255 enden.

 Bcast:192.168.11.255   
  • helper.js
 Anpassen:  
 <YOUR NODE INSTALL FOLDER>/node_modules/airsonos/node_modules/nodetunes/lib/helper.js
   
 Ersetz den Eintrag:  
 var decipher = crypto.createDecipheriv('aes-128-cbc', audioAesKey, audioAesIv);
  
 Mit diesen Beiden:  
 var audioAesKeyBuffer = new Buffer(audioAesKey, 'binary');  
 var decipher = crypto.createDecipheriv('aes-128-cbc', audioAesKeyBuffer, audioAesIv);  

Der erste Start

Nun könnt ihr versuchen Airsonos zu starten mit dem Befehl airsonos. Ihr sollten sehen, das Lautsprecher gefunden werden.

 May 16 15:45:24 raspberrypi nodejs[32552]: *** WARNING *** Please fix your application to use the native API of Avahi!  
 May 16 15:45:24 raspberrypi nodejs[32552]: *** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=nodejs&f=DNSServiceRegister>  
 May 16 15:45:24 raspberrypi airsonos[32552]: *** WARNING *** Please fix your application to use the native API of Avahi!  
 May 16 15:45:24 raspberrypi airsonos[32552]: *** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=nodejs>  
 May 16 15:45:24 raspberrypi airsonos[32552]: *** WARNING *** The program 'nodejs' called 'DNSServiceRegister()' which is not supported (or only supported partially) in the Apple Bonjour compatibility layer of Avahi.  
 May 16 15:45:24 raspberrypi airsonos[32552]: *** WARNING *** Please fix your application to use the native API of Avahi!  
 May 16 15:45:24 raspberrypi airsonos[32552]: *** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=nodejs&f=DNSServiceRegister>  
 May 16 15:45:26 raspberrypi airsonos[32552]: Searching for Sonos devices on network...  
 May 16 15:45:26 raspberrypi airsonos[32552]: Wohnzimmer (@ 192.168.11.159:1400, RINCON_949F3E73EFB801400:0)  
 May 16 15:45:26 raspberrypi airsonos[32552]: Search complete. Set up 1 device tunnel.  

Die Warnungen sind normal und können ignoriert werden.

Ihr könnt nun auch testen ob ihr den Lautsprecher via AirPlay ansteuern könnt.

Autostart einrichten

Nun kümmern wir uns um den Autostart. Wir erzeugen ein Startfile.

 root@raspberrypi:/home/pi# which airsonos  
 /usr/bin/airsonos
  root@raspberrypi:/home/pi# vi /etc/systemd/system/airsonos.service
  
 [Unit]  
 Description=Airsonos Server  
 After=syslog.target network-online.target  
 [Service]  
 Type=simple  
 ExecStart=/usr/bin/airsonos  
 Restart=on-failure  
 RestartSec=10  
 KillMode=process  
 [Install]  
 WantedBy=multi-user.target  

Unter ExecStart tragt ihr das Ergebnis des which Befehls ein.

 systemctl daemon-reload  
 systemctl enable airsonos  
 systemctl start airsonos  

Damit habt ihr den Autostart gesetzt und den Dienst gestartet.

Schreibe einen Kommentar