Enable bluetooth headset microphone on Ubuntu 20.04
After months and months dealing with this freaking issue that has become a pain in the ass, for real, there is this article:
That made things working again. I just cannot believe how much effort is needed to make a simple bluetooth headset work on Ubuntu. It still doesn’t work great, but it is fine.
In short what you need to do is:
Enable Bluetooth headset microphone
Before installing pipewire, please make sure that your issue is the same as mine.
First, type this command in Terminal
It should show something like this:
Where BOLTT BH1300 is my device name. type info and you will see info about your headset:
Device 07:F8:87:8F:B9:ED (public) Name: BOLTT BH1300 Alias: BOLTT BH1300 Class: 0x00340404 Icon: audio-card Paired: yes Trusted: yes Blocked: no Connected: yes LegacyPairing: no UUID: Serial Port (00001101-0000-1000-8000-00805f9b34fb) UUID: Audio Sink (0000110b-0000-1000-8000-00805f9b34fb) UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb) UUID: Advanced Audio Distribu.. (0000110d-0000-1000-8000-00805f9b34fb) UUID: A/V Remote Control (0000110e-0000-1000-8000-00805f9b34fb) UUID: Handsfree (0000111e-0000-1000-8000-00805f9b34fb) UUID: PnP Information (00001200-0000-1000-8000-00805f9b34fb) Modalias: bluetooth:v05D6p000Ad0240
Notice Audio Sink which is necessary to make sure the headset’s microphone is detected. Type quit to exit from bluetoothctl .
Now run pacmd list-cards to show all connected devices.
It should show all the devices. Locate your bluetooth headset and look for the profiles key like below. headset_head_unit available no means that HSP/HFP is not enabled.
profiles: a2dp_sink: High Fidelity Playback (A2DP Sink) (priority 40, available: unknown) headset_head_unit: Headset Head Unit (HSP/HFP) (priority 30, available: no) off: Off (priority 0, available: yes) active profile:
As pulseaudio does not support HSP/HFP by default, we can override it with the pipewire library.
Installing Pipewire in ubuntu 20.04
To Install pipewire, you need to add a pipewire repository. Type the following command in Terminal:
sudo add-apt-repository ppa:pipewire-debian/pipewire-upstream sudo apt update sudo apt install pipewire sudo apt install libspa-0.2-bluetooth sudo apt install pipewire-audio-client-libraries
Once updated, you will need to reload bluetooth services and mask pulseaudio.
systemctl --user daemon-reload systemctl --user --now disable pulseaudio.service pulseaudio.socket systemctl --user mask pulseaudio systemctl --user --now enable pipewire-media-session.service
If you run into some issues in the last command, which I did too. The best way is to restart pipewire or reboot your system.
systemctl --user restart pipewire sudo reboot # make sure eveything is working pactl info
I don’t know why but for me, it never worked straight and I always had to choose the Headset in Microphone settings manually as shown below.
PulseAudio + Bluetooth-наушники: не используется микрофон
Lenovo V510, Calculate Linux, PulseAudio, JBL E45BT. При Bluetooth-подключении (профиль «Гарнитура HSP/HFP») микрофон не воспринимается, т.е. Audacity не начинает запись вовсе — не просто тишина, а линия времени не удлиняется.
Обматерить поттеринга с его пульсаудио и авторов bluez заодно. Блюпуп-наушники в линуксе работают как попало.
Потом выложи выхлоп pactl list sources
Уже много раз обсуждали. Значит твоя гарнитура поддерживает только один из профилей (hsp или hpf, я забыл какой именно). А pulseaudio на данный момент поддерживает только другой из них.
Самый лёгкий способ — сменить наушники (если есть возможность в магазине проверить). Либо искать костыльные решения (не знаю, насколько они работоспособны, у меня в своё время получилось завести, но очень коряво).
Хотя конкретно твоя модель, если верить офсайту, поддерживает и hsp, и hfp. По логике должна работать.
pavucontrol что показывает? Ты в нём переключаешь на hsp/hfp?
- Проверить что микрофон точно работает.
- Покрутить всё что можно при включении соответствующего профиля в pavucontrol.
Ну и да, что-то такое, надеюсь, у тебя уже установлено pulseaudio-bluetooth.
А вообще, гуглить. Проблема стара как мир, никто и не собирается её нормально решать в ближайшее время. Кучи инструкций и доков в Сети.
Микрофон работает: при использовании с Windows. Со смартфоном. В pavucontrol «Гарнитура HSP/HFP».
А где смотреть ошибки в данном случае?
В pavucontrol «Гарнитура HSP/HFP».
А где смотреть ошибки в данном случае?
Для начала посмотри, что на вкладке Input devices.
Завтра сделаю скриншоты, но, как я уже сказал, в устройствах ввода наушники есть (вместе с качелькой уровня усиления, но без индикации уровня входящего звука), а во вкладке «Конфигурация» режим «Гарнитура HSP/HFP».
kuraga ( 05.01.20 03:45:47 MSK )
Последнее исправление: kuraga 05.01.20 03:46:20 MSK (всего исправлений: 1)
А ты поставил это устройство как устройство по умолчанию?
Да. Для верности даже, в последствии отключил все остальные устройства вообще.
А в других приложениях, кроме audacity, проверял? Желательно тех, у кого нативная поддержка pulseaudio (если правильно помню, в audacity только через маршрутизацию в alsa).
Нет, только ещё в Скайпе. Спасибо, погуглю, посмотрю.
Что-то я ничего не добился.
Учитывая, что у меня еще шум вместо звука с микрофона ноутбука, то решил попытаться перейти на Alsa.
В дополнение к моему комментарию. Документация ещё говорит, что ofono добавляет в pulseaudio поддержку HFP, но как-то у меня оно не добавило. Т.е. профиль так и остался недоступен, хотя пульса ofono вроде как признала.
UPD: а нет, шума с микрофона ноутбука нет.
Думаю проблема в том, что он цепляет не тот профиль. У меня такая же проблема, но я забил, т.к. микрофон на компе не особо нужен, а с телефоном оно работает.
О, спасибо, а я оригинальные пытался портировать. Может с этими более удачно выйдет. Возможно, что надо «headset» option of module-bluetooth-discover подправить. Эффектом от патча должно быть «available: yes» в выводе (при подключенном устройстве):
Напротив headset_head_unit: (или аналогичное название).
надо «headset» option of module-bluetooth-discover подправить
Кстати, у меня там были ошибки в /var/log/messages , которых, кажется, раньше не было… Кажется, kernel: Bluetooth: unknown opcode <. >.
А не подскажите, как/где смотреть более подробный логи bluetoothd и bluealsa?
P.S. А еще не подскажите, где в коде поменять написание версии ( pulseaudio —version )? Чтобы мне понимать, что патчи точно применились…
Та у меня 9.0, т.е. это бэкпорт и оригиналы мне и нужны. Я думал, что патчи старее. Может поэтому с трудом накладывается.
как/где смотреть более подробный логи bluetoothd и bluealsa?
Если запускать руками в консоли, то bluealsa всё туда и выводит. bluetoothd надо для этого передать -nd . Я так делал.
Найти строчку с module-bluetooth-discover в /etc/pulse/defaults.pa и дописать headset=native в конец. Хотя, может оно и не надо, вроде патчи меняют значение этой опции по умолчанию.
kernel: Bluetooth: unknown opcode
У меня hci0: hardware error какой-то есть, но я игнорирую.
где в коде поменять написание версии
Вообще оно там генерируется (в configure.ac прописан вызов git-version-gen ), но можно попробовать в src/pulse/version.h после конфигурирования.
как/где смотреть более подробный логи bluetoothd и bluealsa ?
Если запускать руками в консоли, то bluealsa всё туда и выводит. bluetoothd надо для этого передать -nd . Я так делал.
Ой, имел ввиду PulseAudio, а не Bluealsa 🙂 Ну оно log-level в /etc/pulse/daemon.conf .
Ну, A2DP работает, как и раньше. Но не HSP, HFP…
- Без патча, headset=native .
- Без патча, headset=ofono .
- С патчем.
- С патчем, headset=ofono .
- С патчем, headset=native .
- С патчем, отключенным при компиляции ofono, headset=native . Это добавляет режим Headset (HFP) . При подключении — ошибка (полный лог):
Jan 13 12:52:24 node-calculate2 pulseaudio[5755]: [pulseaudio] protocol-native.c: Application "Blueman" requests card profile change. card = bluez_card.5C_FB_7C_6A_01_38, profile = handsfree Jan 13 12:52:24 node-calculate2 pulseaudio[5755]: [pulseaudio] module-bluez5-device.c: Refused to switch profile to handsfree: Not connected
- С патчем, отключенным при компиляции ofono, headset=native , enable_native_hfp_hf=false (тык). Это добавляет режим Headset (HSP) . Подключение происходит. Звука нет. Лог.
P.S. А вот даже любопытно, в Ubuntu работает.
Чтоб его… А pactl list | grep -C2 A2DP хоть начало правильный вывод давать? Я когда ofono тыкал пытался разобраться почему профиль всё ещё available: no . Если с патчем оно yes , то это хоть что-то.
Полагаю, A2DP и без патча был.
Звуковая плата №4 Имя: bluez_card.5C_FB_7C_6A_01_38 Драйвер: module-bluez5-device.c Модуль-владелец: 39 Свойства: device.description = "JBL E45BT" device.string = "5C:FB:7C:6A:01:38" device.api = "bluez" device.class = "sound" device.bus = "bluetooth" device.form_factor = "headset" bluez.path = "/org/bluez/hci0/dev_5C_FB_7C_6A_01_38" bluez.class = "0x240404" bluez.alias = "JBL E45BT" device.icon_name = "audio-headset-bluetooth" device.intended_roles = "phone" Профили: headset_head_unit: Headset (HSP) (аудиоприёмников: 1, источников: 1, приоритет: 40, доступен: да) a2dp_sink: Воспроизведение высокого качества (приёмник A2DP) (аудиоприёмников: 1, источников: 0, приоритет: 60, доступен: да) off: Выключено (аудиоприёмников: 0, источников: 0, приоритет: 0, доступен: да) Активный профиль: a2dp_sink Порты: headset-output: Гарнитура (priority: 0, latency offset: 0 usec) Входит в профиль(и): headset_head_unit, a2dp_sink headset-input: Гарнитура (priority: 0, latency offset: 0 usec) Входит в профиль(и): headset_head_unit
Да, a2dp нативный и должен всегда быть, если устройство его поддерживает.
module-bluez5-device.c: Refused to switch profile to handsfree: Not connected
if (!d->transports[*p] || d->transports[*p]->state
Т.е. транспорт либо отсутствует, либо не подключён. Но выше по логу:
Jan 13 12:51:15 node-calculate2 pulseaudio[5755]: [pulseaudio] bluez5-util.c: Transport /org/bluez/hci0/dev_5C_FB_7C_6A_01_38/fd38 state: disconnected -> idle
How to use a bluetooth headset mic in Ubuntu?
I have a bluetooth headset (Sennheiser MM 550-X) connected to my computer through a USB bluetooth dongle (Asus USB-BT400). I'm running Ubuntu 14.10. I would like to configure the headset both as output (headphone) and input source (the mic). First of all, the headset pairs with the computer: In the Ubuntu sound settings, if i configure the headset in mode "A2DP", i can send the sound from the computer to the headset. But configuring the input source as my headset switches the mode of the output to HSP/HFP and nothing works anymore (neither sound output or mic) From my research on the internet i understand that only the HSP/HFP mode can get the mic working. Moreover the dongle uses a Broadcom BCM20702A0 chipset and i found some bug reports about it but i'm not sure whether there is still problems or not with this chipset. How to get the mic working ? thanks ! Edit: add output of lsusb:
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 003 Device 002: ID 0d3d:0040 Tangtop Technology Co., Ltd Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 003: ID 0b05:17cb ASUSTek Computer, Inc. Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
[35677.706802] usbcore: deregistering interface driver btusb [35677.709252] Bluetooth: hci0 urb ffff8800d5ec6840 failed to resubmit (2) [35690.999061] usbcore: registered new interface driver btusb
Can you add the result of lsusb to your question? I think the BCM20702A0 is one of the bluetooth devices that need patchram firmware to use HSP/HFP