Sommaire
Le contexte
Depuis longtemps, j'utilise un PC branché à mon ampli hifi pour écouter la musique dans le salon. Ça me permet d'avoir un bon son depuis n'importe quel PC (via pulseaudio en réseau, MPD etc) et se passer des enceintes intégrées des PCs de bureau. Ce serveur de son servait aussi à héberger mes courriels, site, et serveur de fichier.
Les choses changent, et depuis quelques temps, j'ai choisi d'héberger ces services sur des instances dédiées, et mon serveur équipé de disques raid, d'une grosse alim était devenu largement surdimensionné par rapport à son utilisation.
En parallèle de ça, j'ai commencé à jouer avec le raspberry pi zero, et l'idée est venue de déporter le son sur un PI0, toujours en jouant avec pulseaudio pour récupérer le son depuis mon PC ou celui de ma femme, mon serveur MPD (qui ne sera allumé cette fois qu'au moment où j'ai besoin de ces fichiers).
Il y a quelques années, j'avais également joué avec un DAC bluetooth (le philips AEA2700) puis avait laissé tombé devant le peu d'entrée de mon ampli qui ne rendait pas l'utilisation pratique. Vu que le PI0 dispose du wifi et du bluetooth, pourquoi ne pas l'utiliser également comme une sortie son pour y connecter les téléphones ? C'est à priori possible, mais n'ai jamais testé ça. À voir.
La carte du PI0 n'a pas de sortie son (il y a quand même une sortie HDMI qui peut être utilisée avec un adaptateur), et j'ai voulu me faire plaisir pour une fois. Vu que le PI0 contient des ports GPIO, de nombreux constructeurs sont venus proposer des extensions pour ajouter une carte son sur le pi. J'ai retenu la Mini Boss de Allo, au vu des critiques glanées ci et là, mais sans avoir d'attente particulières sur la carte. Le but est avant tout de remplacer l'existant.
Ah oui, avant qu'on aborde le sujet dans les commentaires, je ne suis pas mélomane, et je me suis contenté pendant des années des sorties son intégrées aux PC (les fameux AC97 et autres consorts), d'un ampli datant des années 80, et des enceintes peut-être aussi âgées… Mes oreilles ont été modelées par le MP3 et les concerts. Mes avis sur le son ne sont donc pas des références.
Installation
C'est parti pour une petite Raspbian Lite, pas d'interface graphique, le but est que tout fonctionne sans intervention (ou presque).
On configure ce qu'il faut (wifi etc), on branche la carte, et comme le libre fait bien les choses, il suffit d'une ligne de conf dans un fichier pour charger les drivers correspondants :
dtoverlay=allo-boss-dac-pcm512x-audio
Et c'est tout !
Premier test
Pour tester, je me suis copié un fichier directement sur la carte, installé mpg123
, et là. WOW ! (insérer ici le commentaire de quelqu'un qui découvre une nouvelle dimension pour la première fois). Pour être sûr, je débranche tout, je remet les fils sur mon ancien serveur, rejoue le même fichier. Ok, j'ai compris, il n'y aura pas de retour. Je garde !
PulseAudio
Sur le serveur
Maintenant, il ne reste plus qu'à configurer pour avoir le son depuis les PCs. Là c'est facile, il me suffit de reprendre ma configuration précédente :
sudo apt-get install pulseaudio
Dans le fichier /etc/pulse/system.pa
:
# Autoriser les connexions du réseau
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;réseau-local-ipv4/24;réseau-local-ipv6::/64 auth-anonymous=1
Afin que le service démarre avec le raspberry pi, nous allons préparer un petit
script dans le fichier /etc/systemd/system/pulseaudio.service
[Unit]
Description=PulseAudio system server
[Service]
ExecStart=/usr/bin/pulseaudio --system
[Install]
WantedBy=multi-user.target
On active ensuite le démarrage du service avec la commande suivante :
sudo systemctl enable pulseaudio.service
Sur les clients
Je ne voulais pas rediriger par défaut le son vers le pi0. Des fois on a juste besoin de regarder des vidéos de chats, et pour ça, le son du PC suffit largement. Sur les PCs, j'ai donc ajouté une sortie son, tout en gardant le serveur local de pulseaudio :
Ça donne cette ligne à ajouter dans le fichier /etc/pulse/default.pa
:
load-module module-tunnel-sink sink_name=rpi_tunnel server=tcp:192.168.0.2:4713 sink=alsa_output.platform-soc_sound.stereo-fallback
Le nom de la sortie peut être trouvée avec la sortie de la commande pulse pactl list
depuis le pi0
Ça permet de choisir à partir du contrôleur de volume de pulseaudio la sortie vers laquelle on souhaite rediriger le son.
Bluetooth
Et maintenant, nous allons voir comment déclarer le PI0 comme une sortie bluetooth ! En fait, on va utiliser à la fois pulseaudio et son module dédié :
sudo apt-get install pulseaudio-module-bluetooth
et on modifie le fichier /etc/pulse/default.pa
pour le charger :
load-module module-bluetooth-policy
.ifexists module-bluetooth-discover.so
load-module module-bluetooth-discover
.endif
Pour que ça fonctionne, il faut aussi ajouter l'utilisateur pulse
au groupe lp
:
sudo usermod -a -G lp pulse
Il faut bien sûr que le pi0 soit déclaré comme un périphérique capable de recevoir du son. Pour cela, il y a toute une série de codes que l'on peut trouver à cette adresse qui permettent d'identifier la classe du périphérique auprès des appareil. De mon côté, j'ai pris le code 0x200428
qui correspond à une sortie audio HIFI.
Ça se passe ensuite dans le fichier /etc/bluetooth/main.conf
:
Class = 0x200428
# How long to stay in discoverable mode before going back to non-discoverable
# The value is in seconds. Default is 180, i.e. 3 minutes.
# 0 = disable timer, i.e. stay discoverable forever
DiscoverableTimeout = 0
# How long to stay in pairable mode before going back to non-discoverable
# The value is in seconds. Default is 0.
# 0 = disable timer, i.e. stay pairable forever
PairableTimeout = 0
Autorisation d'un périphérique
Notre pi0 autorise maintenant n'importe qui a s'appairer avec lui, à tout moment. Ça n'est toutefois pas suffisant, il faut encore autoriser la connexion. C'est là la seule étape qu'on ne peut pas automatiser, il faut faire l'autorisation manuellement, pour chaque nouveau périphérique. Il faut à se moment se connecter sur le pi0, et lancer l'autorisation via bluetoothctl
$ bluetoothctl
trust <adresse du téléphone>
Et c'est tout ! Ensuite on laisse opérer la magie de pulseaudio, qui récupère le son et le joue directement. On dispose donc d'un petit périphérique sans fil qui peut maintenant centraliser tout le son de la maisonnée !
Conclusion
En fait, ça n'était pas aussi compliqué que ça quoi je m'attendais. J'ai passé à peu près une demi journée pour trouver les informations, et je suis au final vraiment bluffé par la qualité du son. De manière générale, le son ne laggue pas quand je joue depuis un PC ou que je diffuse en bluetooth, le PI fait bien son boulot.
Voilà il ne me reste plus qu'a mettre en route ma scie à chantourner et faire un petit boitier qui va bien ! Je retourne à ma musique !
# Super merci
Posté par Ysabeau 🧶 (site web personnel, Mastodon) . Évalué à 5.
Bravo ! J'espère qu'on pourra voir le boitier qui va avec.
Par contre, je me dis que ça réclame une organisation matérielle particulière. Bref, en admettant que j'essaie, ça veut dire qu'il va me falloir changer la chaîne de place, ou en dégager pour le PI0.
Et c'est connecté sur quel type d'ampli ?
« Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.
[^] # Re: Super merci
Posté par chimrod (site web personnel) . Évalué à 9.
Il faut pas exagérer, la taille est vraiment petite :
L'ampi est un ampli audio des années 80 que l'on peut trouver à 60€ sur le bon coin (AKAI AM-U310). Comme dit dans le journal, c'est du matériel de récup, et c'est la première fois que j'investi autre chose que du temps dans mon système audio.
Sur le net j'avais un peu galéré à trouver des infos sur l'utilisation de pulseaudio pour la réception audio. La plupart des tutos expliquent comment se connecter à un casque bluetooth, mais jamais comment créer un récepteur. C'est surtout cette partie là qui m'a poussé à faire le journal.
[^] # Re: Super merci
Posté par Psychofox (Mastodon) . Évalué à 4. Dernière modification le 06 octobre 2019 à 15:47.
J'ai un pi-zero w + carte et boitier hifiberry. Il était accroché à l'arrière du meuble sur lequel était posé mon ampli via du velcro autocollant.
Pas la peine de revoir toute la déco intérieure à priori.
[^] # Re: Super merci
Posté par Ysabeau 🧶 (site web personnel, Mastodon) . Évalué à 3. Dernière modification le 06 octobre 2019 à 15:57.
Ben, vu que la chaine hifi est dans une bibliothèque qui déborde de livres (elle-même cernée de bibliothèques qui…), si, en ce qui me concerne :-)
« Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.
# mon expérience
Posté par Meku (site web personnel) . Évalué à 4.
Ah tiens ton tuto m'intéresse bien, car ça fait longtemps que j'ai voulu tenter un truc comme ça, mais faute de temps je ne suis pas allé au bout. Il y a quelques années j'avais réussi à transmettre l'audio via pulseaudio du PC au PI-2, mais j'avais des problèmes de coupure au bout d'un moment je crois, donc j'avais abandonné.
Je m'en suis donc arrêté à coller mpd sur le PI-0, que j'ai relié à ma micro-chaîne hifi avec un convertisseur HDMI -> VGA+Jack.
Au départ, sur le PI-0, mpd utilisait pulseaudio. Puis lors de la dernière mise à jour majeure de raspbian, ça a cessé de fonctionner et j'ai reconfiguré en alsa (pulseaudio ne m'apportait pas de plus par rapport à mon utilisation actuelle, mais ça m'ennuyait quand même d'avoir une régression).
Du peu que j'ai creusé, il semble que ce soit un problème de sécurité et de démarrage de pulseaudio, qui ne se faisait qu'une fois un utilisateur avait ouvert une session… ce qui n'est jamais le cas dans mon utilisation. Avant, je crois qu'il démarrait par root (d'où le problème de sécurité). Bon je vous raconte tout ça de mémoire, ça date de plusieurs mois.
Donc merci pour ton journal, j'essaierai quand j'aurai un peu de temps (là je ne vais pas avoir mon PI-0 sous la main pendant une semaine…).
[^] # Re: mon expérience
Posté par chimrod (site web personnel) . Évalué à 3. Dernière modification le 07 octobre 2019 à 09:44.
Depuis toujours, il y a un discours ambigüe de la part des développeurs de pulseaudio sur l'utilisation d'un serveur de son. Il y a un gros warning qui explique que pulseaudio n'est pas fait pour ça, et présente un gros risque de sécurité.
Du coup, il n'y a pas d'intégration dans les distributions, et ça oblige à faire un peu à la main. (Je n'ai pas voulu détailler d'avantage dans le journal, j'ai juste mis le service systemd).
Je pense que ça ne concerne pas tant d'utilisateurs que ça dans le monde, donc au final tout le monde bricole ça un peu de son côté…
# Tablette pour faire du son
Posté par raphj . Évalué à 4. Dernière modification le 06 octobre 2019 à 17:07.
Chez mes parents, on a une tablette pour écouter des radios internet. La tablette, tournant sur Ubuntu avec Mate, est branchée à un ampli et lit une radio au démarrage (avec Clementine).
Elle est également capable de recevoir des flux PulseAudio par le réseau (configuré avec paprefs) et accepte des périphériques Bluetooth comme des téléphones Android, configuré avec un des gestionnaires Bluetooth qu'on peut installer, Blueman je crois. Configuration entièrement graphique dans mes souvenirs.
Lors du premier appairage d'un appareil Bluetooth, il faut accepter l'appareil depuis l'écran de la tablette.
Configuration assez simple au final.
[^] # Re: Tablette pour faire du son
Posté par fredoche . Évalué à 4.
Hello, une tablette sur laquelle on peut installer Ubuntu?
Peux tu partager le modèle ?
Merci!
[^] # Re: Tablette pour faire du son
Posté par raphj . Évalué à 4. Dernière modification le 06 octobre 2019 à 19:12.
C'est une airis kira slimpad. Elle est vieille et probablement plus vendue depuis longtemps.
Je ne la conseille pas pour les raisons suivantes :
Mais sa prise en charge de GNU/Linux est autrement excellente et pour une utilisation ciblée, elle fait le job. Pour une utilisation nomade aujourd'hui… Oublie.
# 1 seul Haut parleur
Posté par Juke (site web personnel) . Évalué à 2.
Sais tu si il y a moyen de declarer le Raspberry comme un peripherique Mono ?
En effet je n'ai qu'un seul haut parleur et si je peux faire l'envoi du flux comme un seul signal depuis les telephones et autres clients plutot que de faire du traitement du signal pour faire du stereo2mono ça m'arrange.
# Récepteur Bluetooth
Posté par ted (site web personnel) . Évalué à 2. Dernière modification le 06 octobre 2019 à 20:30.
Merci pour ce journal intéressant.
Par contre tu as quand même investi dans un DAC adapté au zero pour ça. De ce que je comprend tu utilises surtout le Bluetooth. Est ce que ça apporte vraiment quelque chose en plus qu'un bête récepteur Bluetooth à 15€?
Dans ta config, tes PC partagent le son via Wi-Fi, mais ça pourrait très bien se faire par Bluetooth.
Un LUG en Lorraine : https://enunclic-cappel.fr
[^] # Re: Récepteur Bluetooth
Posté par ʭ ☯ . Évalué à 3. Dernière modification le 06 octobre 2019 à 21:36.
Je pense que le DAC, c'est pour générer un bien meilleur signal audio vers l'ampli analogique, pas pour la réception! Je vois notamment qu'ils ont mis un gros condensateur sur la carte son pour être sûrs que le signal n'est pas affaibli par manque de jus sur les grosses basses.
⚓ À g'Auch TOUTE! http://afdgauch.online.fr
[^] # Re: Récepteur Bluetooth
Posté par gUI (Mastodon) . Évalué à 4.
le condo pour les basses c'est après amplification. ici on est encore dans des courants faibles :)
sûrement un filtrage de l'alim du PiZero ?
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: Récepteur Bluetooth
Posté par FDF (site web personnel) . Évalué à 4.
Je penche aussi beaucoup plus pour le filtrage des parasites du PI. L'informatique génère des courants assez crade avec l'utilisation massive de la masse pour tout et n'importe quoi.
J'ai installé un orange Pi + DAC à l’intérieur d'un ampli (comme cela, pas de problème de décoration). Et quand il n'y a pas de son, je n'arrives pas à me débarrasser de tout petits craquements, que l'ampli chope du Pi. Ce n'est pas des parasites électriques classique, ça ne ronronne pas le 50hz. c'est vraiment caractéristique.
[^] # Re: Récepteur Bluetooth
Posté par chimrod (site web personnel) . Évalué à 4.
Il y a une revue du DAC qui m'a beaucoup influencée dans l'achat. Le constructeur intervient dans les commentaires et explique ses choix. (La revue commence sur une version antérieure du matériel, puis évoque les changements apportés par la version actuelle de la carte).
De mon côté, je n'ai aucun souffle, aucun bruit, les enceintes sont vraiment silencieuses dès que le son est coupé. (Il y a une petite LED qui reste allumée sur la carte un peu de temps après que la musique ait cessée, mais je n'entend aucune différence au niveau des enceintes.)
[^] # Re: Récepteur Bluetooth
Posté par ted (site web personnel) . Évalué à 1.
Je pensais à un appareil Bluetooth fait pour être connecté à une Chaine hi-fi, tout-en-un, pas juste une clé Bluetooth.
Un LUG en Lorraine : https://enunclic-cappel.fr
[^] # Re: Récepteur Bluetooth
Posté par Psychofox (Mastodon) . Évalué à 2.
Sur mon pi zero w + hat hifiberry le son était meilleur sans souffle ni bruit parasites que sur le dac bluetooth philips Mais je ne l'utilisais pas comme recepteur bluetooth, uniquement wifi/airplay et surtout volumio.
Par contre il existe de très bons dac bluetooth, comme le arcam miniblink mais ils sont un un peu plus chers.
Je doute que ceux à 15€ aient une qualité correcte.
[^] # Re: Récepteur Bluetooth
Posté par chimrod (site web personnel) . Évalué à 3.
En fait, aucun de mes PC n'a de connexion sans fil, le wifi sert seulement entre la box et le raspberry pi. J'utilise donc surtout pulseaudio, le bluetooth est un peu une cerise sur le gâteau, si j'ai envie de m'écouter de la musique en prenant mon petit-dej sans avoir à allumer le PC…
Sinon j'avais déjà un récepteur bluetooth, que j'ai mentionné dans le journal (sans mettre de lien pour ne pas de faire de pub). Le problème étant qu'il me mange une entrée son sur l'ampli, et je crois me souvenir que seul une source peut être connectée à la fois (le problème est le même avec le pi0, mais comme j'utilise surtout pulseaudio le problème se pose moins). Au niveau de la qualité, le son était similaire sur une sortie standard intégrée à un PC.
Avec la carte, c'est vraiment le jour et la nuit, pour avoir testé avec un morceau que je connaissais bien, j'ai entendu des détails que je n'avais jamais entendu jusqu'alors. Il y avait vraiment du volume dans la musique. Je veux pas m'appesantir davantage car je ne suis pas compétent pour évaluer la qualité, je peux juste dire que subjectivement, j'ai vraiment redécouvert ma musique.
# Simple et instructif, merci !
Posté par Yves (site web personnel) . Évalué à 1. Dernière modification le 07 octobre 2019 à 13:17.
Merci pour ce retour d’expérience !
Si quelqu’un a une solution open-source pour la même chose en audio+vidéo, ça m’intéresse ; le but serait de lire une vidéo ou parcourir des photos sur le téléphone Android, et de voir ça sur grand écran via un PC Linux.
[^] # Re: Simple et instructif, merci !
Posté par Sclarckone . Évalué à 1.
Tu peux regarder du côté de Miracast peut-être ?
[^] # Re: Simple et instructif, merci !
Posté par Yves (site web personnel) . Évalué à 1.
Merci Sclarckone. S’il existe une implémentation open-source, ça a l’air bien, en effet. Je vais chercher…
# Imprimante ?
Posté par jacobus77 . Évalué à 4.
lp c'est le groupe qui a le droit d'utiliser les imprimantes… c'est nécessaire pour recevoir le son via bluetooth ?
[^] # Re: Imprimante ?
Posté par chimrod (site web personnel) . Évalué à 7.
En fait oui, et c'est vraiment un truc que j'aurai pas trouvé tout seul. La conf est gérée par dbus, dans le fichier
/etc/dbus-1/system.d/bluetooth.conf
et l'on y trouve les lignes suivantes :Va savoir pourquoi…
[^] # Re: Imprimante ?
Posté par fredoche . Évalué à 1.
Il doit bien exister des imprimantes bluetooth :)
# Nokia N900
Posté par pherjung . Évalué à 1.
Oh, génial. J'ai fait quelque chose de similaire mais en utilisant un Nokia N900 et son émetteur FM. Le désavantage avec ma solution c'était l'impossibilité d'utiliser le Bluetooth comme récepteur, mais je vais réessayer avec ta méthode.
Par contre ce qui me pousse à rester sur le Nokia N900, c'est la présence d'un émetteur infrarouge. Avec
LIRC
, c'est le top et je peux manipuler ma chaîne Hi-Fi depuis n'importe quel appareil configuré préalablement.# Questions materielles
Posté par bong101 . Évalué à 1.
Bonjour,
merci pour ce tuto, c'est une super idée, et je n'y avais pas pensé.
J'ai vu qu'un HAT avait ete rajouté, est-ce que les ports GPIO restent disponibles ?
Je suis en train de créer une Webradio a base de PI3, et pas mal de GPIO sont deja pris ( ecran epaper, bouton, etc..)
Je cherche pour cette WebRadio un module (au sens large) qui me permette d'amplifier la sortie son, quelqu'un peut-il me conseiller ? Je voudrais autant de puissance qu'un radio-CD transportable, si vous voyez un peu…
Merci d'avance
Olivier
[^] # Re: Questions materielles
Posté par chimrod (site web personnel) . Évalué à 2.
Il n'y a pas d'information sur la carte pour le pi-zero, mais ont peut trouver les infos pour la carte adaptée au raspberry pi standard (Boss 1.2 DAC Tech Manual), seuls les ports suivants seraient utilisés :
Je n'ai pas testé, le plus simple serait de leur demander directement.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.