Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 03/02/2024, à 04:18

Coeur Noir

Configurer paramètres codec sbc / bluetooth à travers pipewire ?

Hello,

le but : faire en sorte que le pc envoie via bluetooth un signal audio de « meilleure qualité » à travers son codec habituel, le sbc.

À priori il y avait cette méthode ( vue ici, 2020 ) avec pulse-audio : modifier le fichier /etc/pulse/default.pa, vers la ligne 70

.ifexists module-bluetooth-discover.so
## initial settings
# load-module module-bluetooth-discover
## added on 2024-02-02 ↓
load-module module-bluetooth-discover a2dp_config="sbc_cmode=dual sbc_min_bp=24 sbc_max_bp=79 sbc_freq=48k"
.endif

J'aimerais faire l'équivalent dans un système qui utilise pipewire/wireplumber.

Il semble qu'il faille s'intéresser au fichier /etc/pipewire/pipewire-pulse.conf, vers la ligne 73 qui dit

# Extra modules can be loaded here. Setup in default.pa can be moved here
context.exec = [
    { path = "pactl"        args = "load-module module-always-sink" }
    #{ path = "pactl"        args = "load-module module-switch-on-connect" }
    #{ path = "/usr/bin/sh"  args = "~/.config/pipewire/default.pw" }
]

C'est juste que là, la syntaxe c'est quoi ?

{ path = "a2dp_config"        args = "sbc_cmode=dual sbc_min_bp=24 sbc_max_bp=79 sbc_freq=48k" }

???

Manifestement la modif' faite dans default.pa est sans effet :

django@ASGARD:~$ sudo hcidump avdtp
[sudo] Mot de passe de django : 
HCI sniffer - Bluetooth packet analyzer ver 5.64
device: hci0 snap_len: 1500 filter: 0x400
> AVDTP(p): Discover cmd: transaction 0 nsp 0x00
< AVDTP(p): Discover rsp: transaction 0 nsp 0x00
    ACP SEID 1 - Audio Source
    ACP SEID 2 - Audio Sink
    ACP SEID 3 - Audio Source
    ACP SEID 4 - Audio Sink
    ACP SEID 5 - Audio Source
    ACP SEID 6 - Audio Source
    ACP SEID 7 - Audio Source
> AVDTP(p): Capabilities cmd: transaction 0 nsp 0x00
    ACP SEID 1
< AVDTP(p): Capabilities rsp: transaction 0 nsp 0x00
    Media Transport
    Media Codec - non-A2DP (LDAC)
      3C 07 
> AVDTP(p): Capabilities cmd: transaction 0 nsp 0x00
    ACP SEID 3
< AVDTP(p): Capabilities rsp: transaction 0 nsp 0x00
    Media Transport
    Media Codec - SBC
      16kHz 32kHz 44.1kHz 48kHz 
      Mono DualChannel Stereo JointStereo 
      4 8 12 16 Blocks
      4 8 Subbands
      SNR Loudness 
      Bitpool Range 2-64
> AVDTP(p): Capabilities cmd: transaction 0 nsp 0x00
    ACP SEID 5
< AVDTP(p): Capabilities rsp: transaction 0 nsp 0x00
    Media Transport
    Media Codec - SBC
      16kHz 32kHz 44.1kHz 48kHz 
      Mono DualChannel Stereo JointStereo 
      4 8 12 16 Blocks
      4 8 Subbands
      SNR Loudness 
      Bitpool Range 2-64
> AVDTP(p): Capabilities cmd: transaction 0 nsp 0x00
    ACP SEID 6
< AVDTP(p): Capabilities rsp: transaction 0 nsp 0x00
    Media Transport
    Media Codec - non-A2DP (Unknown)
      01 23 
> AVDTP(p): Capabilities cmd: transaction 0 nsp 0x00
    ACP SEID 7
< AVDTP(p): Capabilities rsp: transaction 0 nsp 0x00
    Media Transport
    Media Codec - non-A2DP (Unknown)
      03 23 
> AVDTP(p): Set config cmd: transaction 0 nsp 0x00
    ACP SEID 5 - INT SEID 1
    Media Transport
    Media Codec - SBC
      48kHz 
      JointStereo 
      16 Blocks
      8 Subbands
      Loudness 
      Bitpool Range 2-38
< AVDTP(p): Set config rsp: transaction 0 nsp 0x00
> AVDTP(p): Open cmd: transaction 0 nsp 0x00
    ACP SEID 5
< AVDTP(p): Open rsp: transaction 0 nsp 0x00
< AVDTP(p): Close cmd: transaction 4 nsp 0x00
    ACP SEID 1
> AVDTP(p): Close rsp: transaction 4 nsp 0x00
< AVDTP(p): Set config cmd: transaction 5 nsp 0x00
    ACP SEID 1 - INT SEID 3
    Media Transport
    Media Codec - SBC
      48kHz 
      JointStereo 
      16 Blocks
      8 Subbands
      Loudness 
      Bitpool Range 2-38
> AVDTP(p): Set config rsp: transaction 5 nsp 0x00
< AVDTP(p): Open cmd: transaction 6 nsp 0x00
    ACP SEID 1
> AVDTP(p): Open rsp: transaction 6 nsp 0x00
< AVDTP(p): Start cmd: transaction 7 nsp 0x00
    ACP SEID 1
> AVDTP(p): Start rsp: transaction 7 nsp 0x00
< AVDTP(c): ver 2 cc 0 pt 96 seqn 0 time 0 ssrc 1
< AVDTP(c): ver 2 cc 0 pt 96 seqn 1 time 0 ssrc 1
(…) etc etc (…)

et au cas où :

django@ASGARD:~$ pactl list sinks
Destination #71                                                                   c'est la sortie anolog-stereo, pas utilisée à ce moment là
	État : SUSPENDED
(…)

Destination #409                                                                  Le casque bluetooth que je teste en ce moment
	État : RUNNING
	Nom : bluez_output.58_FC_C6_D3_76_71.a2dp-sink
	Description : TOZO HT2
	Pilote : PipeWire
	Spécification de l’échantillon : s16le 2ch 48000Hz
	Plan des canaux : front-left,front-right
	Module du propriétaire : 4294967295
	Sourdine : non
	Volume : front-left: 19639 /  30% / -31,40 dB,   front-right: 19639 /  30% / -31,40 dB
	        balance 0,00
	Volume de base : 65536 / 100% / 0,00 dB
	Source du moniteur : bluez_output.58_FC_C6_D3_76_71.a2dp-sink.monitor
	Latence : 0 usec, configuré 0 usec
	Marqueurs : HARDWARE HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY 
	Propriétés :
		api.bluez5.address = "58:FC:C6:D3:76:71"
		api.bluez5.codec = "sbc"
		api.bluez5.profile = "a2dp-sink"
		api.bluez5.transport = ""
		card.profile.device = "1"
		device.id = "61"
		device.routes = "1"
		factory.name = "api.bluez5.a2dp.sink"
		device.description = "TOZO HT2"
		node.name = "bluez_output.58_FC_C6_D3_76_71.a2dp-sink"
		node.pause-on-idle = "false"
		priority.driver = "1010"
		priority.session = "1010"
		factory.id = "8"
		clock.quantum-limit = "8192"
		device.api = "bluez5"
		media.class = "Audio/Sink"
		node.driver = "true"
		node.latency = "512/48000"
		factory.mode = "merge"
		audio.adapt.follower = ""
		library.name = "audioconvert/libspa-audioconvert"
		object.id = "64"
		object.serial = "409"
		client.id = "34"
	Ports :
		headset-output: Casque (type: Casque, priority: 0, available)
	Port actif : headset-output
	Formats :
		pcm
django@ASGARD:~$ 

Lectures en rapport : https://habr.com/en/articles/456182/https://habr.com/en/articles/456476/http://soundexpert.org/articles/-/blogs … udio-codec ← /!\ pas httpS ⋅ https://btcodecs.valdikss.org.ru/sbc-bi … alculator/https://www.redpill-linpro.com/techblog … -msbc.html ( 2021 )

Dernière modification par Coeur Noir (Le 03/02/2024, à 05:12)


DébuterDocBien rédigerRetour commandeInsérer image | illustrations & captures d'écran <>

Hors ligne

#2 Le 04/02/2024, à 03:01

Coeur Noir

Re : Configurer paramètres codec sbc / bluetooth à travers pipewire ?

Le sujet n'a pas l'air de passionner lol

Bon je suis arrivé à quelque chose d'utile, à partir du dernier lien dans le message précédent ; avoir le choix entre divers « codecs » pour la sortie casque via bluetooth :
param-periph-sortie-son.png
mais je voudrais plutôt ajouter mes propres paramètres pour sbc, à cet endroit…

Pour arriver à ce résultat - sous pipewire/wireplumber et Ubuntu 22.04 - j'ai créé ce fichier :
$HOME/.local/share/wireplumber/30-bluez-monitor.lua
( c'est à dire un équivalent personnel local de /usr/share/wireplumber/30-bluez-monitor.lua )
dans lequel il y a :

bluez_monitor = {}
bluez_monitor.properties = {
    bluez5.msbc-support = true			# ici ce sont
    bluez5.sbc-xq-support = true		# les ajouts
}
bluez_monitor.rules = {}

function bluez_monitor.enable()
  load_monitor("bluez", {
    properties = bluez_monitor.properties,
    rules = bluez_monitor.rules,
  })

  load_optional_module("logind")
end

…et j'ai l'impression que ça change quelque chose ( la scène s'ouvre, comme si la stéréophonie s'élargissait ).
À moins que ce soit juste un biais cognitif - difficile de faire des tests en double aveugle tout seul.

Ça ne m'apprend pas encore où je pourrais caser un « profil » sbc avec ces paramètres :

a2dp_config="sbc_cmode=dual sbc_min_bp=24 sbc_max_bp=79 sbc_freq=48k"

mais je vais continuer mes bidouilles…


DébuterDocBien rédigerRetour commandeInsérer image | illustrations & captures d'écran <>

Hors ligne

#3 Le 04/02/2024, à 08:15

xubu1957

Re : Configurer paramètres codec sbc / bluetooth à travers pipewire ?

Bonjour,

Il semble y avoir des limitations, suivant les codecs, à lire cette page > reddit.com/r/linuxaudio/comments/11fgoqq/comment_activer_le_codec_bluetooth_aac_dans Pipewire ?


Conseils pour les nouveaux demandeurs et pas qu'eux
Important : Pensez à passer vos sujets en [Résolu] lorsque ceux-ci le sont, au début du titre en cliquant sur Modifier sous le premier message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.                   Membre de Linux-Azur

Hors ligne

#4 Le 04/02/2024, à 08:31

krodelabestiole

Re : Configurer paramètres codec sbc / bluetooth à travers pipewire ?

Hors ligne

#5 Le 07/02/2024, à 00:03

Coeur Noir

Re : Configurer paramètres codec sbc / bluetooth à travers pipewire ?

Merci pour ces autres lectures fort intéressantes, qui me permettent de mieux formuler le souhait initial :

⋅ je ne cherche pas à installer un « nouveau » codec, le sbc pourrait suffire ;
⋅ lorsqu'a2dp est utilisé, je souhaite que ce soit avec le codec sbc MAIS utilisant ces paramètres : "sbc_cmode=dual sbc_min_bp=24 sbc_max_bp=78 64 sbc_freq=48k" ( qui ne sont pas les paramètres standards minimaux ).


DébuterDocBien rédigerRetour commandeInsérer image | illustrations & captures d'écran <>

Hors ligne