Sono nuovo di Linux e anche di script Bluetooth. Quello che ho scoperto finora è il seguente:
- Bluez è lo stack BT predefinito.
- BluezTools è un insieme di utilità che è possibile utilizzare per interagire più facilmente con Bluez
- DBus è l'interfaccia a cui Bluez si connette mentre interagisce direttamente con l'hardware.
- PulseAudio è il sottosistema responsabile della produzione audio sul sistema.
Questo ha senso. Quindi diciamo che ho un set di cuffie BlueTooth, quello che mi aspetterei (tutto dopo l'associazione e la fiducia), per essere in grado di emettere un comando che può connettersi direttamente a un determinato profilo sulle cuffie BT.
Il percorso tecnico che ho in mente sarebbe qualcosa del tipo:
- Accendi le cuffie.
- Emettere un comando BluezTools - come bt-audio -c
- Attendi che il dispositivo si connetta al servizio che sto cercando
- PulseAudio dovrebbe ora prelevare un nuovo dispositivo di output
- Emettere un altro comando per cambiare l'audio da quello che era alla nuova uscita audio (le cuffie BT).
- Goditi un'esperienza di ascolto senza interruzioni.
Tutto questo sembra logico, ma l'implementazione effettiva non è così, e sto cercando il PERCHÉ, quindi posso capire meglio il problema e provare a risolverlo.
Questo è ciò che realmente accade:
- Accendi le cuffie.
- Emettere un comando BluezTools - come bt-audio -c
- Attendi che il dispositivo si connetta al servizio che sto cercando
- PulseAudio dovrebbe ora prelevare un nuovo dispositivo di output
- Emettere un comando PulseAudio per modificare il profilo audio dalla qualità del telefono all'alta fedeltà.
Lasciami espandere un po 'su questo. Le cuffie bluetooth offrono 2 modalità di qualità (telefono e alta fedeltà). Solo 1 è davvero adatto per l'ascolto di musica.
Mi aspetto che le cuffie BT espongano ogni modalità di qualità come servizio, giusto? Questa ipotesi potrebbe essere sbagliata, ma mi aspetterei qualcosa di simile
bt-audio -c highFidelityProfile
o
bt-audio -changeProfile highFidelityProfile
Invece sembra che Bluez gestisca semplicemente la connessione RAW al dispositivo e da lì è necessario emettere un: pacmd set-card-profile $ INDEX a2dp
Questo sembra fondamentalmente sbagliato. Perché il controllo di qualità nel sottosistema audio richiede quindi un'implementazione diversa per pulse o alsa o qualsiasi altro sottosistema audio disponibile?
Cosa mi sto perdendo? Perché non è possibile connettersi direttamente a un determinato profilo utilizzando Bluez / BluezTools ecc.?