Blog de Jesus Forain Blog de Jesus Forain
Blog personnel de Jesus Forain où les principaux sujets sont l'informatique, la technologie, le spatial mais aussi divers sujets.
Site hébergé sur un Raspberry PI 4 avec une connexion ADSL infos ici
Rechercher & filtrer
Filtrer par année / mois
Derniers commentaires
Appairer un Freeplug avec un boîtier CPL d'une autre marque
avatar de Jesus Forain
Jesus Forain
mardi 26 mars 2024 19:44

J'ai regardé les spécifications du CPL Netgear XWNB5201 et c'est un CPL avec point d'accès WIFI. Le CPL des freeplugs est standard (norme AV200) et compatible avec les autres CPL du marché. Il faut appairer le CPL Netgear avec les freeplugs.Le plus simple est de brancher les 2 freeplugs et le CPL Ne[...]

Appairer un Freeplug avec un boîtier CPL d'une autre marque
__invité__
mardi 26 mars 2024 16:25

Bonjour et merci pour votre réponse !Pas facile d'expliquer clairement par écrit.Avant j'étais chez SFR et j'avais deux prises CPL 500 Netgear.Maintenant, je suis passé chez Free et du coup, ils m'ont posé deux Freeplugs. Par contre le Freeplug récepteur n'émet pas de Wifi contrairement à la CPL Net[...]

Starship: décollage prévu le 14 mars (ou après)
avatar de Jesus Forain
Jesus Forain
jeudi 14 mars 2024 23:43

Le décollage du Starship vu sous plusieurs angles par les équipes de NASASpaceflight. On voit bien les ondes de choc au moment de l'allumage des moteurs. Dans les heures et jours qui suivent, on devrai voir diverses vidéos du Starship apparaître sur YouTube. Et je me demande si quelqu'un a réussi à [...]

Starship: décollage prévu le 14 mars (ou après)
avatar de Jesus Forain
Jesus Forain
jeudi 14 mars 2024 15:31

Images de la rentrée atmosphérique, le Starship a été perdu durant cette phase. Ça aura encore été un vol incroyable avec toujours de gros progrès par rapport aux vols précédents.  

Starship: décollage prévu le 14 mars (ou après)
avatar de Jesus Forain
Jesus Forain
jeudi 14 mars 2024 15:01

En attendant que le Starship revienne sur Terre, tu peux écouter ça pour patienter, mais trouveras-tu la référence?   ▶  

Starship: décollage prévu le 14 mars (ou après)
avatar de Jesus Forain
Jesus Forain
jeudi 14 mars 2024 14:36

Magnifique! 

Starship: décollage prévu le 14 mars (ou après)
avatar de Jesus Forain
Jesus Forain
jeudi 14 mars 2024 13:54

Le direct de SpaceX est commencé sur X → lienLes réservoirs sont en cours de remplissage.

Starship: décollage prévu le 14 mars (ou après)
avatar de Jesus Forain
Jesus Forain
jeudi 14 mars 2024 13:26

GO pour le remplissage des réservoirs, décollage encore repoussé à 14h25.

Starship: décollage prévu le 14 mars (ou après)
avatar de Jesus Forain
Jesus Forain
jeudi 14 mars 2024 12:52

Décollage repoussé à 14h02 14h10, présence de bateaux dans la zone d'exclusion (lien).

Starship: décollage prévu le 14 mars (ou après)
avatar de Jesus Forain
Jesus Forain
jeudi 14 mars 2024 12:12

Changement d'horaire, le décollage est repoussé à 13h30 (lien).

Raspberry Pi en récepteur audio Bluetooth (A2DP audio sink)

- 3952 vues

EDIT 01/09/2022: procédure modifiée pour fonctionner avec Raspberry OS 2022-04-07 basé sur Debian 11

Je vais t'expliquer comment utiliser un Raspberry PI en tant que récepteur audio Bluetooth et ainsi pouvoir transformer n'importe quelle chaîne HI-FI ou ampli en enceinte Bluetooth. Ce dispositif utilise le protocole A2DP utilisé par toutes les enceintes Bluetooth du commerce.

Il est possible de connecter plusieurs appareils en même temps et la latence est imperceptible (astuce de TPM-28 en commentaire).

Ceci n'est pas spécifique au Raspberry, ça fonctionne aussi sur tout PC Linux en adaptant les commandes à ta distribution.

Pour les anciens modèles datant d'avant le PI3 et dépourvus de connections sans fil, il faudra utiliser une clé USB Bluetooth.

Ce tuto est d'abord à but éducatif, si c'est juste pour envoyer le son en Bluetooth sur ta chaîne HIFI, un Raspberry est surdimensionné pour cet usage, il faudra considérer la consommation d'énergie, le coût et la complexité. En revanche ça peut être utile pour divers projets ou alors recycler du matériel que tu possèdes déjà.
Si c'est juste pour envoyer le son en Bluetooth sur ta chaîne HIFI, saches que ce genre de dispositif existe tout fait dans le commerce à des prix allant de quelques euros à plusieurs centaines d'euros selon la qualité sonore. L'utilisation est très simple puisqu'il n'y a aucun paramétrage à faire et qu'il suffit juste de l'appairer comme n'importe quelle enceinte Bluetooth. De plus la plupart intègrent une batterie et un micro permettant de l'utiliser comme kit mains libres pour téléphoner. Exemples ici.

La qualité du son ne dépend pas du Bluetooth qui transporte juste un signal numérique ne subissant aucune modification mais du convertisseur numérique vers analogique appelé DAC (Digital to Analogue Converter = Convertisseur Numérique vers Analogique) ou “interface audio” dans le monde de la musique. C'est ce convertisseur qui transforme le signal numérique en signal analogique qui est envoyé sur les hauts-parleurs. Tu peux brancher à ton Raspberry une carte son USB pour avoir un son de meilleure qualité.

Pour y parvenir j'ai beaucoup galéré car la plupart des tutos que l'on trouve sur internet sont trop vieux et les commandes ne fonctionnent plus avec les nouvelles versions des systèmes Linux. Ce tuto peut donc devenir en partie obsolète à la prochaine version de l'OS.
La difficulté est que la configuration repose sur plusieurs éléments: radio Bluetooth, authentification, paramètres audio. La recherche d'erreurs s'en trouve compliquée.

Cette procédure a été testée sur un Raspberry PI 4 sous raspios_lite_arm64-2022-04-07

Toutes les commandes se font avec l'utilisateur root.

 

Installation des paquets

On aura besoin des paquets bluez-tools et bluez-alsa-utils. Avec un Raspberry OS basé sur Debian 11 on est dans un cas particulier de "transition" car il n'y a plus de paquet ALSA pour le Bluetooth. Le paquet bluealsa n'est plus disponible mais le sera dans la prochaine version sous le nom de bluez-alsa-utils. On va donc utiliser le paquet de Debian 12 Bookworm.

Avant d'installer les paquets, on va ajouter les dépôts Debian Bookworm

echo "deb http://archive.raspbian.org/raspbian/ bookworm main" | sudo tee /etc/apt/sources.list.d/armbian.list
printf 'Package: *\nPin: release n=bookworm\nPin-Priority: 100\n' | sudo tee --append /etc/apt/preferences.d/limit-bookw

Mets à jour les dépôts

apt update

Tu obtiens ce résultat avec une erreur de signature avec NO_PUBKEY; copie cette clé, ici 9165938D90FDDD2E

Atteint :1 http://archive.raspberrypi.org/debian bullseye InRelease
Atteint :2 http://deb.debian.org/debian bullseye InRelease
Réception de :3 http://deb.debian.org/debian bullseye-updates InRelease [44,1 kB]
Atteint :4 http://security.debian.org/debian-security bullseye-security InRelease
Réception de :5 http://archive.raspbian.org/raspbian bookworm InRelease [15,0 kB]
Err :5 http://archive.raspbian.org/raspbian bookworm InRelease
 Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 9165938D90FDDD2E
Lecture des listes de paquets... Fait
W: Erreur de GPG : http://archive.raspbian.org/raspbian bookworm InRelease : Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 9165938D90FDDD2E
E: Le dépôt http://archive.raspbian.org/raspbian bookworm InRelease n'est pas signé.
N: Les mises à jour depuis un tel dépôt ne peuvent s'effectuer de manière sécurisée, et sont donc désactivées par défaut.
N: Voir les pages de manuel d'apt-secure(8) pour la création des dépôts et les détails de configuration d'un utilisateur.

Ajoute la clé en laissant l'adresse keyserver.ubuntu.com, on est sur Debian mais n'est pas une erreur.

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 9165938D90FDDD2E

Tu obtiens ce résultat, si tu as 1 dans importées c'est bon.

Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
Executing: /tmp/apt-key-gpghome.fX5MYkXxGv/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 9165938D90FDDD2E
gpg: clef 9165938D90FDDD2E : clef publique « Mike Thompson (Raspberry Pi Debian armhf ARMv6+VFP) <mpthompson@gmail.com> » importée
gpg:       Quantité totale traitée : 1
gpg:                     importées : 1

Refais une mise à jour des dépôts, tu ne dois plus avoir d'erreur de signature.

apt update

On peut maintenant installer les paquets dont on aura besoin.

apt install bluez-tools bluez-alsa-utils

Une fois l'installation terminée je te conseille de commenter les lignes du fichier /etc/apt/sources.list.d/armbian.list ça t'éviteras de mettre à jour ton système avec les paquets de prochaine version et de te retrouver avec un système bancal. Normalement grâce aux règles de priorité des dépôts ça ne devrait pas arriver mais on ne sait jamais.

 

Activer la sortie jack par défaut

La sortie audio par défaut est le HDMI et s'il n'y a pas d'écran branché sur le PI ça pose problème pour la suite. Auparavant cela se configurait via le fichier /boot/config.txt mais depuis la version Buster de Raspberry PI OS cette méthode ne fonctionne plus.

Liste les cartes son disponibles

cat /proc/asound/cards

Tu obtiens un résultat de ce type. Il y a 2 cartes son numérotés 0 et 1, celle qui nous intéresse ici est la N°1 Headphones correspondant à la sortie jack 3,5mm. La N°0 est la sortie audio HDMI.

0 [b1             ]: bcm2835_hdmi - bcm2835 HDMI 1
                     bcm2835 HDMI 1
1 [Headphones     ]: bcm2835_headphonbcm2835 Headphones - bcm2835 Headphones
                     bcm2835 Headphones

Crée le fichier de configuration indiquant la carte son par défaut à utiliser

vim /etc/asound.conf

Mets-y ces 2 lignes

defaults.pcm.card <NUMERO_CARTE_SON>
defaults.ctl.card <NUMERO_CARTE_SON>

Dans cet exemple on utilise la carte son N°1 par défaut

defaults.pcm.card 1
defaults.ctl.card 1

Redémarre le Raspberry

reboot

Et fais un test pour vérifier que ça fonctionne.

Branche quelque chose sur la prise jack (casque, enceinte, etc…) et exécute cette commande pour lire un fichier wav quelconque.

aplay <FICHIER_WAV>

Tu as peut-être des fichiers wav dans /usr/share/sounds/alsa/, dans ce cas tu peux exécuter par exemple

aplay /usr/share/sounds/alsa/Front_Left.wav

Tu dois entendre un son, signe que tout fonctionne.

Tu peux modifier le volume avec alsamixer

alsamixer

Tu as une interface graphique, utilise les flèches [HAUT] et [BAS] pour modifier le volume. Vérifie que tu as bien "Headphone” en dessous de la barre. Si ce n'est pas le cas appuie sur [F6] et sélectionne “Headphone”. Quand tu as terminé appuie sur [échap].

Si tu connecte ton Raspberry à des enceintes, il faut mettre le volume au maximum afin d'augmenter le ratio signal / bruit. Ceci permet d'éviter d'amplifier le bruit de fond, ce psssss,  produit par la sortie audio du Raspberry et d'avoir un meilleur son.

 

Service Bluetooth

Il est chargé de la gestion des périphériques Bluetooth.

Rendre le Raspberry PI visible

On va rendre le Raspberry visible par les autres périphériques Bluetooth.

Liste les périphériques Bluetooth de ton Raspberry

ls /var/lib/bluetooth/

Si tu n'a pas d'autre dispositif Bluetooth connecté à ton Raspberry tu n'auras qu'une ligne de ce type

A8:F7:B0:94:3D:9C

En réalité c'est un nom de dossier correspondant à l'adresse MAC de ton périphérique Bluetooth dans lequel il y a un fichier settings que l'on va éditer.

vim /var/lib/bluetooth/<ADRESSE_MAC_BLUETOOTH>/settings

Exemple si ton adresse MAC est A8:F7:B0:94:3D:9C

vim /var/lib/bluetooth/A8\:F7\:B0\:94\:3D\:9C/settings

C'est un fichier vide, colle ça dedans.

[General]
Discoverable=true

Définir le type de classe Bluetooth

On va définir de quel type de périphérique Bluetooth on s'annonce. Dans notre cas on va s'annoncer en tant que haut-parleur (= une enceinte Bluetooth) ce qui correspond au code hexadécimal 0x414. Tu as une liste des différents codes ici.

Ouvre le fichier de configuration du Bluetooth

vim /etc/bluetooth/main.conf

Juste sous [General] ajoute ces 2 lignes. Le paramètre DiscoverableTimeout avec la valeur 0 rend le Raspberry toujours visible

[General]
DiscoverableTimeout = 0
Class = 0x414

Changer le nom Bluetooth (optionnel)

Par défaut le nom Bluetooth du Raspberry est son hostname mais il est possible de mettre un autre nom.

Crée un fichier

vim /etc/machine-info

Et mets-y ça

PRETTY_HOSTNAME=<CE_QUE_TU_VEUX>

Dans cet exemple on appelle notre Raspberry "RPI BT audio"

PRETTY_HOSTNAME=RPI BT audio

Activer et démarrer le service

Il ne reste plus qu'à activer le service au démarrage et le démarrer

systemctl enable bluetooth
systemctl start bluetooth

 

Agent Bluetooth

Il est chargé de l'appairage et de l'authentification des appareils.

Crée un fichier de service systemd.

vim /etc/systemd/system/bt-agent.service

Et colle ça dans le fichier. La commande /usr/bin/yes sert à répondre toujours oui lorsque le bt-agent le demande évitant ainsi la saisie d'un code PIN.

[Unit]
Description=Bluetooth Auth Agent
After=bluetooth.service
PartOf=bluetooth.service

[Service]
Type=simple
ExecStart=/bin/sh -c '/usr/bin/yes | /usr/bin/bt-agent -c DisplayOnly'

[Install]
WantedBy=bluetooth.target

Active le service au démarrage et le démarre-le

systemctl enable bt-agent
systemctl start bt-agent

 

Audio Bluetooth

Le service bluez-alsa va récupérer le flux audio Bluetooth et l'envoyer sur la sortie audio.

Modifie le fichier de configuration afin de s'annoncer en “a2dp-sink” (enceinte Bluetooth)

vim /etc/default/bluez-alsa

Le paramètre OPTIONS est vide, ajoute --profile=a2dp-sink. Ton fichier doit être comme ça:

# Config file for blues-alsa.service
# Set the bluealsa option, please see bluealsa manpage
OPTIONS="--profile=a2dp-sink"

Crée un fichier de service systemd

vim /etc/systemd/system/aplay.service

Et colle ça dans le fichier. Grâce aux indications de TPM-28 dans les commentaires, les paramètres --pcm-buffer-time=135000 --pcm-period-time=33750 permettent de réduire la latence qui est d'environ 0,5 secondes par défaut.

[Unit]
Description=BlueALSA aplay service
After=bluetooth.service
Requires=bluetooth.service

[Service]
ExecStart=/usr/bin/bluealsa-aplay --pcm-buffer-time=135000 --pcm-period-time=33750 00:00:00:00:00:00 -vv
Restart=always

[Install]
WantedBy=multi-user.target

Activer le service au démarrage et démarre-le

systemctl enable aplay
systemctl start aplay

À ce stade, ton Raspberry devrait être visible, si ce n'est pas le cas, redémarre-le. Attention, il peut mettre un peu de temps avant de redémarrer. Ça permettra aussi de valider que tout démarre automatiquement au démarrage.

reboot

Ton Raspberry PI est maintenant opérationnel, tu n'a plus qu'à tester que tout fonctionne.

Depuis ton smartphone / tablette / ordinateur recherche les dispositifs Bluetooth, connecte-toi au Raspberry PI et lance la lecture d'un fichier audio. Tu dois avoir le son qui sors de la prise jack du Raspberry PI.

partager sur Facebook
COMMENTAIRES
TPM-28 (non inscrit)
samedi 27 août 2022 12:34

Merci beaucoup pour ce tuto que je cherchait depuis longtemps 
vraiment un gros merci pour votre travail je sais a quel point c'est dur 

Avatar de Jesus Forain
samedi 27 août 2022 13:19

J'ai essayé de détailler et d'expliquer au maximum les étapes afin que ce soit compréhensible même par un débutant. Je trouve que le problème de nombreux tutos et documentation c'est leur manque de clarté et surtout d'exemples. Ils font comme si l'on connaissait déjà tout et bien souvent il manque des explications ou alors les exemples de code sont incomplets, et encore quand il y en a!

Je me suis déjà pris la tête sur des bibliothèques logicielles et leur documentation bien trop maigre qui t'oblige à passer des heures sur internet à chercher un bout de code par ci par là et mettre tout bout à bout pour comprendre comment ça fonctionne.

En tout cas, merci d'avoir laissé un commentaire car c'est plutôt rare sur ce blog et ça fait toujours plaisir.

TPM-28 (non inscrit)
mercredi 31 août 2022 11:17

Bonjour,

Encore déso pour le dérangement mais j'ai un problème :
je voudrait suivre ce tuto, non pas sur la version raspios_lite_arm64-2021-05-28
mais sur la dernière version cette a dire sur la 2022-04-04
et tout "fonctionne" mais le paquet bluealsa ne veut pas s'installer 
pourtant avec votre version 2021 cela fonctionne.
Quand j'essaye d'installer bluealsa il me retourne cela en output :

root@raspberrypi:~# apt install bluealsa
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package bluealsa is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'bluealsa' has no installation candidate

Donc je voudrais un peu d'aide… Merci d'avance 

(FlashInfo : j'ai 15ans)

Avatar de Jesus Forain
mercredi 31 août 2022 12:04

Je viens de tester sur un rpi avec la dernière version de Raspberry Pi OS et j'ai exactement le même message d'erreur.

C'est l'éternel problème des tutos Linux, ça fonctionne trop bien puis il y a un changement qui fait que ça ne fonctionne plus à un moment donné.

J'ai trouvé ça qui pourrait être une solution : https://sigmdel.ca/michel/ha/rpi/bluetooth_in_rpios_02_en.html#bluealsa3

On y apprends que le paquet bluealsa a été supprimé de la dernière version de Raspberry Pi OS et qu'il est remplacé par bluez-alsa-utils disponible dans la prochaine version de l'OS. La manip consiste à ajouter le dépôt de la prochaine version, d'installer le paquet et de commenter ce dépôt pour empêcher le système de se mettre à jour avec.

Je n'ai pas testé mais il va falloir que je mette ce tuto à jour en espérant que ça fonctionne.

TPM-28 (non inscrit)
mercredi 31 août 2022 12:14

Je viens de tester et cela ne fonctionne pas, mais j'ai une piste …
mais pour cela il faut que je re grave ma carte sd et que je test si cela fonctionne
je vous tiens au courant.

TPM-28 (non inscrit)
mercredi 31 août 2022 12:44

Je viens de tester et pardontre “Installing BlueALSA 1.4.0
marche …
 mais le "Installing BlueALSA 3.0.0"  ne marche pas …

TPM-28 (non inscrit)
mercredi 31 août 2022 12:46

*pardontre = Parcontre !

TPM-28 (non inscrit)
mercredi 31 août 2022 13:21

“Il est possible de connecter plusieurs appareils en même temps et il y a une latence d'environ 0,5 secondes. Si ce n'est pas gênant pour écouter de la musique ça l'est beaucoup plus pour la vidéo car on se retrouve avec un décalage entre le son et l'image. Je ne sais pas si l'on peux réduire cette latence.”

j'ai trouver une solution pour ce temp de latence grâce a un argument bluealsa  : 

bluealsa-aplay --pcm-buffer-time=135000 --pcm-period-time=33750 -vv 00:00:00:00:00:00
Avatar de Jesus Forain
jeudi 1 septembre 2022 16:56

J'ai mis à jour et testé le tuto, maintenant c'est bon ça fonctionne avec la dernière version de Raspberry OS 2022-04-07 sur un Raspberry Pi 4.

J'ai aussi ajouté dans le tuto les paramètres que tu as ajoutés à bluealsa-aplay et je te confirme que ça supprime la latence.

TPM28 (non inscrit)
jeudi 1 septembre 2022 17:55

Et merci pour l'install de bluealsa, car j'ai pas trouver comment faire 
mais vous oui !

Avatar de Jesus Forain
jeudi 1 septembre 2022 18:42

En fait le service bluealsa a changé de nom et maintenant c'est bluez-alsa. J'ai préféré utiliser la version la plus récente pour être prêt pour la prochaine version de Debian. Toujours penser aux évolutions futures!

J'ai testé aujourd'hui en partant d'une installation “propre” (aussi appelée “clean install”) et normalement t'as juste à faire un copier coller des lignes de commandes et ça fonctionne.

TPM-28 (non inscrit)
jeudi 1 septembre 2022 21:54

normalement t'as juste à faire un copier coller des lignes de commandes et ça fonctionne

Je vais faire un script qui fait tout cela automatiquement …

TPM28 & felix068 (non inscrit)
lundi 5 septembre 2022 18:21

https://github.com/felix068/RasPi-MLC

Avatar de Jesus Forain
lundi 5 septembre 2022 22:56

Je vois que t'as crée un centre multimédia.
J'ai regardé ton script install.sh et j'ai quelques remarques pour l'améliorer:

  • les commandes sont exécutés à la suite sans vérifier le code retour. Si une commande échoue le script va continuer alors qu'il y a un problème. 
  • ça serait mieux de faire en premier l'installation des paquets et le téléchargement des fichiers puis la configuration. Et aussi mettre tous les fichiers dans un seul tar comme ça il n'y a qu'un téléchargement à faire.
  • la clé du dépôt codée en dur. L'extraire avec un sed aurait été mieux car rien ne garanti qu'elle ne change pas dans le futur.
  • le apt full-upgrade je crois pas que ce soit nécessaire et l'utilisateur n'a pas forcément envie d'avoir une mise à jour “surprise” de son système. Il peut y avoir des paquets lui posant problème dans la mise à jour.

T'as déjà un script fonctionnel pour commencer, ensuite à toi de l'améliorer avec la gestion des erreurs. Et attention, une mise à jour d'un paquet ou du système peut rendre le script non fonctionnel.

TPM28 (non inscrit)
mardi 6 septembre 2022 18:56

Salut.

  • Je me demande si tu à un compte github pour te rajouter au projet …
     
  • Et je suis d'accord sur tous les point sauf la mise à jour, car pour une raison que j'ignore
    StartX et Xorg ne fonctionne pas et n'affiche pas chromium. Tan que l'on ne met pas à jour le system.
    Le navigateur web est basé sur sa : WP_Kiosk_Raspi (5inch screen).
     
  • Et pour la vérification du retour de la commande, je fait quoi si cela fait une erreur ?


 


 

mardi 6 septembre 2022 18:57
modifié mardi 6 septembre 2022 18:57 par TPM28

voila j'ai enfin crée mon compte … (et je peut edit mes message WAH !)

Avatar de Jesus Forain
mardi 6 septembre 2022 22:44

Je n'ai pas de compte github et puis j'aurais pas le temps de participer au projet, le développement de mes sites m'en prends déjà pas mal.

Pour la mise à jour du système X, j'en ai aucune idée car j'utilise essentiellement Linux pour des serveurs uniquement en mode console.

Si une vérification échoue, c'est simple tu fais tout ce que les programmes font: afficher un message d'erreur et quitter! comme dans le script chaque commande dépend de la précédente, si une commande échoue t'arrêtes tout et tu informe l'utilisateur du problème.

Mathieu (non inscrit)
lundi 31 octobre 2022 18:36

Bonjour

 

Tuto testé ce jour sur RPI3 et OS 2022-09-22-raspios-bullseye-arm64-lite.

Le tuto est super clair, et me permet de donner un coup de jeune à ma hifi.

Le plus difficile pour moi a été de prendre en main vi :-)

MERCI !

 

PS: La portée du bluetooth intégré dans le RPI3 est très limite (le stream ne marchait plus bien au delà de 4 mètres). J'ai essayé avec un petit dongle USB et ça marche beaucoup mieux.

 

Avatar de Jesus Forain
mardi 1 novembre 2022 21:21

Ravi que ce tuto soit utile!

Pour la portée c'est peut-être dû au WIFI car il opère sur la même fréquence de 2,4GHz que le Bluetooth, il y a le même problème sur les smartphones. Je n'ai pas fait de tests de portée donc je ne pourrais rien dire à ce sujet.

Jmphiphi (non inscrit)
jeudi 10 novembre 2022 13:19

Salut!

Franchement ce tuto est excellent!!

La démarche est bien documentée et j'ai l'impression d'avoir appris après l'avoir réalisée. Franchement bravo, car j'en ai essayé d'autres sans succès!

deux petites questions: 

1-avec quelle instruction puis-je trouver un flag pour allumer une led pour indiquer l'état de pairing/paired/unpair?

J'imagine que c'est autour de BT agent, mais pas trouvé!

2- J'ai aussi un programme en python3 lancé par systemcl  qui me permet d'écouter des webradios. L'idée est d'interrompre ce programme lorsque le "device est paired" et de le reprendre lorsqu'il est déconnecté. Penses-tu que cela soit possible de jouer avec les systemctl start stop de mon programme radio?

Bravo encore

JM

 

Avatar de Jesus Forain
jeudi 10 novembre 2022 16:40

Salut,

Ce tuto je l'ai écris afin que ce soit facile à comprendre et que tu n'aie qu'à faire un copier-coller des commandes pour que ça fonctionne. Le problème de la plupart des tutos c'est qu'ils manquent souvent de toutes les explications nécessaires et parfois sont obsolètes et pas mis à jour mais ici grâce à la remarque d'un internaute laissée en commentaire, je l'ai mis à jour.

Pour la LED et la webradio, mon idée serait d'aller voir si dans /var/log/messages il n'y a pas quelque chose d'inscrit à la connexion/déconnexion d'un appareil Bluetooth ou sinon aller voir le log de bt-agent.
Dans ton script python, tu crée un thread en arrière plan qui va scruter le fichier de log, par exemple avec une regex, et à la connexion d'un appareil Bluetooth tu arrête la webradio et allumes la LED; à la déconnexion tu démarres la webradio et éteins la LED.
Je connais pas trop Python, je sais pas si c'est possible sinon il faut créer un service qui scrute les logs et démarre/arrête la webradio lors des connexions/déconnexions.

Pour la LED, j'avais fait ça il y a longtemps, tu peux en brancher une directement sur GPIO pour tester mais ce n'est pas tellement recommandé car ça risque d'endommager l'interface GPIO à la longue. Il ne faut pas utiliser une LED trop puissante et mettre une résistance. Pour l'allumer/éteindre, si je me souviens c'est juste une commande à exécuter.

Jmphiphi (non inscrit)
jeudi 10 novembre 2022 17:27

C'est top!

Je vais y réfléchir et faire qq tests. Déja, je suis content car la partie audio est commune avec vlc sur alsa. Merci beaucoup

@+

S3y3ma (non inscrit)
jeudi 24 novembre 2022 16:59

Bonjour ! tout d'abord un grand merci pour ce super tuto! 

cela m'a permis de me plonger dans un raspberry pi que j'avais depuis 2015 qui trainait pour du retrogaming mais pas grand chose de plus. 

j'ai tout suivi à la lettre cela marche super bien, j'ai rajouté ensuite via d'autres tuto shairport et raspotify et ça fonctionne très bien. 

Mon seul problème :  je n'arrive pas à connecter un seul périphérique, à savoir un vidéo projecteur : Epson EH-TW7000. 

Peut être que je me plante, mais je me demande si ce n'est pas en rapport avec le SCMS-T bluetooth protocole. dans la fiche technique du Epson ils exigent deux choses pour un fonctionnement bluetooth : “Assurez-vous que l'appareil audio Bluetooth qui est connecté au projecteur est compatible avec le système de limitation des possibilités de duplication (SCMS-T) et le protocole A2DP”. 
 

Je voulais donc savoir s'il était possible de rajouter un script dans ce sens ? En tout cas si vous pouviez m'aider à comprendre et à trouver une solution cela serait génial. 
 

ps : je suis un vrai n00b mais je n'ai pas peur d'apprendre. 

merci pour tout. 

Avatar de Jesus Forain
jeudi 24 novembre 2022 18:03
modifié jeudi 24 novembre 2022 18:09 par Jesus Forain

Alors là je viens de découvrir un truc! je ne savais pas qu'il y avait des DRM sur le Bluetooth, encore un truc inutile pour nous embêter et ce n'est pas ça qui va nous empêcher de récupérer le son.

Pour le RPI, j'ai cherché vite fait et j'ai rien trouvé pour ce SCMS-T. Par contre tu ne semble pas être le seul à avoir un problème avec la connexion de ce projecteur (ça aussi, je ne savais pas qu'il y avait des projecteurs avec BT intégré), il n'y a qu'à voir ici: impossible de connecter certaines barres de son avec ce projecteur à cause du SCMS-T.

Il faudrait voir s'il n'y aurait pas un menu caché sur le projecteur pour désactiver le SCMS-T.

S3y3ma (non inscrit)
jeudi 24 novembre 2022 18:38

Merci pour ta réponse super rapide ! 

J'ai cherché et malheureusement pas trouvé de réponse à mon problème non plus. Je me demandais s'il n'y avait pas d'option à activer (j'ai pu voir que sous windows par exemple on pouvait activer ou désactiver le SCMS-T).

Pour ce qui est du projecteur, il fonctionne très bien avec mon enceinte Bluetooth Bose soundlink 2 de 2015, sans avoir trouvé si l'enceinte en question possédait ou non ce DRM je me suis dit que c'était peut être en rapport. 

Dans le bluetoothctl lorsque j'essaye de le connecter cela passe de oui à non de manière régulière, jusqu'à ce que m'affiche un dramatique “failed to connect” sur mon vidéo proj…  

[CHG] Device 70:61:BE:3E:A4:AD Connected: yes
[CHG] Device 70:61:BE:3E:A4:AD Connected: no
[CHG] Device 70:61:BE:3E:A4:AD Connected: no
[DEL] Device 70:61:BE:3E:A4:AD EpsonProjector
[NEW] Device 70:61:BE:3E:A4:AD EpsonProjector
[CHG] Device 70:61:BE:3E:A4:AD Connected: no
[DEL] Device 70:61:BE:3E:A4:AD EpsonProjector
[NEW] Device 70:61:BE:3E:A4:AD EpsonProjector
[CHG] Device 70:61:BE:3E:A4:AD Connected: no

 

je ne sais plus trop quoi essayer… 
 

Avatar de Jesus Forain
jeudi 24 novembre 2022 18:47

Merci pour ta réponse super rapide ! 

C'est parce que j'ai implémenté un système de notifications push sur le site (menu > activer les notifications) qui envoie une notification dès que quelque chose est posté.

Dans le bluetoothctl lorsque j'essaye de le connecter cela passe de oui à non de manière régulière, jusqu'à ce que m'affiche un dramatique “failed to connect” sur mon vidéo proj…

Il doit se connecter puis récupérer les services BT offerts par ton RPI et comme le SCMS-T n'est pas disponible il se déconnecte. Ou alors c'est un problème de liaison radio: le projecteur est trop loin du RPI ou le signal est brouillé.

jmphiphi (non inscrit)
dimanche 27 novembre 2022 14:00

Salut!

Je suis encore en train de galérer pour récupérer les infos de connexion… Le syslog est extrêmement bavard et je loupe regulièrement des paquets d'info pour récupérer une info de connexion fiable. Je vais trouver un moyen…
En revanche j'ai un gros souci de missing RTP packets lorsque je connecte un téléphone IOS, alors qu'il n'y a pas de pb avec android. Any idea?

Bonne journée

Avatar de Jesus Forain
lundi 28 novembre 2022 13:38

Ce problème de RTP est peut-être dû à une spécificité de chez Apple parce que chez Apple ils font un peu ce qu'ils veulent avec les normes en verrouillant au maximum pour forcer les utilisateurs à rester dans leur écosystème.

Il faudrait tester avec divers matériels (Android, PC Windows et Apple, tablettes Android et Apple) et voir si le problème ne se produit qu'avec les appareils Apple.

Concernant Apple, j'avais eu la cas d'un Iphone qui s'appairait avec une voiture, le Bluetooth était connecté mais impossible d'utiliser le mains libre ou d'envoyer la musique sur les hauts-parleurs alors qu'avec un Android ça fonctionnait sans problème. Autre cas, avec un autre IPhone et une enceinte Bluetooth: le téléphone s'appaire (bip de connexion dans l'enceinte) et et se déconnecte aussitôt (bip de déconnexion dans l'enceinte) alors que l'enceinte fonctionne parfaitement avec Android.

jmphiphi (non inscrit)
samedi 7 janvier 2023 18:56

bonsoir et belle année à tous

Pour les pb de pertes de paquets avec un iphone en streaming audio, il suffit d'augmenter le buffer

dans le service de blue-alsa, style:

ExecStart=/usr/bin/bluealsa-aplay --pcm-buffer-time=500000 --pcm-period-time=100000 00:00:00:00:00:00 -vv

et ca fonctionne top!!!

jpdou (non inscrit)
mercredi 3 mai 2023 11:23

Bonjour,

Tres bon tuto. Merci

J'ai ainsi configuré un raspi 4 pour connecter mes anciennes enceintes sur des PC Windows 11 ou des smartphones android. 

Fonctionne très bien. 

Fait en plus : Pour pouvoir contrôler le son depuis le PC ou le téléphone : https://github.com/balena-labs-projects/balena-sound/issues/300

Et j'ai installé pulseaudio. Le son sort alors de la carte pulseaudio (master dans alsamixer)

Tout fonctionne bien sur un RASPI 1B et même  sur un libre computer. Mais sur le raspi4 : 

  • pas de problème sur les téléphones : le son sort bien de la carte pulseaudio 
  • Mais sur les PC : le son sort via la carte bcm2835 et non de la carte pulseaudio. J'arrive à rétablir en redémarrant le service bluetooth ou pulseaudio 

Ce n'est pas gênant sauf que je contrôle aussi le son via une télécommande et un récepteur IR que j'ai installés et qui commandent le son sur la carte pulseaudio.

Si quelqu'un a une idée de cette différence de comportement entre PC windows (11) et android, merci

 

Avatar de Jesus Forain
mercredi 3 mai 2023 22:35

C'est bizarre ce problème avec le RPI4. Quand j'ai fait ce tuto, j'avais testé avec un smartphone Android et un PC Windows 10 sans constater de problème.

Ça peut peut-être venir du codec Bluetooth qui n'est pas le même sur l'ordinateur et le smartphone ou alors de l'implémentation matérielle du contrôleur Bluetooth.

__invité__
mercredi 3 mai 2023 23:55

Merci pour la réponse.

Bizarre car ce n'est pas systématique; il se peut que lors d'un redémarrage d'un PC celui-ci se connecte sur la carte Pulseaudio. 

Je vais vivre avec : j'ai programmé ma télécommande pour piloter le son qu'il soit sur la carte pulseaudio 'Master Playback" ou la carte “headphone playback” 

Seb (non inscrit)
mercredi 10 mai 2023 20:59

Merci pour cet article ! Super utile pour stream sa musique dans une vieille voiture 😇

Ernest (non inscrit)
mardi 23 mai 2023 21:31

Hello !

Super ! Ça fonctionne !

Par contre j'ai du passer direct à raspbian testing (bookworm), cela ne fonctionnait pas avec le depot sur Buster.

Je poursuis mes recherches pour balancer le flux audio bluetooth du raspberry via snapserver, de façon à ce que tous les clients (y compris le raspberry) puisse lire la musique.

 

l

TPM-28 (non inscrit)
dimanche 20 août 2023 01:46

Est-ce que cela intéresse quelqu'un que je fasse une docker tout prêt pour cela ? comme son plus aucun problème de version de debian  etc …

Avatar de Jesus Forain
lundi 21 août 2023 16:32

Docker, j'en ai entendu parler mais je ne me suis jamais intéressé à cette technologie. Si ça peut simplifier l'installation c'est toujours bon à prendre.

TPM28 (non inscrit)
lundi 21 août 2023 21:42

Ok, je vais voir ce que je peux faire... Je ne garantis rien, mais je vais tenter (parce que faire des trucs Bluetooth dans un conteneur Docker, je n'ai jamais encore fait, je ne sais même pas si c'est possible à vrai dire). Et je ne garantis pas le temps que je vais prendre pour le faire, car cela se fera sur mon temps libre.

Romain (non inscrit)
mardi 19 décembre 2023 01:47

Bonjour à tous, je suis extrêmement intéressé par un docker ! Ce serait absolument génial. 

Si jamais tu as besoin d'un testeur je suis là ! 

 

Envoyer un commentaire
chargement de l'éditeur en cours...
Envoi d'images
Cliquez sur le bouton "insérer l'image" pour l'ajouter à votre message, le fond de l'image passe en vert indiquant qu'elle est ajoutée. Les images non insérés sont supprimées.

Envoi de fichiers

Attention! vous n'êtes pas connecté, vous postez en mode invité.