
Я могу добавить и подключить Bluetooth-динамик в Linux (динамик UE BOOM; некоторые подробности в этом ответездесь). На этом этапе он сопряжен, надежен и работает идеально.
Проблема в том, что почти после каждого выхода из системы и после каждой перезагрузки динамик Bluetooth отсутствует в списке устройств вывода, которые можно выбрать в pavucontrol
или впанельный апплеткоторый я установил в этом Mint Xfce.
То же самое происходит, если динамик был отключен и использован другим устройством или телефоном.
Он по-прежнему присутствует в списке устройств в настройках Bluetooth, но отключен и не может быть включен.
В редких случаях устройство помечается как «мягко заблокированное» в sudo rfkill list
. В таких случаях я могу разблокировать его с помощью sudo rfkill unblock bluetooth
, чего иногда бывает достаточно, но в большинстве случаевтеслучаев недостаточно (приходится подключать вручную). Но в большинстве случаеввсеслучаях (то есть, когда устройство видно, но не подключается), этонетзаблокирован.
Что работает во всех случаях
(но я бы хотел избежать этого после каждого перезапуска/входа в систему):
- полное удаление устройства из настроек Bluetooth Xfce,
- нажатие кнопки Bluetooth на динамике (изображение),
- позвольте ноутбуку снова найти динамик UE BOOM. (В большинстве случаев этого достаточно, чтобы динамик подключился автоматически и появился в
pavucontrol
апплете панели. В некоторых случаях командаsudo rfkill unblock bluetooth
необходима, прежде чем компьютер сможет увидеть динамик.)
Таким образом, здесь, по-видимому, есть две проблемы, которые могут возникнуть или не возникнуть одновременно:
динамик «мягко заблокирован»
говорящий виден, но без связи
Эта проблема не является специфичной для Ubuntu, Xfce или ядра, я наблюдал ее в том же виде в Ubuntu Gnome, KDE-neon и в Solus (Gnome и Budgie).
Изменение #AutoEnable=false
на AutoEnable=true
не /etc/bluetooth/main.conf
помогает.
Системы, в которых я столкнулся с этой проблемой:
Linux Mint 18.2 Xfce
Ubuntu-Gnome 17.04
KDE-neon (на базе Ubuntu-16.04),
Солус (Гном и волнистый попугайчик)
Кубунту 17.10
решение1
Прежде всего убедитесь, что к тому же внешнему USB-устройству не подключены другие устройства, например смартфоны или ноутбуки.
Я думаю, будет нормально упомянуть в этом вопросе практическое решение, которое я нашел, или, вернее, практические обстоятельства, при которых проблема исчезла, и это может пролить свет на то, в чем на самом деле заключается проблема (или нет).
Итак, после того, как я увидел эту проблему в Linux Mint 18.2 Xfce, Ubuntu-Gnome (17.04, если я не ошибаюсь), KDE-neon (на основе Ubuntu-16.04, я думаю) и в Solus (Gnome и Budgie, скользящий релиз), я могу подтвердить, чтоUbuntu 16.04 («Ubuntu Desktop», он же Unity) не подвержен этой уязвимости..
После добавления и подключения динамик Bluetooth-устройства запоминается и автоматически подключается при включении питания без предварительного или дальнейшего вмешательства.
Его нужно только выбрать в настройках звука.
Вот и все, я не знаю, какой вывод сделать, кроме того, что в критических случаях рекомендуется использовать самые центральные распределения.
ОБНОВЛЕНИЕ ~ Другие системы, на которые эта проблема не влияет:
Linux Mint 18.3 KDE
Linux Mint 18.3 Mate
Что работает в системах, где возникает эта проблема:
В таких случаях запуск sudo rfkill list
дает Soft blocked: yes
, который можно разблокировать с помощью sudo rfkill unblock bluetooth
или даже rfkill unblock bluetooth
.
Если это не поможет разблокировать (или вообще не поможет), возможно, стоит сделать следующее:
systemctl enable bluetooth.service
systemctl start bluetooth.service
(как указаноздесь; первая команда запросит пароль несколько раз)
Устройство UE BOOM2 может бытьперезагрузитьс длительным нажатием одновременно накнопка питания и кнопка уменьшения громкости(пока не раздастся звук и устройство не выключится), что может быть полезно в сочетании с вышеизложенным.
решение2
Динамик UE Boom 2 использует технологию Bluetooth Low Energy (LE) для периодического оповещения об уровне заряда батареи и позволяет осуществлять дистанционное включение питания с помощью приложения для мобильного телефона, даже если он выключен.
Испытав ту же проблему, что и OP, я считаю, что это причина проблемы... По какой-то причине Bluez пытается подключиться к динамику, используя LE вместо BR/EDR (обычный Bluetooth), и тут же терпит неудачу. Сообщения журнала обычно относятся к GATT, и в качестве дополнительного доказательства, когда устройство выключено, оно все равно попытается подключиться, но не вернет ожидаемое сообщение «хост отключен», потому что LE всегда включен и доступен. На самом деле он не подключается к аудиоприемнику и большую часть времени сообщает «ресурс недоступен».
Итак... Во время процесса сопряжения файл конфигурации записывает, что устройство поддерживает LE. Чтобы решить проблему, я просто удалил этот атрибут поддержки. У меня не было проблем с подключением с тех пор(за исключением случаев, когда динамик уже подключен к моему телефону, но это уже другая проблема)даже при перезагрузке или выходе из системы.
После сопряжения динамика выключите Bluetooth с помощью:
sudo rfkill block bluetooth
Откройте файл в редакторе (nano/vim) как root:
/var/lib/bluetooth/<bluetooth-adapter-mac-address>/<speaker-mac-address>/info
Если вы не знаете MAC-адрес вашего Bluetooth-адаптера или MAC-адрес динамика, то запуск sudo grep -rnw '/var/lib/bluetooth/' -e 'UE'
должен дать вам подсказку. Если вы переименовали свой динамик, то замените строку «UE» на имя.
В этом файле вы должны увидеть строку:
SupportedTechnologies=BR/EDR;LE;
Замените на:
SupportedTechnologies=BR/EDR;
Сохраните файл. Убедитесь, что динамик выключен. Включите Bluetooth. Желательно перезагрузить компьютер, но перезапуск службы Bluetooth, вероятно, сработает:
sudo rfkill unblock bluetooth
sudo systemctl restart bluetooth
Теперь он больше никогда не должен подключаться с помощью LE, даже при перезагрузке и выходе из системы. Если вы по какой-либо причине повторно подключите устройство, то это изменение будет потеряно. Дайте его назад, я надеюсь, что это также сработает для тех, кто ищет решение этой проблемы...
Альтернативой try и , которую я использовал до того, как внес изменения с помощью файла выше, но это гораздо менее эффективное решение, — отключение LE на адаптере с помощью команды: sudo btmgmt le off — что дало тот же результат.