Pulseaudio pour enceinte Bluetooth

logo pulseaudio
logo pulseaudio

Par défaut, dans raspbian Stretch, c’est bluealsa qui s’occupe de la liaison entre le bluetooth et Alsa.
Le problème avec Alsa, c’est qu’il ne peut pas y avoir deux applications qui accèdent en même temps au périphérique audio (enfin de façon simple) sans rencontrer un problème à un moment ou à un autre. Et puis on ne peut pas non plus régler le volume pour chaque appli. Quant à switcher de périphérique audio à la volée… Alors que pulseaudio permet très aisément de faire ça. C’est pourquoi, tu vas voir comment configurer le raspberry pour qu’il s’appuie sur pulseaudio et que celui-ci gère la partie audio du bluetooth.

pour cela nous partirons sur une distribution raspbian full.

Installation / désinstallation de package

La première chose à faire est de désinstaller bluealsa :

sudo apt-get remove bluealsa

Ensuite, il ne nous reste qu’à installer pulseaudio

sudo apt-get install pulseaudio pulseaudio-module-bluetooth

On va ajouter les utilisateurs à certains groupes afin que tout fonctionne :

sudo adduser pi audio
sudo adduser root audio
sudo adduser pulse audio
sudo adduser pi pulse-access
sudo adduser root pulse-access

Certains diront que root n’est pas obligatoire tout ça tout ça, alors c’est vrai mais comme dans un prochain article rapide, je voudrais expliquer comment transformer pulseaudio en service, je ferai référence à cet article pour gagner du temps. Malin le lynx.

Maintenant qu’on a fait ça, on redémarre et on va connecter l’enceinte

Connexion de l’enceinte bluetooth

Pour cela, nous allons utiliser l’outil bluetoothctl

bluetoothctl
power on
agent on
default-agent
scan on

Au bout de quelques secondes, tu vas voir apparaître ton enceinte bluetooth suivi d’une étrange suite de numéro. Cette suite de numéro s’appelle une adresse MAC. Elle est sous la forme XX:XX:XX:XX:XX:XX
Sache qu’elle ne peut être composée que de chiffre de 0 à 9 et de lettre de A à F. Donc, pas d’hésitation entre le O et le zéro, c’est obligatoirement zéro.

Une fois cette adresse mac récupérée, toujours sous le contrôle de “bluetoothctl”, tu vas ajouter et enregistrer ton enceinte bluetooth pour que celle-ci soit définitivement reconnue par le raspberry

scan off
pair xx:xx:xx:xx:xx:xx
trust xx:xx:xx:xx:xx:xx
connect xx:xx:xx:xx:xx:xx

Normalement, tu devrais entendre un petit son de ton enceinte signifiant qu’elle est connectée.

Si tu as une erreur de connexion, fait un reboot du raspberry 🙂

On va faire en sorte que l’enceinte soit connectée dès le démarrage du raspberry. Pour ça :

sudo crontab -e

si il te demande de faire un choix entre 1 et 3, t’embêtes pas, sélectionne “nano”, cela doit être le choix numéro 2

Tu devrais donc arriver la dessus :

# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command

Rajoute la ligne ci-dessous tout à la fin :

@reboot sleep 25 && /bin/echo -e 'connect xx:xx:xx:xx:xx:xx \n quit \n' | bluetoothctl

Là encore, n’oublie pas de remplacer les xx par l’adresse mac de ton enceinte 🙂

8 Comments

  1. Bonjour
    Excellent tuto,mais j’ai un petit problème c’est que de temps en temps le son en bt grésille même à bas volume, j’ai déjà dés-associer et recommencer une installe complète de buster mais rien y fait, auriez-vous une idée ?

  2. Bjr,

    merci pour toutes ces informations !

    L’idée (la mienne…) était d’installer une enceinte BT sur un pi zero avec Snips …

    J’ai fait un mix entre les 2 séries (Snips & BT), tout va à peu près bien (encore merci). mais je bute toujours sur le non-lancement de ‘pulseaudio –start’ lors du démarrage.
    Et j’avoue ne pas être bon sur ce genre de sujet …

    • Précision : j’arrive à lancer ‘pulseaudio –start’ … mais le système me demande le mot de passe. Je cherche un moyen (avec les fameuses explications) pour contourner le problème.

    • Bonjour,

      Oui tout à fait. L’utilisation du socket est faite pour que des utilisateurs distincts utilisent le même serveur pulseaudio. Donc, après, qu’importe le périphérique de sortie 🙂

      Ced

  3. Salut,

    Merci pour ton blog et les articles. J ai suivi ceux de l installation de snips.
    En voyant celui-ci, je me posais la question de savoir si c était compatible avec snips.
    Merci d avance

    Zak

    • A partir du moment que c’est à travers de pulseaudio que fonctionne snips, oui sans soucis. I faut juste eviter de refaire un “sam setup audio” derrière viendrait écraser le asound.conf

Poster un Commentaire

Votre adresse de messagerie ne sera pas publiée.


*


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