web-dev-qa-db-fra.com

Pourquoi l'audio envoyé par A2DP n'est peut-être pas audible sur Ubuntu 16.04?

J'essaie de faire fonctionner l'audio Bluetooth A2DP sur le système multimédia de la voiture (W53850, marque Toyota, 2011) avec Ubuntu 16.04.

Le son fonctionne depuis Windows ou Ubuntu 14.04. Le problème doit donc être spécifique à Ubuntu 16.04. Et ce n’est pas un problème matériel, car l’audio bluetooth fonctionne sur le même ordinateur portable Ubuntu 16.04, lorsque je double amorce sous Windows 10.

Toute la procédure de configuration est identique à Ubuntu 14.04 et Ubuntu 16.04, avec la seule différence évidente que lorsque je joue le son le 16.04, je n'entends plus rien des haut-parleurs de la voiture.

C'est la procédure que j'utilise en détail:

  1. Supprimez les anciens couplages du système multimédia de la voiture
  2. Supprimer les anciennes associations d'Ubuntu

  3. Lancer la procédure de couplage sur le système multimédia de la voiture.

  4. Sous Ubuntu, sous "Paramètres Bluetooth", cliquez sur "+" pour obtenir "Recherche de périphérique".
  5. Après quelques secondes, un périphérique "CAR M_MMEDIA" apparaît, cliquez dessus.
  6. Sous les options Ping, sélectionnez la bonne broche (c'est "0000" quand même, mais soyez prudent). D'ACCORD.
  7. Prochain. Après une seconde, je reçois la confirmation "Configuration réussie du nouveau périphérique" CAR M_MEDIA ". Quittez.
  8. Dans le système de la voiture, quittez le menu "Setup" (sinon le son sera bloqué).
  9. Dans les paramètres sonores, je sélectionne "Mains libres CAR M_MEDIA" dans la liste "Écouter le son par le biais". Sound settings
  10. Joue de la musique.
  11. Le lecteur de musique affiche la progression du temps de lecture - ce qui indique que le lecteur pousse effectivement les données dans le récepteur audio Pulse.
  12. Aucun son n'est entendu.

Diagnostics que j'ai pu faire jusqu'à présent

Sur Ubuntu 14.04, j'ai pu découvrir les services à partir de la ligne de commande:

$ bt-device -s "CAR M_MEDIA"
Discovering services...

[RECORD:65537]
SrvClassIDList: "AudioSink"
ProtocolDescList:
    "L2CAP", 0x19
    "AVDTP", 0x100
BTProfileDescList:
    "AdvAudio", 0x100
SrvName: "Audio Sink"
ProviderName: ""

[RECORD:65538]
SrvClassIDList: "AVRemote"
ProtocolDescList:
    "L2CAP", 0x17
    "AVCTP", 0x102
BTProfileDescList:
    "AVRemote", 0x103
SrvName: "A/V RemoteControl"
ProviderName: ""

Done

Je ne peux pas faire la même chose le 16.04, car tous mes ordinateurs 16.04 affichent une erreur

$ bt-device -s "CAR M_MEDIA"
Discovering services...
Failed to start SDP discovery. Please make sure you have bluez-utils installed on your system.

même si je lance bluetoothd en mode --compat.

Peut-être que Ubuntu 14.04 envoie le son à une fréquence d'échantillonnage différente (48 kHz par rapport à 44,1 kHz)? Mais je ne sais pas comment le tester.


Voici un extrait de la séquence: a) connexion au récepteur audio (audio de voiture) b) lecture de musique, c) arrêt de la musique et d) déconnexion.

buntu 14.04 hcidump (œuvres audio)

buntu 16.04 hcidump (l’audio ne fonctionne pas)

2
Adam Ryczkowski

bluez-utils est actuellement répertorié en tant que package de transition pour trusty (14.04) et n'est actuellement pas disponible pour Xenial (16.04). La recherche indique que le paquet dont vous avez besoin pour Xenial est bluez-tools.

L'un des pièges est que bluez-tools post v0.2 utilise l'API bluez-5.20. En raison de la suppression de DiscoverServices dans l'API de périphérique BlueZ 5, bt-device requiert 'sdptool' (inclus dans bluez-utils pour 14.04) pour la découverte du service.

Une recherche rapide indique que sdptool peut maintenant être trouvé dans le package bluez. Ce package semble être requis pour sdptool selon le message d'erreur:

Impossible de démarrer la découverte SDP. Assurez-vous que bluez-utils est installé sur votre système.

Mon approche serait la suivante:

1) Activer le référentiel de l'univers

2) installer les paquets nécessaires

Aide pour installer bluez bluez-tools

Remarque: bluez est installé par défaut si je ne me trompe pas. Vous devrez peut-être

Sudo apt-get install --reinstall bluez

3) Il est tout à fait possible que vous ayez également besoin de service D-Bus pour les fonctionnalités côté client et serveur OBEX

Sudo apt install obex-data-server

Sources:

Le message d'erreur dans votre question

https://packages.ubuntu.com/

https://github.com/khvzak/bluez-tools

https://www.synopsys.com/software-integrity/security-testing/fuzz-testing/defensics/protocols/bt-obexs.html

https://en.wikipedia.org/wiki/OBject_EXchange

2
Elder Geek