Вопрос или проблема
Я использую LXQT в Lubuntu 18.10 и у меня есть проблема с поддержанием подключения Bluetooth-колонки к ноутбуку после выхода и входа в систему. Однако после перезагрузки все работает нормально.
Итак, у меня есть решение, которое всегда работает: перезагрузка ИЛИ: переустановка bluez:
sudo apt-get install --reinstall bluez
и это всегда работает!
В любом случае, когда возникает моя проблема, bluetooth никогда не блокируется.
Если я перезагружаюсь или переустанавливаю bluez, нет необходимости удалять и добавлять устройство снова, достаточно установить его в “Audio sink”.
Когда это происходит, после выхода и входа в систему:
- Колонка отображается в
blueman-manager
, установка на ‘Audio Sink’ приводит к ошибкеProtocol Not available
.
В терминале:
~$ blueman-manager
_________
Load (/usr/lib/python3/dist-packages/blueman/main/PluginManager.py:60)
['PulseAudioProfile', 'Services']
_________
__load_plugin (/usr/lib/python3/dist-packages/blueman/main/PluginManager.py:133)
loading <class 'blueman.plugins.manager.PulseAudioProfile.PulseAudioProfile'>
_________
pa_context_event (/usr/lib/python3/dist-packages/blueman/main/PulseAudioUtils.py:341)
1
_________
__load_plugin (/usr/lib/python3/dist-packages/blueman/main/PluginManager.py:133)
loading <class 'blueman.plugins.manager.Services.Services'>
blueman-manager version 2.0.5 starting
Stale PID, overwriting
_________
pa_context_event (/usr/lib/python3/dist-packages/blueman/main/PulseAudioUtils.py:341)
2
_________
on_bluez_name_owner_changed (/usr/bin/blueman-manager:96)
org.bluez owner changed to :1.238
_________
get_interface_version (/usr/lib/python3/dist-packages/blueman/bluez/BlueZInterface.py:13)
Detected BlueZ 5
_________
SetAdapter (/usr/lib/python3/dist-packages/blueman/gui/DeviceList.py:271)
_________
on_adapter_changed (/usr/lib/python3/dist-packages/blueman/gui/manager/ManagerToolbar.py:83)
toolbar adapter /org/bluez/hci0
_________
__init__ (/usr/lib/python3/dist-packages/blueman/main/Device.py:26)
caching initial properties
_________
add_device (/usr/lib/python3/dist-packages/blueman/gui/DeviceList.py:317)
adding new device
_________
do_cache (/usr/lib/python3/dist-packages/blueman/gui/DeviceList.py:496)
Caching new device C0:28:8D:81:64:5A
_________
row_update_event (/usr/lib/python3/dist-packages/blueman/gui/manager/ManagerDeviceList.py:264)
row update event Fake False
_________
row_update_event (/usr/lib/python3/dist-packages/blueman/gui/manager/ManagerDeviceList.py:264)
row update event Trusted 0
_________
row_update_event (/usr/lib/python3/dist-packages/blueman/gui/manager/ManagerDeviceList.py:264)
row update event Paired 1
_________
Generate (/usr/lib/python3/dist-packages/blueman/gui/manager/ManagerDeviceMenu.py:173)
UE BOOM 2
_________
pa_context_event (/usr/lib/python3/dist-packages/blueman/main/PulseAudioUtils.py:341)
3
_________
pa_context_event (/usr/lib/python3/dist-packages/blueman/main/PulseAudioUtils.py:341)
4
_________
on_pa_ready (/usr/lib/python3/dist-packages/blueman/plugins/manager/PulseAudioProfile.py:29)
connected
_________
<lambda> (/usr/lib/python3/dist-packages/blueman/main/PulseAudioUtils.py:353)
1
_________
Generate (/usr/lib/python3/dist-packages/blueman/gui/manager/ManagerDeviceMenu.py:173)
UE BOOM 2
_________
Generate (/usr/lib/python3/dist-packages/blueman/gui/manager/ManagerDeviceMenu.py:173)
UE BOOM 2
_________
set_op (/usr/lib/python3/dist-packages/blueman/gui/manager/ManagerDeviceMenu.py:85)
op: regenerating instance <ManagerDeviceMenu.ManagerDeviceMenu object at 0x7f8fd0e05e10 (blueman+gui+manager+ManagerDeviceMenu+ManagerDeviceMenu at 0x1efcb60)>
_________
set_op (/usr/lib/python3/dist-packages/blueman/gui/manager/ManagerDeviceMenu.py:85)
op: regenerating instance <ManagerDeviceMenu.ManagerDeviceMenu object at 0x7f8fd0e0eee8 (blueman+gui+manager+ManagerDeviceMenu+ManagerDeviceMenu at 0x1efce40)>
_________
unset_op (/usr/lib/python3/dist-packages/blueman/gui/manager/ManagerDeviceMenu.py:99)
op: regenerating instance <ManagerDeviceMenu.ManagerDeviceMenu object at 0x7f8fd0e05e10 (blueman+gui+manager+ManagerDeviceMenu+ManagerDeviceMenu at 0x1efcb60)>
_________
Generate (/usr/lib/python3/dist-packages/blueman/gui/manager/ManagerDeviceMenu.py:173)
UE BOOM 2
_________
unset_op (/usr/lib/python3/dist-packages/blueman/gui/manager/ManagerDeviceMenu.py:99)
op: regenerating instance <ManagerDeviceMenu.ManagerDeviceMenu object at 0x7f8fd0e0eee8 (blueman+gui+manager+ManagerDeviceMenu+ManagerDeviceMenu at 0x1efce40)>
_________
fail (/usr/lib/python3/dist-packages/blueman/gui/manager/ManagerDeviceMenu.py:124)
fail org.freedesktop.DBus.Python.blueman.bluez.errors.DBusFailedError: blueman.bluez.errors.DBusFailedError: Protocol not available
/usr/lib/python3/dist-packages/blueman/gui/manager/ManagerProgressbar.py:165: Warning: Source ID 697 was not found when attempting to remove it
GObject.source_remove(self.gsource)
- Но проблема не та же, что и в Bluetooth – Connection Failed: blueman.bluez.errors.DBusFailedError: Protocol Not available, потому что
pulseaudio-module-bluetooth
уже установлен.
и
~$ pactl load-module module-bluetooth-discover
Failure: Module initialization failed
потому что он уже был загружен.
Удаление устройства и попытка добавить его снова: оно вообще не найдено!
Какой аспект в нормальной работе bluez
– такой, который доступен при запуске системы, а также при переустановке пакета, – может быть потерян при перезапуске сессии? – И как избежать этой потери?
ОБНОВЛЕНИЕ/РЕДАКТИРОВАНИЕ от автора:
[Я автор. В какой-то момент я удалил свою учетную запись, а затем вернулся с тем же id.] Хочу добавить, что это проблема, специфичная для Lubuntu-LXQt. Я видел эту проблему во многих дистрибутивах Ubuntu и на основе Ubuntu до 18.04, но ни в одном начиная с 18.x. С 18.04 это исправлено, за исключением Lubuntu-LXQt.
Детали bluetooth-адаптера:
lsusb | grep Bluetooth
Bus 001 Device 013: ID 0489:e00f Foxconn / Hon Hai Foxconn T77H114 BCM2070 [Single-Chip Bluetooth 2.1 + EDR Adapter]
Это может не относиться к вашей странной проблеме, но ошибки в bluez
существуют уже долгое время: [Bug 1499858] Re: bluetoothd[650]: Failed to obtain handles for “Service Changed” characteristic
Последнее сообщение сегодня утром гласит:
Здравствуйте снова,
Я скомпилировал bluez-5.46 и установил его на ubuntu 16.04, и это
решило все ошибки “Not enough free handles to register service”
и также “Failed to obtain handles for “Service Changed”
characteristic” ошибки и bluetooth работает лучше, чем когда-либо
было, по крайней мере для меня. Таким образом, для меня это решено, пожалуй.Не знаю, поможет ли это кому-нибудь?? Но надеюсь, что да!
Всего наилучшего,
Singtoh
Рассмотрите возможность установки мастера радио устройств tlp
. Он будет:
- Включать или отключать встроенные устройства wifi, bluetooth или wwan при запуске и выключении системы
- Восстанавливать состояние радио устройства при запуске системы (из предыдущего завершения работы).
- Мастер радио устройств: переключать радио при подключении/отключении сети и при подключении/отключении док-станции
- Отключать Wake On LAN
- Состояние интегрированных WWAN и bluetooth восстанавливается после приостановки/гибернации
Источник: Добро пожаловать в TLP!
После множества попыток различных команд, модулей и так далее, что в итоге сработало для меня, было следующее:
$ sudo apt-get purge pulseaudio
$ rm ~/.config/pulse && sudo killall pulseaudio
$ sudo apt-get install pulseaudio
$ pulseaudio --start
Это обеспечит, что pulse сначала работает.
Затем выполните следующее, что немного странно, что не поставляется по умолчанию с самим pulseaudio:
$ sudo apt-get install pulseaudio-module-bluetooth
$ pactl load-module module-bluetooth-discover
Немного избыточно, я знаю, но это были точные шаги, которые сработали у меня 10 минут назад.
Но ладно, по крайней мере, теперь это работает 🙂
Это не сразу очевидно, что это связано с pulseaudio вообще. Добро пожаловать в странности Linux 🙂
Ответ или решение
Теория
Проблема, связанная с невозможностью подключения Bluetooth-динамика после выхода из системы на Lubuntu 18.10 с средой рабочего стола LXQt, может казаться специфичной, но она отражает общие механизмы работы систем на базе Linux. Bluetooth-технология в Linux управляется стеком BlueZ, который обеспечивает низкоуровневое взаимодействие с устройствами, используя D-Bus для обеспечения связи с другими приложениями, такими как менеджеры устройств, среда рабочего стола и Pulseaudio.
При перезагрузке весь стек BlueZ перезапускается, включая инициализацию всех необходимых модулей и служб. Однако при выходе из системы повторно не загружаются все модули, необходимые для взаимодействия. В частности, проблемой может быть некорректная конфигурация Pulseaudio или его модулей, ответственных за работу с Bluetooth-устройствами, что выражается в ошибке "Protocol Not available".
Пример
Из текста вопроса понятно, что после перезапуска или переустановки bluez всё работает, но после простого выхода из аккаунта возникает ошибка и Bluetooth-устройство невозможно использовать. Этот сценарий указывает на нестабильную работу Pulseaudio вместе с bluez. Загрузка модуля module-bluetooth-discover
при помощи команды pactl load-module module-bluetooth-discover
возвращает ошибку, если модуль уже загружен, что свидетельствует о его автоматической загрузке. Возможно, не хватает правильной связи между модулем Pulseaudio и BlueZ после выхода из системы.
Также, исходя из вашего описания, специфичность проблемы к интерпретации LXQt в Lubuntu 18.10 может указывать на нехватку поддержки определённых пакетов или слабую интеграцию различных версий софта в этой версии операционной системы.
Применение
Для решения проблемы можно попробовать следующие действия:
-
Проверка и настройка Pulseaudio и BlueZ:
- Убедитесь, что все необходимые модули Pulseaudio установлены:
sudo apt-get install pulseaudio-module-bluetooth
- После установки или обновления перезапустите Pulseaudio:
pulseaudio --kill pulseaudio --start
- Убедитесь, что все необходимые модули Pulseaudio установлены:
-
Автоматизация загрузки модулей:
-
Создайте или отредактируйте файл
~/.config/pulse/default.pa
и добавьте в него строки, которые обеспечат автоматическую загрузку необходимых модулей после каждого входа в систему:.include /etc/pulse/default.pa load-module module-bluetooth-discover
Это гарантирует, что модули будут загружены с каждой сессией, нивелируя необходимость делать это вручную.
-
-
Использование TLP для управления подключениями:
- Установите TLP для управления беспроводными соединениями и восстановление состояния устройств после выключения системы:
sudo apt-get install tlp
- Установите TLP для управления беспроводными соединениями и восстановление состояния устройств после выключения системы:
-
Тестирование и логирование:
- Если проблема не исчезает, включите логирование ввода-вывода и системных сообщений для deeper анализа с использованием
dmesg
иjournalctl
. Например:journalctl -e | grep bluetooth
- Если проблема не исчезает, включите логирование ввода-вывода и системных сообщений для deeper анализа с использованием
-
Переход на более новую версию ОС:
- Поскольку данная проблема значительно улучшена в более новых версиях Ubuntu, обновление до последних стабильных релизов может стать последним решением для устранения данных проблем с самим стеком BlueZ и его интеграцией в систему с LXQt.
Заключение
Таким образом, нестабильность работы Bluetooth в Lubuntu 18.10 может быть решена как корректной настройкой текущих компонентов, так и выходом на более новую версию ОС. Для систем Linux решения обычно включают как программные исправления, так и манипуляции с конфигурацией и управлением сервисами. Надлежащая практика по поддержке всех компонентов системы в актуальном состоянии, а также знание особенностей используемой технологии, будет вашим лучшим подспорьем в устранении таких неполадок.