RPi-Bluetooth Audio

De Wiki levelKro

Ce guide à pour but d'installer comme sortie audio unique le Bluetooth en mode de ligne de commande.

Pré-requis

  • Mise à jour du système Raspbian OS;
sudo apt-get update
sudo apt-get upgrade
sudo apt-get autoremove
sudo reboot
  • Installation de PulseAudio;
sudo apt-get install pulseaudio pulseaudio-module-bluetooth
dpkg -l pulseaudio pulseaudio-module-bluetooth
  • Désactivation de l'audio par défaut (HDMI/Jack);
    • Ouvrez le fichier de configuration dans Nano;
      sudo nano /boot/config.txt
    • Il faut commenter (#) les lignes suivantes;
      dtparam=audio=on
      hdmi_force_hotplug=1
  • Exécutez le server PulseAudio;
    pulseaudio --start
  • Active le module Bluetooth du Kernel
    sudo modprobe btusb
  • Ont prépare le Bluetooth à supporter l'audio
    • Ouvrez le fichier dans l'éditeur;
      sudo nano /etc/bluetooth/main.conf
    • Ajouter dans "[General]" cette ligne;
      Enable=Source,Sink,Media,Socket
  • Ajoute le service Bluetooth et l'active;
sudo systemctl enable bluetooth
sudo systemctl start bluetooth
  • Ajouter vous dans le groupe "bluetooth" avec
    sudo usermod -a -G bluetooth pi
  • Redémarrez avec
    sudo reboot
  • La détection initial de votre appareil Bluetooth compatible A2DP;
bluetoothctl
  • Une fois dans l'interface;
power on
agent on
default-agent
scan on

Attendez quelques instant, les informations des appareils Bluetooth vont tranquillement s'afficher, cherchez votre appareil et repérez l'adresse MAC sous la forme XX:XX:XX:XX:XX:XX.

pair XX:XX:XX:XX:XX:XX
trust XX:XX:XX:XX:XX:XX
connect XX:XX:XX:XX:XX:XX

Sortez de l'interface Bluetooth avec;

quit
  • Trouvez le nom de votre profil avec
pacmd list-cards
  • Définissez le profile A2DP comme actif;
pacmd set-card-profile bluez_card.xx_xx_xx_xx_xx_xx a2dp_sink
pacmd set-default-sink bluez_sink.xx_xx_xx_xx_xx_xx.a2dp_sink
  • Testez avec eSpeak;
espeak "Hello World"

Activation du Bluetooth au démarrage

  • Créez un script Bash pour simplifier vos commandes dans le dossier de Pi;
    nano /home/pi/btspkr.sh
  • Dans le document, vous allez inscrire les commandes suivantes;
#!/bin/bash
echo "BTSPK Connection process"
echo "Restart Bluetooth"
sudo systemctl stop bluetooth
sudo systemctl start bluetooth
echo "Restart PulseAudio server"
pulseaudio -k
pulseaudio -D
echo "Reload Bluetooth PulseAudio policy"
pactl unload-module module-bluetooth-policy
pactl load-module module-bluetooth-policy
echo "Trying to connect the Bluetooth speaker"
while read x ; do sleep 2s ; echo $x ; done <<eof | bluetoothctl
power on
agent on
default-agent
connect XX:XX:XX:XX:XX:XX
quit
eof
echo "Done BTSPK Connection process"
startx -- -nocursor -quiet
  • Sauvegardez le fichier et rendez-le exécutable;
    chmod +x /home/pi/btspkr.sh

Correction de PulseAudio

  • Pour corriger la désactivation en "idle", ouvres
    sudo nano /etc/pulse/default.pa
    et commenter la ligne
    load-module module-suspend-on-idle


Ceci est l'une des méthodes utilisable pour effectuer la mise en route.

ATTENTION: Dans cette version du script "btspkr.sh", la dernière ligne fait référence au démarrage de l'interface graphique (GUI). Ce GUI est celui pour un démarrage de Chromium en mode kiosk. Assurez-vous de remplacer cette ligne par la commande qui démarre votre GUI, si c'est le cas, par celle de votre système, ou de la retirer si vous n'avez pas de GUI. Il existe d'autres moyens de démarrer ce script, à vous de le faire marcher selon votre projet. Il doit cependant être exécuté APRÈS le chargement du système de base et du Hardware et ne dois pas être exécuté par le ROOT (ni via SUDO).

  • Ouvrez le fichier de lancement local de votre session "pi";
    sudo nano /home/pi/.profile
  • Remplacer ou ajouter à la fin du document;
    [[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && /home/pi/btspkr.sh
  • Sauvegardez le fichier modifié et redémarrez;
    sudo reboot