Multiroom : Raspberry Squeezelite WiFi avec enceinte Bluetooth (MAJ Stretch)

Salut à tous,

Avec les mises à jour, nous avons toujours la crainte que nos chers petits programmes ne fonctionnent plus correctement voire plus du tout. Avec Raspbian c’est pareil.

La dernière version de novembre 2017 apporte son lot de nouveautés et de modifications en tout genre dont la gestion du réseau et des droits. Voilà pourquoi nous avons tant de mal à mettre nos chers petits Raspberry en WiFi avec cette version si vous suivez mon tuto :p

Je vais donc vous faire le même Tutorial fait il y a presque 1 an mais cette fois-ci avec un RPI 2 :p

J’ai revu tout le tuto original et les nouvelles versions de WordPress n’ont pas arrangé ça. Celui-ci sera beaucoup plus lisible.

Vous aurez en prime la dernière version de Squeezelite (juste un changement de build 1052 au lieu de 1007) de décembre dernier mais l’auteur n’indique pas les nouveautés apportées.

Sommaire :


Préparation du RPI

Récupérer la dernière version de Raspbian sur le site officiel et choisissez la version lite, pas besoin de surcharger le RPI.

Cliquer sur l’image pour accéder au site officiel

Pourquoi Raspbian d’ailleurs ? D’une, Raspbian est basé sur Debian et fonctionne vraiment bien. Deux, ça vous permet d’être sur un système qui pourra tout accueillir par la suite quoique vous vouliez faire, sauf ceux incompatibles Raspbian bien sûr. Adieu donc les distributions toutes faîtes. Pour finir, la distribution reçoit régulièrement des mises à jour et ça c’est bien !


Installation de l’image

Suivant le RPI que vous aurez choisi, vous aurez besoin d’une carte SD ou d’une microSD de 8 Go minimum pour être vraiment tranquille.

  • Décompresser le fichier et vous obtiendrez un fichier IMG.
  • Lancer le logiciel W32DiskImager, sélectionner votre fichier IMG. Vérifier que la lettre est bien celle de votre SD/MicroSD
  • Cliquer sur « Write » et patienter.

Déconnecter la carte SD et insérer la dans votre RPI et brancher l’écran, le clavier, la clef WiFi et enfin le plus important, l’alimentation  😆


Configuration du WiFi

Par défaut, le clavier est en anglais donc attention pour vous connecter : identifiant pi et mot de passe raspberry (taper rqspberry).

On va vérifier que votre clef est bien reconnue avec la commande lsusb  (Pas besoin avec un RPI3) :

On voit bien ma clef NetGear, Inc….

Je suppose que votre clef est reconnue pour la suite.

On va éditer le fichier WPA_Supplicant pour le wlan0 avec la commande « sudo nano /etc/wpa_supplicant/wpa_supplicant.conf » et ajouter :

network={
ssid="votre SSID"
psk="votre mot de passe"
}

Avec l’éditeur nano, sauvegarder en faisant Ctrl+X puis Y puis Entrée. Enfin faites sudo reboot. Au redémarrage, faites un ifconfig et regardez si votre interface wlan0 a bien une IP attribuée.

Pour contrôler que vous avez bien Internet tout de même, faîtes un ping vers www.domoteek.fr par exemple 🙂

Pensez à faire une réservation de l’adresse IP sur votre serveur DHCP pour être tranquille.


Configuration du RPI

Etant donné que je suis sur un RPI 1 B, je n’ai que 2 ports USB, je ne peux donc pas brancher mes 2 clefs et mon clavier, je passe donc via Putty directement depuis le PC et puis vous le ferez tôt ou tard de toute façon…

Faites « sudo raspi-config » pour activer le SSH dans Advanced Options pour SSH et répondez Yes.

Je vous conseille fortement de modifier la langue et le fuseau horaire dans « Localisation Options » puis 1 et 2. J’ai en effet vu que la suite de l’installation ne fonctionnait pas si on restait en anglais et avec le fuseau de base.

Pour finir, un petit « sudo apt-get update & sudo apt-get upgrade » pour mettre à jour les paquets. Attention ça peut prendre un petit moment sur un RPI 1, j’avais 33 Mo moi.

Une fois fait, un sudo reboot pour que tout soit bien installé.


Configuration du Bluetooth

Brancher votre clef BT et faire un lsusb à nouveau.

Ma clef est bien reconnue en Cambridge Silicon Radio…

Je suppose que votre clef est reconnue pour la suite.

On va installer ce qu’il nous faut pour la suite

sudo apt-get -y install pi-bluetooth pulseaudio pulseaudio-module-bluetooth pulseaudio-module-zeroconf dbus-x11 bluez bluez-firmware

On ajoute l’utilisateur pi au groupe pulse-access :

sudo adduser pi pulse-access

On autorise PulseAudio à utiliser l’interface BlueZ

sudo bash -c "cat <<EOF>> /etc/dbus-1/system.d/pulseaudio-bluetooth.conf

<busconfig> 
 <policy user=\"pulse\"> 
 <allow send_destination=\"org.bluez\"/> 
 </policy> 
</busconfig> 
EOF"

On charge le module Bluetooth Discover s’il est présent.

sudo bash -c "cat <<EOF>> /etc/pulse/system.pa

########################
### Bluetooth Support ##
########################
.ifexists module-bluetooth-discover.so
load-module module-bluetooth-discover
.endif
EOF"

On autorise les connexions anonymes sur Pulse

sudo bash -c "cat <<EOF>> /etc/pulse/system.pa

#######################
### Network Support ###
#######################
load-module module-native-protocol-tcp auth-anonymous=1
load-module module-zeroconf-publish
EOF"

On créé un service PulseAudio pour tous les utilisateurs

sudo bash -c "cat <<EOF>> /etc/systemd/system/pulseaudio.service

[Unit]
Description=PulseAudio Daemon
[Install]
WantedBy=multi-user.target
[Service]
Type=simple
PrivateTmp=true
ExecStart=/usr/bin/pulseaudio --system --realtime --disallow-exit --no-cpu-limit
EOF"

On recharge la configuration et on lance PulseAudio

sudo systemctl enable bluetooth
sudo systemctl restart bluetooth

Attendez 2 ou 3 secondes et faites :

sudo systemctl daemon-reload
sudo systemctl enable pulseaudio.service
sudo systemctl start pulseaudio.service

Appairage de l’enceinte BT

Taper « sudo bluetoothctl »
[NEW] Controller 00:1A:7D:DA:71:13 Etage [default]

[bluetooth]# power on
Changing power on succeeded

[bluetooth]# agent on
Agent registered

[bluetooth]# default-agent
Default agent request successful

[bluetooth]# scan on
Discovery started
[CHG] Controller 00:1A:7D:DA:71:13 Discovering: yes
[NEW] Device 74:A3:4A:06:80:EB 小米小钢炮蓝牙音箱 <– Mon enceinte Xiaomi BT

[bluetooth]# scan off
Discovery stopped

[bluetooth]# pair 74:A3:4A:06:80:EB
Attempting to pair with 74:A3:4A:06:80:EB
[CHG] Device 74:A3:4A:06:80:EB Connected: yes
[CHG] Device 74:A3:4A:06:80:EB UUIDs: 00001108-0000-1000-8000-00805f9b34fb
[CHG] Device 74:A3:4A:06:80:EB UUIDs: 0000110b-0000-1000-8000-00805f9b34fb
[CHG] Device 74:A3:4A:06:80:EB UUIDs: 0000110c-0000-1000-8000-00805f9b34fb
[CHG] Device 74:A3:4A:06:80:EB UUIDs: 0000110e-0000-1000-8000-00805f9b34fb
[CHG] Device 74:A3:4A:06:80:EB UUIDs: 0000111e-0000-1000-8000-00805f9b34fb
[CHG] Device 74:A3:4A:06:80:EB ServicesResolved: yes
[CHG] Device 74:A3:4A:06:80:EB Paired: yes
Pairing successful

[bluetooth]# trust 74:A3:4A:06:80:EB
[CHG] Device 74:A3:4A:06:80:EB Trusted: yes
Changing 74:A3:4A:06:80:EB trust succeeded

[bluetooth]# connect 74:A3:4A:06:80:EB
Attempting to connect to 74:A3:4A:06:80:EB
[CHG] Device 74:A3:4A:06:80:EB Connected: yes
Connection successful
[CHG] Device 74:A3:4A:06:80:EB ServicesResolved: yes

Taper « exit ».

On démarre le service PulseAudio : sudo systemctl start pulseaudio.service

On vérifie que l’enceinte BT est bien connectée : pactl list short | grep bluez

pi@Etage:~ $ pactl list short | grep bluez
11 module-bluez5-discover
14 module-bluez5-device path=/org/bluez/hci0/dev_74_A3_4A_06_80_EB
1 bluez_sink.74_A3_4A_06_80_EB.headset_head_unit module-bluez5-device.c s16le 1ch 8000Hz SUSPENDED
1 bluez_sink.74_A3_4A_06_80_EB.headset_head_unit.monitor module-bluez5-device.c s16le 1ch 8000Hz SUSPENDED
2 bluez_source.74_A3_4A_06_80_EB.headset_head_unit module-bluez5-device.c s16le 1ch 8000Hz SUSPENDED
1 bluez_card.74_A3_4A_06_80_EB module-bluez5-device.c

Connecter l’enceinte BT au boot du RPI automatiquement

sudo nano /home/pi/ConnectBT.sh

Copier-coller la ligne ci-dessous en remplaçant votre adresse MAC :

#!/bin/bash

sudo service bluetooth start
 sleep 10
 echo -e 'power on\nconnect 74:A3:4A:06:80:EB \nquit' | sudo bluetoothctl

Sauvegarder (Ctrl+x).

Taper « crontab -e » et choisissez nano comme éditeur si vous ne savez lequel choisir et copier ceci :

@reboot sh /home/pi/ConnectBT.sh

Sauvegarder (Ctrl+x).

Il ne reste plus qu’à rendre exécutable le script en tapant :

sudo chmod a+x /home/pi/ConnectBT.sh

Redémarrer le RPI.

Au redémarrage, faire un « pactl list short | grep bluez » et vous devrez avoir votre enceinte bluetooth de connectée automatiquement.

Suivant votre RPI, notamment le RPI 1, j’ai eu pas mal de problème pour qu’il connecte automatiquement les enceintes, surement à cause de son âge… Avec un RPI 2, pas de problème.


Installation de Squeezelite

Pour l’installation, le mérite revient à l’auteur : http://www.gerrelt.nl/RaspberryPi/wordpress/tutorial-installing-squeezelite-player-on-raspbian/.

Installation de quelques librairies nécessaires :

sudo apt-get install -y libflac-dev libfaad2 libmad0

On installe Squeezelite :

mkdir squeezelite 
cd squeezelite 
wget -O squeezelite-armv6hf.tar.gz https://www.domoteek.fr/squeezelite/squeezelite-1.8.7.1052-armv6hf.tar.gz
tar -xvzf squeezelite-armv6hf.tar.gz
mv squeezelite squeezelite-armv6hf
sudo mv squeezelite-armv6hf /usr/bin
sudo chmod a+x /usr/bin/squeezelite-armv6hf

On récupère un fichier de configuration pour la platine SqueezeLite :

cd /home/pi/squeezelite
sudo wget http://www.gerrelt.nl/RaspberryPi/squeezelite_settings.sh
sudo mv squeezelite_settings.sh /usr/local/bin
sudo chmod a+x /usr/local/bin/squeezelite_settings.sh
sudo wget http://www.gerrelt.nl/RaspberryPi/squeezelitehf.sh
sudo mv squeezelitehf.sh /etc/init.d/squeezelite
sudo chmod a+x /etc/init.d/squeezelite

 


Configuration de SqueezeLite

 On va éditer le fichier settings précédemment installé pour modifier quelques éléments :
sudo nano /usr/local/bin/squeezelite_settings.sh
Modifier le nom en décommettant SL_NAME
Enregistrer le fichier.
Nous allons rééditer le fichier /home/pi/Connect.sh pour démarrer Squeezelite au boot.
sudo nano /home/pi/Connect.Sh
Ajouter les lignes :
sleep 5
sudo /usr/bin/squeezelite-armv6hf -o default -z
Vous aurez au final dans le script :
#!/bin/bash
sudo service bluetooth start
sleep 10
echo -e 'power on\nconnect 74:A3:4A:06:80:EB \nquit' | sudo bluetoothctl
sleep 5
sudo /usr/bin/squeezelite-armv6hf -o default -z
Redémarrer votre RPI (sudo reboot) et vous devriez voir apparaître votre SqueezeBox dans LMS 🙂 Enjoy !

Pour finir

Pour ajuster le son directement sur le RPI, faire la commande alsamixer et modifier avec les flèches du clavier le niveau de sortie. Je l’ai mis à 78 chez moi. Faire « Echap » pour quitter.

Si tout fonctionne, je ne saurai que vous recommander de sauvegarde votre précieuse SD avec W32DiskImager. Bien choisir un nouveau fichier nommé « Backup_RPI_Squeezelite.img » par exemple et faire « Read » ! Une fois fini, compressez-le pour un gain de place. En cas de pépin, vous serez très heureux d’avoir ce fichier.


Conclusion

J’espère que cette mise à jour permettra à encore plus de personnes de profiter du multiroom avec vos RPI avec cette nouvelle version de Raspbian.

J’ai mis à jour toutes mes SqueezeBox RPI chez moi en Stretch.

N’hésitez pas à me laisser un petit commentaire et même de noter l’article. En espérant que cela vous aidera 🙂

9 pensées sur “Multiroom : Raspberry Squeezelite WiFi avec enceinte Bluetooth (MAJ Stretch)

  • 16 février 2018 à 21 h 24 min
    Permalink

    Hi Domoteek,

    Nice tutorial, thank you for the reference link.
    I’ve got two suggestions:

    1. The rapsberry Pi organization is now recommending « Etcher » instead of « W32DiskImager » to burn the image to the SD card. See:
    https://www.raspberrypi.org/documentation/installation/installing-images/README.md
    You might want to switch this in your tutorial too, Etcher works quite good.

    2. You say you have to add this line to Connect.sh:
    sudo /usr/bin/squeezelite-armv6hf -o default -z
    But that will start squeezelite directly, and not use my startup script (/etc/init.d/squeezelite). And that means the squeezelite_settings.sh script will also not be used.
    You might want to switch that line to:
    sudo /etc/init.d/squeezelite start
    Then the name of the squeezelite player will be set correctly too.

    Greetings,
    Gerrelt

    Répondre
    • 18 février 2018 à 10 h 33 min
      Permalink

      Thank you for the information.

      If I run with the script, I have no sound on LMS … Maybe because of pulse audio with the Bluetooth speaker but I found no other solution to automatically launch squeezelite at startup with sound that with the tutorial command.

      If you have an idea, I’m interested.

      Répondre
  • 23 février 2018 à 15 h 46 min
    Permalink

    Bonjour et merci pour ce tuto
    Je viens de prendre un rpi3 une clé USB installer stretch + carte son Audio Injector (https://www.amazon.fr/gp/product/B01HCC0210/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1) avec ses pilotes d’installés, en suivant votre tuto de A à Z. J’ai bien l’enceinte Bluetooth qui se reconnecte automatiquement(pactl list short | grep bluez OK)
    aucune erreur sauf que
    – squeezelite n’est pas reconnu dans jeedom
    – et pas de son sur mon enceinte Bluetooth
    – pulse: on dirait qu’il ne démarre pas
    voila pour mon retour merci

    Répondre
    • 24 février 2018 à 8 h 53 min
      Permalink

      Bonjour,

      Merci du retour.

      Vu que vous avez une carte audio USB, il faut bien la choisir car par défaut, PulseAudio va être utilisé mais pas sur l’USB.
      Est-ce que la platine est reconnu sur LMS déjà ?

      Répondre
  • 24 février 2018 à 21 h 57 min
    Permalink

    Bonjour ,

    j’ai suivit votre tuto pour l’installation et choisi ma sortie son sur ma X300, cela tourne nickel, merci pour vos explications. il me reste un point qui bloque c’est sous Domoticz : j’ai bien rentré les scripts pour le star et stop , mais il me manque quelque chose dans la commande START.

    script///etc/init.d/squeezelite start
    script///etc/init.d/squeezelite stop

    lorsque je fais STOP avec la commande de l’interrupteur sous DOMOTICZ , cela s’arrête bien.
    lorsque je fais START avec la commande de l’interrupteur sous Domoticz , il ne redémarre pas bien que le lecteur ne s’est pas arreté , je dois repasser par une page web du LMS pour faire play et là le son revient , serait il possible d’inclure une commande PLAY ensuite du START pour éviter de devoir passer pas une page WEB ??
    le LMS est sur mon Synology

    je suis pas expert en mode raspberry , je viens seulement d’installer DOMOTICZ et connecter mon ESP nodemcu avec ma sonde BME280 qui lit bien.

    Merci , Phil

    Répondre
  • 1 mars 2018 à 13 h 00 min
    Permalink

    Merci du retour.

    Vu que vous avez une carte audio USB, il faut bien la choisir car par défaut, PulseAudio va être utilisé mais pas sur l’USB.
    Est-ce que la platine est reconnu sur LMS déjà ?
    Alors pas reconnu non plus dans LMS qui est sur un readynas nv+ v1
    J’enlève ma carte son et je recommence tout, je vais voir

    Répondre
  • 12 mars 2018 à 21 h 32 min
    Permalink

    Bonsoir,

    Merci pour ton tuto, c’est vraiment super cependant je bloque au niveau du scan des adresses MAC car il m’affiche tout un tas d’adresse MAC et je n’arrive pas a déterminer celle qui correspond à mon enceinte JBL GO ou à ma Xiaomi Bluetooth Speaker Version 2 ( XMFHZ02 ), une idée serait la bienvenue.
    En tout cas beau travail

    Répondre
    • 13 mars 2018 à 19 h 09 min
      Permalink

      Bonsoir,

      Tu peux toujours tester avec les adresses MAC que tu trouves de suivre la suite du tuto. Tu verras si l’enceinte s’appaire correctement ou non. Suivant l’enceinte, tu as un bip de confirmation.

      Essaie sinon envoi moi la liste des adresses MAC

      Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. Apprenez comment les données de vos commentaires sont utilisées.