Я новичок в Linux и новичок в сценариях Bluetooth тоже. На данный момент я обнаружил следующее:
- Bluez - это стандартный BT стек.
- BluezTools - это набор утилит, которые вы можете использовать для более удобного взаимодействия с Bluez
- DBus - это интерфейс, к которому Bluez подключается при непосредственном взаимодействии с оборудованием.
- PulseAudio - это подсистема, отвечающая за создание звука в системе.
Это имеет смысл. Допустим, у меня есть набор наушников BlueTooth, который я ожидал бы (все после сопряжения и доверия), чтобы иметь возможность выдавать команду, которая может подключаться напрямую к определенному профилю в наушниках BT.
Технический путь, который я имею в виду, будет примерно таким:
- Включите наушники.
- Введите команду BluezTools, например, bt-audio -c.
- Подождите, пока устройство подключится к услуге, которую я ищу
- PulseAudio теперь должен подобрать новое устройство вывода
- Выполните другую команду, чтобы изменить звук с того, что было, на новый выходной звук (наушники BT).
- Наслаждайтесь плавным прослушиванием.
Все это кажется логичным, но фактическая реализация не такова, и я ищу ПОЧЕМУ, чтобы я мог лучше понять проблему и попытаться ее исправить.
Вот что на самом деле происходит:
- Включите наушники.
- Введите команду BluezTools, например, bt-audio -c.
- Подождите, пока устройство подключится к услуге, которую я ищу
- PulseAudio теперь должен подобрать новое устройство вывода
- Выполните команду PulseAudio, чтобы изменить профиль звука с качества телефона на высокое качество.
Позвольте мне остановиться на этом немного. Bluetooth-гарнитура предлагает 2 режима качества (телефон и высокая точность). Только 1 действительно подходит для прослушивания музыки.
Я ожидаю, что наушники BT выставляют каждый качественный режим как услугу, верно? Это предположение может быть неверным, но я бы ожидал что-то вроде
bt-audio -c highFidelityProfile
или
bt-audio -changeProfile highFidelityProfile
Вместо этого кажется, что Bluez просто обрабатывает RAW-соединение с устройством, и оттуда вам нужно выдать: pacmd set-card-profile $ INDEX a2dp
Это просто кажется в корне неверным. Почему контроль качества в аудиоподсистеме, следовательно, требует другой реализации для импульса или alsa, или любой другой звуковой подсистемы там?
Что мне не хватает? Почему невозможно напрямую подключиться к определенному профилю с помощью Bluez / BluezTools и т. Д.?