Saya baru mengenal Linux dan juga baru dalam skrip Bluetooth. Apa yang saya temukan sejauh ini adalah sebagai berikut:
- Bluez adalah tumpukan BT default.
- BluezTools adalah seperangkat utilitas yang dapat Anda gunakan untuk lebih mudah berinteraksi dengan Bluez
- DBus adalah antarmuka yang disambungkan Bluez sambil berinteraksi langsung dengan perangkat keras.
- PulseAudio adalah subsistem yang bertanggung jawab untuk memproduksi audio pada sistem.
Ini masuk akal. Jadi katakanlah saya memiliki satu set headphone BlueTooth, apa yang saya harapkan adalah (semua setelah memasangkan dan mempercayai), untuk dapat mengeluarkan perintah yang dapat terhubung langsung ke profil tertentu pada headphone BT.
Jalur teknis yang ada dalam pikiran saya akan menjadi seperti:
- Hidupkan headphone.
- Keluarkan perintah BluezTools - seperti bt-audio -c
- Tunggu perangkat terhubung ke layanan yang saya cari
- PulseAudio sekarang harus mengambil perangkat output baru
- Keluarkan perintah lain untuk mengubah audio dari apa itu menjadi audio output baru (headphone BT).
- Nikmati pengalaman mendengarkan yang lancar.
Ini semua tampak logis, tetapi implementasi sebenarnya tidak seperti ini, dan saya mencari MENGAPA, jadi saya bisa lebih memahami masalah dan mencoba dan memperbaikinya.
Inilah yang sebenarnya terjadi:
- Hidupkan headphone.
- Keluarkan perintah BluezTools - seperti bt-audio -c
- Tunggu perangkat terhubung ke layanan yang saya cari
- PulseAudio sekarang harus mengambil perangkat output baru
- Keluarkan perintah PulseAudio untuk mengubah profil audio dari kualitas telepon ke kesetiaan tinggi.
Biarkan saya sedikit memperluas ini. Headset bluetooth menawarkan 2 mode kualitas (telepon dan kesetiaan tinggi). Hanya 1 yang benar-benar cocok untuk mendengarkan musik.
Saya berharap bahwa headphone BT mengekspos setiap mode kualitas sebagai layanan, apakah ini benar? Asumsi ini bisa saja salah, tetapi saya akan mengharapkan sesuatu seperti
bt-audio -c highFidelityProfile
atau
bt-audio -changeProfile highFidelityProfile
Sebaliknya tampaknya Bluez hanya menangani koneksi RAW ke perangkat, dan dari sana Anda perlu mengeluarkan: pacmd set-card-profile $ INDEX a2dp
Ini sepertinya salah secara fundamental. Mengapa kontrol kualitas dalam subsistem audio, karenanya memerlukan implementasi yang berbeda untuk pulsa atau alsa, atau sub sistem suara lainnya di luar sana?
Apa yang saya lewatkan? Mengapa tidak mungkin untuk terhubung langsung ke profil tertentu menggunakan Bluez / BluezTools dll?