3 votes

PulseAudio + Profil HFP dans Ubuntu

Objectif est d'assister à l'appel via les appareils appariés BT en utilisant HFP

Étapes effectuées :

a. Les logiciels utilisés sont

-pulseaudio-4.99.2

-Bluez-5.14

-ofono-1.14

b. Les applications mentionnées ci-dessus ont été démarrées, puis en utilisant les méthodes bluetoothctl, j'ai apparié et connecté le mobile au PC Ubuntu.

c. Un appel a été passé au mobile. Après avoir répondu à l'appel, j'essayais d'entendre l'audio via le casque connecté au PC ubuntu. Mais aucun son n'était entendu.

d. J'ai essayé de lister les sink et sources bluez en utilisant la commande ci-dessous :

pactl list short sources | grep bluez_source
pactl list short sinks | grep -v Monitor | grep alsa_output.pci

e. Ensuite, bouclez les appareils en utilisant la commande ci-dessous

pactl load-module module-loopback source=[BTSOURCE] sink=[SINK]

f. J'ai également édité /etc/bluetooth/audio.conf pour activer

[General]
Enable=Gateway,Source,Socket,Sink,Media,Headset

Veuillez m'aider si j'ai oublié quelque chose. Y a-t-il quelque chose à modifier dans le fichier daemon.conf ?

Je reçois également ces journaux dans pulseAudio

D: [pulseaudio] module-loopback.c: La latence totale de la boucle est de 43,55 ms + 335,02 ms + 26,97 ms = 405,54 ms

D: [pulseaudio] module-loopback.c: Devrait mettre en mémoire tampon 2112 octets, mis en mémoire tampon au minimum 3346 octets

I: [pulseaudio] module-loopback.c: Nouveau taux de 8061 Hz pas dans les 2‰ de 7919 Hz, forçant un ajustement plus petit

D: [pulseaudio] module-loopback.c: [alsa_output.pci-0000_00_1b.0.analog-stereo] Taux d'échantillonnage mis à jour à 7934 Hz.

D: [pulseaudio] module-loopback.c: La latence totale de la boucle est de 0,00 ms + 19584,88 ms + 0,00 ms = 19584,88 ms

D: [pulseaudio] module-loopback.c: Devrait mettre en mémoire tampon 96 octets, mis en mémoire tampon au minimum 154078 octets

W: [pulseaudio] module-loopback.c: Taux d'échantillonnage trop différent, pas d'ajustement (8000 vs. 15699).

D: [pulseaudio] module-loopback.c: [bluez_sink.4C_21_D0_3A_29_04] Taux d'échantillonnage mis à jour à 8000 Hz.

D: [bluetooth] ratelimit.c: 134 événements supprimés

D: [bluetooth] memblock.c: Piscine remplie

D: [alsa-sink-ALC892 Analog] memblock.c: Piscine remplie

D: [bluetooth] memblock.c: Piscine remplie

\============================================================================

Veuillez m'aider !!!

1voto

kartik rajput Points 11

J'ai également rencontré ce problème. Si vous regardez les niveaux audio en utilisant pavucontrol, vous verrez que l'audio arrive effectivement sur l'ordinateur portable, mais le routage audio (au niveau de pulseaudio) est mal configuré.

Lorsque vous connectez votre téléphone en bluetooth à votre machine Linux et que vous passez un appel via votre téléphone, vous verrez que le profil bluetooth est basculé en HSP/HFP en utilisant l'onglet "configuration" dans pavucontrol. Vous pouvez également vérifier que, pour votre appareil, le sink et la source par défaut (PulseAudio) ont été basculés vers ceux de bluez_sink et bluez_source.

Pour pouvoir obtenir l'audio de l'appel sur vos haut-parleurs/casque filaire et envoyer votre voix lors de l'appel en utilisant le microphone interne/microphone du casque filaire, essayez ce script.

#!/bin/bash
SOUNDCARD_SOURCE="Trouvez en utilisant $ pacmd list-sources | grep -e 'index:' -e device.string -e 'name:'"
SOUNDCARD_SINK="Trouvez en utilisant $ pacmd list-sinks | grep -e 'index:' -e device.string -e 'name:'"
BLUEZ_SOURCE="Trouvez en utilisant $ pacmd list-sources | grep -e 'index:' -e device.string -e 'name:'"
BLUEZ_SINK="Trouvez en utilisant $ pacmd list-sinks | grep -e 'index:' -e device.string -e 'name:'"
pactl unload-module `pactl list short modules | grep bluez_sink | cut -d 'm' -f 1`
pactl unload-module `pactl list short modules | grep bluez_source | cut -d 'm' -f 1`
pacmd "set-default-sink $SOUNDCARD_SINK"
pacmd "set-default-source $SOUNDCARD_SOURCE"
pactl load-module module-loopback source=$SOUNDCARD_SOURCE sink=$BLUEZ_SINK latency_msec=1
pactl load-module module-loopback source=$BLUEZ_SOURCE sink=$SOUNDCARD_SINK latency_msec=1

Ce que cela fait simplement est décharger les modules de bouclage pactl chargés par la configuration et connecter votre microphone avec bluez_sink et connecter bluez_source avec vos haut-parleurs/casque.

C'est la première fois que je publie une solution, alors n'hésitez pas à commenter pour plus de clarifications.

0voto

Abhi Points 59

Avec Bluez et ofono, vous pouvez y parvenir.

J'ai essayé avec bluez 4.x. Je ne suis pas sûr que cela fonctionnera avec bluez 5.x.

https://bugs.freedesktop.org/show_bug.cgi?id=73325

Premièrement, assurez-vous que le HFP est pris en charge par le matériel.

$ sdptool browse local

Cela listera tous les profils pris en charge. Cela devrait afficher quelque chose comme :

Nom du service : Passerelle audio mains libres
Identifiant d'enregistrement du service : 0x10002
Liste d'identifiants de classe de service :
  "Passerelle audio mains libres" (0x111f)
  "Audio générique" (0x1203)
Liste des descripteurs de protocole :
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Canal : 13
Liste des descripteurs de profil :
  "Mains libres" (0x111e)
    Version : 0x0105

Nom du service : Mains libres
Identifiant d'enregistrement du service : 0x10003
Liste d'identifiants de classe de service :
  "Mains libres" (0x111e)
  "Audio générique" (0x1203)
Liste des descripteurs de protocole :
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Canal : 7
Liste des descripteurs de profil :
  "Mains libres" (0x111e)
    Version : 0x0105

Étape suivante, jumelez votre téléphone avec votre ordinateur en utilisant bluetoothctl ou une interface graphique. Maintenant, vous devez vérifier avec ofono pour les modems. Ici, votre téléphone agit comme un modem. Allez dans le répertoire de test d'ofono et tapez

$./list-modems

Maintenant, votre téléphone devrait être listé. Ensuite, activez-le

$./enable-modem

Commencez à appeler votre téléphone et vous pourrez entendre la voix sur votre ordinateur.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X