Je suis nouveau sur Linux et nouveau sur les scripts Bluetooth. Ce que j'ai découvert jusqu'à présent est le suivant:
- Bluez est la pile BT par défaut.
- BluezTools est un ensemble d'utilitaires que vous pouvez utiliser pour interagir plus facilement avec Bluez
- DBus est l'interface à laquelle Bluez se connecte tout en interagissant directement avec le matériel.
- PulseAudio est le sous-système responsable de la production audio sur le système.
C'est logique. Disons donc que j'ai un casque BlueTooth, ce à quoi je m'attendrais (tout après l'appairage et la confiance), pour pouvoir émettre une commande qui peut se connecter directement à un certain profil sur le casque BT.
Le chemin technique que j'ai en tête serait quelque chose comme:
- Allumez les écouteurs.
- Émettez une commande BluezTools - telle que bt-audio -c
- Attendez que l'appareil se connecte au service que je recherche
- PulseAudio devrait maintenant prendre un nouveau périphérique de sortie
- Émettez une autre commande pour changer l'audio de ce qu'il était en un nouvel audio de sortie (le casque BT).
- Profitez d'une expérience d'écoute transparente.
Tout cela semble logique, mais l'implémentation réelle n'est pas comme ça, et je cherche le POURQUOI, donc je peux mieux comprendre le problème et essayer de le résoudre.
C'est ce qui se passe réellement:
- Allumez les écouteurs.
- Émettez une commande BluezTools - telle que bt-audio -c
- Attendez que l'appareil se connecte au service que je recherche
- PulseAudio devrait maintenant prendre un nouveau périphérique de sortie
- Émettez une commande PulseAudio pour changer le profil audio de la qualité du téléphone à la haute fidélité.
Permettez-moi de développer un peu ce point. Le casque bluetooth propose 2 modes de qualité (téléphone et haute fidélité). Seul 1 est vraiment adapté pour écouter de la musique.
Je m'attendrais à ce que le casque BT expose chaque mode de qualité en tant que service, n'est-ce pas? Cette hypothèse pourrait être fausse, mais je m'attendrais à quelque chose comme
bt-audio -c highFidelityProfile
ou
bt-audio -changeProfile highFidelityProfile
Au lieu de cela, il semble que Bluez gère uniquement la connexion RAW à l'appareil, et à partir de là, vous devez émettre un: pacmd set-card-profile $ INDEX a2dp
Cela semble fondamentalement faux. Pourquoi le contrôle de la qualité dans le sous-système audio nécessite-t-il donc une implémentation différente pour pulse ou alsa, ou tout autre sous-système audio?
Qu'est-ce que je rate? Pourquoi n'est-il pas possible de se connecter directement à un certain profil en utilisant Bluez / BluezTools, etc.?