Skip to main content

Transformer un Raspberry Pi en enceinte Bluetooth avec PipeWire

Présentation

Ce tutoriel vous guide dans la configurationConfiguration d'un Raspberry Pi pour qu'il fonctionne comme une enceinte Bluetooth, vous permettant de diffuser de la musique depuis votreun téléphone, une tablette ou un ordinateur vers des enceintes analogiques connectées au Pi.

Prérequis matériels

Câble audio jack 3.5mm vers RCA Enceintes ou système audio avec entrée analogique 3.5mm Câble audio 3.5mm Alimentation adaptée pour le Raspberry PiRCA.

Configuration initiale du système

    Configuration de la connexion automatique

    Pour permettre unune fonctionnementconnexion automatique sans interface utilisateur :

    sudo raspi-config
    

    Naviguez vers :

    • Option 1 : System Options
    • Option S5 : Boot / Auto Login
    • Sélectionnez Console Autologin

      Raspberry

      Pi OS se connectera automatiquement à l'utilisateur créé lors de l'installation, ce qui lancera automatiquement PipeWire et WirePlumber.

      Installation des paquets nécessaires

      Mettez à jour les dépôts et installez PipeWire, WirePlumber etavec les dépendances Bluetooth et Python :

      sudo apt update
      sudo apt install pipewire wireplumber libspa-0.2-bluetooth python3-dbus

      Redémarrez les services audio pour appliquer les changements :

      systemctl --user restart pipewire wireplumber
      

      Configuration Bluetooth

        Téléchargement des scripts de gestion

        Téléchargez l'agentle script de gestion Bluetooth et son fichier de service systemd directement depuis le dépôt GitHub :

        cd ~
        wget https://raw.githubusercontent.com/fdanis-oss/pw_wp_bluetooth_rpi_speaker/master/speaker-agent.py
        wget https://raw.githubusercontent.com/fdanis-oss/pw_wp_bluetooth_rpi_speaker/master/.config/systemd/user/speaker-agent.service
        

        RendezRendre le script exécutable :

        chmod +x speaker-agent.py
        

          Configuration dedu l'agentscript Bluetooth

          Pour autoriser plusieurs connexions simultanées (mixage audio) :

          Utilisez la configuration par défaut qui permet à plusieurs appareils de se connecter et de mixer leur audio.

          Pour n'autoriser qu'une seule connexion à la fois :

          Modifiez le fichier de service pour ajouter l'option --single-connection :

          sed -i 's|ExecStart=python speaker-agent.py|ExecStart=python speaker-agent.py --single-connection|' speaker-agent.service
          

          Installation du service systemd

          Créez le répertoire utilisateur pour systemd si nécessaire :

          mkdir -p ~/.config/systemd/user
          

          CopiezDéplacez le fichier de service au bon emplacement :

          cpmv speaker-agent.service ~/.config/systemd/user/
          

          Activez et démarrez le service :

          systemctl --user daemon-reload
          systemctl --user enable speaker-agent.service
          systemctl --user start speaker-agent.service
          

          Configuration de BlueZ pour appairage automatique

          Modifiez la configuration Bluetooth pour permettre l'appairage sans interaction :

          sudo sed -i 's/#JustWorksRepairing.*/JustWorksRepairing = always/' /etc/bluetooth/main.conf
          

          Redémarrez le service Bluetooth :

          sudo systemctl restart bluetooth
          

          Utilisation

          1. Connexion de vos appareils

          Connectez vosles enceintes : Branchezbranchez vosles enceintes ou système Hi-Fi sur la prise jack 3.5mm du Raspberry Pi

          Redémarrez le système :

          sudo reboot
          
          1. Appairez votreun appareil :

          ·
            Sur votrele téléphone/tablette/ordinateur, activez le Bluetooth · Recherchez les nouveaux appareils · Sélectionnez RPi speakerraspberrypi (ou un nom similaire) · L'appairage se fera normalement automatiquement sans code PIN requis

              Diffusez votrede l'audio : · Uneune fois connecté, votre l'audio seradevrait être automatiquement redirigé vers les enceintes ·enceintes. Le volume peut être contrôlé depuis votre l'appareil source

              Dépannage

              Vérifier l'état des services

              systemctl --user status speaker-agent.service
              systemctl --user status pipewire
              systemctl --user status wireplumber
              

              Vérifier les connexions Bluetooth

              bluetoothctl
              # Dans l'interface bluetoothctl :
              devices
              info <adresse_MAC>
              

              Journal des services

              Pour voir les logs de l'agent Bluetooth :

              journalctl --user -u speaker-agent.service -f
              

              Réinitialiser les appareils appairés

              Si vous rencontrez des problèmes de connexion :

              bluetoothctl
              # Dans l'interface bluetoothctl :
              remove <adresse_MAC>
              # Puis réappairez l'appareil
              

              Résoudre l'erreur "appairage non accepté"

              L'erreur "appairage non accepté" lors de la tentative de connexion dud'un téléphoneappareil à votreau Raspberry Pi est un problème courant lié aux profils et services Bluetooth. Voici comment le résoudre, étape par étape.

              🔍

              1. Diagnostic initial

              ToutVérification d'abord, vérifionsde l'état de l'interface Bluetooth et ledu service. Ouvrez un terminal sur votrele Pi et exécutez ces commandes :

              · hciconfig -a : Vérifiez que l'adaptateur est listé et qu'il est UP RUNNING.

              hciconfig -a
              

              S'il est marqué DOWN, il faut le réactiver.

              · sudo systemctl status bluetooth : Assurez-vous

              Vérifiez que le service Bluetooth est bien actif (active (running)).

              sudo systemctl status bluetooth
              

              Si l'adaptateur est désactivé (DOWN), vous pouvez essayer de le réactiver avec:

              sudo rfkill unblock bluetooth.bluetooth
              

              ⚙️

              Résolution
              principale : configurationConfiguration du profil A2DP

              D'après votre tutoriel, le Pi doit se comporter comme une enceinte Bluetooth. Pour cela, il doit exposer le bon profil audio. L'erreur "Pas de services utilisables" ou "appairage non accepté" indique souvent que le profil A2DP (Audio Sink) n'est pas correctement publié.

                Vérifier et installer PulseAudio Bluetooth (si nécessaire)

                Le gestionnaire audio PulseAudio gère souvent les connexions Bluetooth. Vérifiez si le module nécessaire est installé :

                sudo apt install pulseaudio-module-bluetooth
                

                Après l'installation, rechargez PulseAudio :

                pulseaudio -k
                pulseaudio --start
                
                Configurer BlueZ pour publier le profil A2DP (Méthode alternative)

                Parfois, il faut configurer l'agent Bluetooth (bluetoothctl) pour accepter les connexions sur le bon profil. Ouvrez l'outil en ligne de commande :

                sudo bluetoothctl
                

                Dans l'interface bluetoothctl, exécutez les commandes suivantes dans l'ordre :

                ·

                agent on : Active l'agent de gestion des associations.

                ·

                default-agent : Définit l'agent par défaut.

                ·

                discoverable on : Rend le Pi visible.

                ·

                pairable on : Autorise l'appairage.

                ·

                scan on (temporairement) : Pour voir les appareils à proximité.

                Ensuite, depuis votrele téléphone, tentez à nouveau l'appairage. Si une clé est demandée, confirmez-la à la fois sur le téléphone et dans le terminal bluetoothctl.

                Une fois l'appairage réussi, assurez-vous de faire confiance (trust) à l'appareil depuis bluetoothctl.

                Vérifier les services exposés Après l'appairage, dans bluetoothctl, utilisez la commande info <adresse_MAC_du_telephoneadresse MAC du telephone> pour lister les services de votredu Pi vus par le téléphone.

                Vous devriez voir des UUIDs de services audio comme 0000110a-0000-1000-8000-00805f9b34fb (Audio Source) ou 0000110b-0000-1000-8000-00805f9b34fb (Audio Sink). Leur absence confirme le problème de profil.

                Crédits et licence

                Ce tutoriel est basé sur le travail original de Frédéric Danis :

                • Article original : pw_wp_bluetooth_rpi_speaker
                • Licence : LGPL-2.1-or-later

                Les scripts fournis sont sous licence LGPL-2.1-or-later. Vous êtes libre de les utiliser, modifier et distribuer selon les termes de cette licence.