Journal Diffusion audio multicanal avec bluetooth

Posté par  (site web personnel, Mastodon) . Licence CC By‑SA.
Étiquettes :
7
22
déc.
2024

Sommaire

'lut les gens,

Le contexte

J’envoie régulièrement l’audio de mon ordinateur portable Thinkpad vers ma barre de son en bluetooth. Alors que celle-ci dispose de toutes les fonctionnalités audio surround, dolby, DTX, 5.1, et j'en passe, ça me désole d’envoyer simplement en stéréo alors que je pourrais faire mieux puisque je dispose de tout le kit d'enceintes permettant une diffusion multicanal audio.

Technologies de diffusion audio bluetooth

J'ai commencé alors quelques recherches pour pouvoir diffuser de l'audio multicanal. Au fil de mes recherches je découvre qu’il existe principalement 2 technologies de diffusion audio bluetooth:

  • L'A2DP (Advanced Audio Distribution Profile) est celle qu’on retrouve sur tous les périphériques bluetooth actuels. Elle permet une sortie audio stéréo (qu’on retrouve sous le terme sink). Elle utilise en natif le codec audio SBC qui fournit une qualité audio juste acceptable. Aussi d’autres codecs ont fait leur apparition, SBC XQ qui est une version améliorée de SBC, mais également LDAC, Aptx, AAC ou LC3. Cette technologie est associée à AVRCP (Audio Video Remote Control Profile) qui permet de gérer les commandes.
  • LE Audio associé au Bluetooth Low Energy (BLE) est un mode basse consommation qui utilise le codec LC3 qui à terme devrait équiper tous les périphériques bluetooth. Ce mode permettra la diffusion vers plusieurs périphériques bluetooth et de pouvoir utiliser la diffusion multicanal 5.1 contrairement aux autres codecs précédemment cités qui sont limités au mono et au stéréo.

Or en connectant ma barre de son « Abri de jardin » (je sais, c’est bizarre…) avec blueman, je me rends compte que je n’ai accès qu’au codec standard SBC et à sa version améliorée SBC XQ. Pas moyen d’avoir un codec plus qualitatif.

Titre de l'image

Installation de pipewire et bluez

Ni une, ni deux, je me lance dans l’installation du serveur audio pipewire car pulseaudio installé de base sur ma Mageia 9 ne gère que l’A2DP et ne gère pas le LE Audio.
Je bascule sous pipewire fourni sur mon système avec l’outil pa-switcher et je constate aucune évolution avec blueman et j’ai toujours les mêmes codecs, je choisis d’installer la dernière version de pipewire à partir des sources après avoir installé via les sources les codecs LC3 et Aptx.

Et là je me retrouve avec une installation hybride entre une installation système et local bluez et pipewire avec un mix de fichiers et les services systemd des versions locales qui ont écrasé les versions système. Au reboot du PC, c’est bien par défaut les binaires locaux qui sont lancés, et dans les logs j'ai bien :

déc. 22 12:12:57 cilaos.kervao.fr bluetoothd[857]: Endpoint registered: sender=:1.197 path=/MediaEndpoint/A2DPSource/ldac
déc. 22 12:12:57 cilaos.kervao.fr bluetoothd[857]: Endpoint registered: sender=:1.197 path=/MediaEndpoint/A2DPSink/aptx_hd
déc. 22 12:12:57 cilaos.kervao.fr bluetoothd[857]: Endpoint registered: sender=:1.197 path=/MediaEndpoint/A2DPSource/aptx_hd
déc. 22 12:12:57 cilaos.kervao.fr bluetoothd[857]: Endpoint registered: sender=:1.197 path=/MediaEndpoint/A2DPSink/aptx
déc. 22 12:12:57 cilaos.kervao.fr bluetoothd[857]: Endpoint registered: sender=:1.197 path=/MediaEndpoint/A2DPSource/aptx
déc. 22 12:12:57 cilaos.kervao.fr bluetoothd[857]: Endpoint registered: sender=:1.197 path=/MediaEndpoint/A2DPSink/aac
déc. 22 12:12:57 cilaos.kervao.fr bluetoothd[857]: Endpoint registered: sender=:1.197 path=/MediaEndpoint/A2DPSource/aac
déc. 22 12:12:57 cilaos.kervao.fr bluetoothd[857]: Endpoint registered: sender=:1.197 path=/MediaEndpoint/A2DPSink/opus_g
déc. 22 12:12:57 cilaos.kervao.fr bluetoothd[857]: Endpoint registered: sender=:1.197 path=/MediaEndpoint/A2DPSource/opus_g
déc. 22 12:12:57 cilaos.kervao.fr bluetoothd[857]: Endpoint registered: sender=:1.197 path=/MediaEndpoint/A2DPSink/sbc
déc. 22 12:12:57 cilaos.kervao.fr bluetoothd[857]: Endpoint registered: sender=:1.197 path=/MediaEndpoint/A2DPSource/sbc
déc. 22 12:12:57 cilaos.kervao.fr bluetoothd[857]: Endpoint registered: sender=:1.197 path=/MediaEndpoint/A2DPSource/aptx_ll_1
déc. 22 12:12:57 cilaos.kervao.fr bluetoothd[857]: Endpoint registered: sender=:1.197 path=/MediaEndpoint/A2DPSource/aptx_ll_0
déc. 22 12:12:57 cilaos.kervao.fr bluetoothd[857]: Endpoint registered: sender=:1.197 path=/MediaEndpoint/A2DPSource/aptx_ll_duplex_1
déc. 22 12:12:57 cilaos.kervao.fr bluetoothd[857]: Endpoint registered: sender=:1.197 path=/MediaEndpoint/A2DPSource/aptx_ll_duplex_0
déc. 22 12:12:57 cilaos.kervao.fr bluetoothd[857]: Endpoint registered: sender=:1.197 path=/MediaEndpoint/A2DPSource/faststream
déc. 22 12:12:57 cilaos.kervao.fr bluetoothd[857]: Endpoint registered: sender=:1.197 path=/MediaEndpoint/A2DPSource/faststream_duplex
déc. 22 12:12:57 cilaos.kervao.fr bluetoothd[857]: Endpoint registered: sender=:1.197 path=/MediaEndpoint/A2DPSink/opus_05
déc. 22 12:12:57 cilaos.kervao.fr bluetoothd[857]: Endpoint registered: sender=:1.197 path=/MediaEndpoint/A2DPSource/opus_05
déc. 22 12:12:57 cilaos.kervao.fr bluetoothd[857]: Endpoint registered: sender=:1.197 path=/MediaEndpoint/A2DPSink/opus_05_duplex
déc. 22 12:12:57 cilaos.kervao.fr bluetoothd[857]: Endpoint registered: sender=:1.197 path=/MediaEndpoint/A2DPSource/opus_05_duplex

C’est tout bon en ce qui concerne les nouveaux codecs, même si je ne vois pas clairement apparaitre LC3. Et là je constate avec désappointement que blueman ne m’offre pas mieux, je recompile donc cette fois-ci bluez qui fournit le daemon bluetoothd.

Au bout de toutes ces pérégrinations je connecte ma barre de son avec blueman et je constate avec dépit que j’en suis au même stade avec SBC et SBC XQ comme codecs. En dernier ressort, je compile blueman, mais ça ne change rien à l’affaire.

L'impasse

Je me tourne vers les spécifications de ma barre de son LG SL10YG et ce n’est qu’à ce moment là que je comprends que les modes multicanaux ne marchent que via l’interface HDMI et qu’elle se repose sur Bluetooth 4.2 qui ne prend pas en charge le LE Audio (qui arrive avec la version 5.2). J’aurais dû commencer par là !!

D’ailleurs la commande bluetoothctl info me renvoie :

UUID: Audio Sink (0000110b-0000-1000-8000-00805f9b34fb)

j’aurais du avoir quelque chose comme :

UUUUID: Published Audio Capabilities (00001850-0000-1000-8000-00805f9b34fb)

Fin du sketch qui m’aura pris quelques heures, pour positiver je suis passé à pipewire et j'ai découvert son fonctionnement.

Moralité

La morale de cette histoire, s'il doit y en avoir une, est qu'à l'achat de votre barre de son vérifiez bien si elle est au moins compatible bluetooth 5.2 pour pouvoir envoyer de l'audio multicanal, dès lors que la musique correspondante soit au format qui va bien (mais ça c'est une autre histoire).

Pour aller plus loin

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.