Недавно купил ноут Lenovo L340, и Bluetooth мышь (Logitech M590) к нему, потому что USB портов всего два (+ один C). И заодно есть клавиатура Logitech K380.
Установил Linux Mint 20, особых проблем нет, только в дистрибутив не был включен драйвер WiFi (RTL8821CE), пришлось подключать USB WiFi адаптер, чтобы установить драйвер (сначала установил с гитхаба, потом заметил, что он был в Driver Manager Минта ).
Включил мышку, выбрал её в стандартном приложении для управления Bluetooth — заработало.
Но после сна или перезагрузки она не подключилась автоматически, пришлось снова подключать её с тачпада (и потом еще приложение почему-то пару раз как-то зависало/не давало подключить).
В гугле посоветовали взять другое приложение
sudo apt remove blueberry -y && apt install blueman
и пометить там устройство как доверенное (trust).
Еще советовали в /etc/bluetooth/input.conf
добавить
UserspaceHID=true
И еще в pin-code-database.xml
добавить что-то типа
<device oui="DB:D9:1D:" name="M585/M590" type="mouse" pin="0000"/>
Все варианты не сильно помогли, иногда мышь подключалась сама (возможно не из-за этих изменений), и вроде бы при нажатии кнопки поиска устройств в blueman.
После экспериментов с bluetoothctl понял, что для переподключения достаточно команды connect MAC_мышки
. Нашел тут этот Питоновский скрипт, который отправляет её автоматически:
Установил так:
git clone https://github.com/jrouleau/bluetooth-autoconnect.git
- Скопировать скрипт в
/usr/bin
(этот путь по умолчанию указан в сервисе):
sudo cp bluetooth-autoconnect/bluetooth-autoconnect /usr/bin/
- Установить и запустить сервис:
sudo cp bluetooth-autoconnect/bluetooth-autoconnect.service /etc/systemd/system/ sudo systemctl enable bluetooth-autoconnect.service sudo systemctl start bluetooth-autoconnect.service
Но это тоже не полностью помогло. Сначала подумал, что скрипт не срабатывает при выходе из сна (проверял в основном с помощью сна) потому что в readme пишут, что скрипт в режиме сервиса реагирует только на включение bluetooth адаптера, и даже создал по этому примеру сервис bluetooth-autoconnect-after-sleep.service
[Unit]
Description=Bluetooth autoconnect after sleep service
After=suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target
[Service]
Type=simple
ExecStart=/usr/bin/bluetooth-autoconnect -v
[Install]
WantedBy=bluetooth.service suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target
Но потом в логах сервиса (systemctl status bluetooth-autoconnect.service
) увидел, что и исходный сервис срабатывал при выходе из сна. И увидел, что при подключении мышки выдаются странные ошибки типа Software caused connection abort
. При просто вызове из терминала bluetoothctl connect
ошибок никогда не было, так что решил, что надо просто вызывать чуть позже.
Добавил в сервис
ExecStartPre=/bin/sleep 15
и вроде бы пока работает.
Наверно надо отправить баг-репорт куда-нибудь, может исправят что-то или помогут понять причину )
С клавиатурой K380 таких проблем не было, переподключалась сама.
Только blueman почему-то не выводил рандомный PIN, который надо ввести на клавиатуре при первом подключении. Не знаю работает ли это в стандартном приложении.
Решил подключением через bluetoothctl
:
-
scan on
и подождать пока появится клавиатура и её MAC (XX:XX:XX:XX:XX:XX
). -
pair MAC_клавиатуры
, появится PIN, ввести на подключаемой клавиатуре и нажатьEnter
. trust MAC_клавиатуры
connect MAC_клавиатуры