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.
Rechercher & filtrer
Filtrer par année / mois
Derniers commentaires
Batch Windows: calculer le temps écoulé entre 2 dates
Nour (non inscrit)
dimanche 19 mars 2023 à 11:13

Bonjour,Merci d’avoir répondu à mon message ça m’a permis de corriger le script et mieux comprendre le calcul du timestamp :A la base j’étais intéressé pour calculer une période ou le temps d’expiration d’un fichier et je me suis retrouver à essayer de comprendre le TIMESTAMP (le temps en cours en s[...]

Batch Windows: calculer le temps écoulé entre 2 dates
avatar de Jesus Forain
Jesus Forain
vendredi 17 mars 2023 à 10:49

J'avais déjà essayé d'écrire un code pour convertir les timestamps Unix mais c'est bien plus compliqué que ça et j'avais abandonné, préférant utiliser les fonctions système.Dans ton script, je voit déjà un problème car les années bissextiles sont en dur, ce qui rend le programme obsolète dans le fut[...]

Batch Windows: calculer le temps écoulé entre 2 dates
Nour (non inscrit)
jeudi 16 mars 2023 à 17:35

Bonjour,J'aime bien votre scripte, il m'a aider à comprendre le temp en timestamp, en tout cas merci ça m’a permis de calculer le temps d'expiration d'un fichier (  lifetime ).En partant de ton script j'ai pu en faire un nouveau de ma manière pour calculer le timestamp en cours en dos c'est possible[...]

Batch Windows: calculer le temps écoulé entre 2 dates
Nour (non inscrit)
jeudi 16 mars 2023 à 15:05

Merci

Réparation d'une VMC: condensateur HS
avatar de Jesus Forain
Jesus Forain
mercredi 15 mars 2023 à 10:15

J'ai simplement remplacé les condensateurs sans toucher au câblage.Un moteur à 4 fils je voit pas trop comment ça se branche. Si l'un des fils était jaune/vert (terre) j'aurais compris mais pas là. Soit l'un des fils n'est pas connecté, soit il y a plusieurs bobinages pour la vitesse lente/rapide.Si[...]

Réparation d'une VMC: condensateur HS
Arno (non inscrit)
mercredi 15 mars 2023 à 07:21

Bonjour Jesus Forain 😜Peux tu me dire comment as tu effectué tes branchement. Quels fils sur quel fil du moteur. J’ai 4 fils qui sortent du moteur. 2noirs un rouge et un marron. Et je dois faire comme toi, mettre de condensateurs pour en remplacer un .Merci de ton retour 

Réparation d'un radio réveil impossible à mettre à l'heure et qui affiche 7L7
avatar de Jesus Forain
Jesus Forain
jeudi 2 mars 2023 à 23:05

Sans en connaître son fonctionnement c'est difficile.Les horloges utilisant un circuit LM8560 comme mon réveil se basent sur la fréquence du courant électrique pour mesurer le temps. Idéalement, cette fréquence devrait être de 50Hz mais en pratique elle varie légèrement selon la charge du réseau éle[...]

Réparation d'un radio réveil impossible à mettre à l'heure et qui affiche 7L7
__invité__
jeudi 2 mars 2023 à 19:53

Moi mon réveil avance tropvite. ilprend 1O minutes par jour. Que puisje faire ? 

Le cloud, ce nouveau Minitel
avatar de Jesus Forain
Jesus Forain
mardi 21 février 2023 à 00:08

Quand le fabriquant de ta caméra connectée a décidé qu'elle était arrivé en fin de vie et de ne plus la supporter alors qu'elle fonctionne parfaitement. Encore un exemple des danger du cloud, voilà pourquoi je préfère me tenir éloigné de ce genre de matériel.À voir sur Reddit

Quand les enseignes de pharmacies deviennent des clips de musique techno!
__invité__
mardi 14 février 2023 à 00:31

horrible !!

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

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)

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

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)

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

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)

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)

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)

*pardontre = Parcontre !

TPM-28 (non inscrit)

“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

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)

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

Avatar de Jesus Forain

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)

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)

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

Avatar de Jesus Forain

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)

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 ?


 


 

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

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)

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

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)

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

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)

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)

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
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)

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

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)

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

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)

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!!!

Envoyer un commentaire
chargement de l'éditeur en cours...
Envoi d'images

Envoi de fichiers

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