Как настроить автоматическое подключение bluetooth-гарнитуры?

Предложение Жиля об использовании здесь документа действительно хорошее, и оно работает даже в языках сценариев, таких как Perl. В качестве конкретного примера, основанного на его ответе на проблему OP,

use strict;
my $cmd = q#cat <<'EOF' # . "\n" .
          q#echo PARAM=`  grep  $ARG  /var/tmp/setfile  | awk '{print $2}' `# . "\n" .
          q#EOF# ;
open (my $OUTPUT, "$cmd |");
print $_ while <$OUTPUT>;
close $OUTPUT;

Конечно, этот пример немного надуманный, но я нашел его полезным методом, скажем, для отправки операторов SQL в psql ] (вместо cat ).

(Обратите внимание, что любой не буквенно-цифровой непробельный символ может использоваться вместо # в общей конструкции цитирования, приведенной выше, но хеш, похоже, хорошо выделяется для этого примера и имеет вид не рассматривается как комментарий.)

10
13.04.2017, 15:22
5 ответов

Обычно ваша гарнитура должна автоматически пытаться подключиться к последнему подключенному устройству (большинство, если не все, делают это). Однако это может привести к сбою, если ваше устройство не является доверенным устройством.

Первое, что нужно проверить, это файлы журналов. В Ubuntu под /var/log/syslogв Debian может быть другое имя...Там я увидел ошибку: Попытка аутентификации без агента

Быстрый поиск в Интернете дал эту страницу, и все, что мне нужно было сделать, это добавить устройство в доверенные устройства. Запустите bluetoothctl, а затем введите trust XX:XX:XX:XX:XX:XX. Замените X на MAC-адрес вашего устройства. В приведенной мной ссылке также есть пример

. У вас может быть другая проблема, но проверьте свои файлы журналов, по крайней мере, чтобы увидеть, пытается ли ваше устройство подключиться. Если он пытается подключиться, вы также можете увидеть некоторые сообщения, если запустите bluetoothctlи подождите. Я продолжал видеть Подключено: да, нет, да, нет... сообщения все время. Он был отключен, потому что это не было доверенным устройством.

24
27.01.2020, 20:02

Автоматическое переподключение -также не работало у меня на Ubuntu 19 с использованием динамика Creative bt.

Я использовал ответ и комментарий выше, чтобы объединить доверие и отключение, подключение с помощью короткого сценария оболочки. Я сделал ссылку на рабочий стол для удобного выполнения скрипта.

Вы можете найти правильный MAC-адрес в настройках Bluetooth Ubuntu.

Скрипт:(сохраните как /home/username/connect _Speaker.sh)

#!/usr/bin/bash
bluetoothctl trust MAC-address
bluetoothctl disconnect MAC-address
bluetoothctl connect MAC-address

динамик.рабочий стол (ссылка)

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[en_US]=speaker
Name[en_US]=speaker
Exec=/home/username/connect_speaker.sh
Comment[en_US]=connect bt speaker
Name=speaker
Comment=connect bt speaker
Icon=speaker

Ссылка на рабочий стол — это тоже просто файл. замените имя пользователя своим именем пользователя в системе. Я сохранил значок динамика в /usr/share/icons/hicolor/256x256/apps как Speaker.png Ubuntu автоматически найдет его.

8
27.01.2020, 20:02

Помимо добавления доверия, вам также необходимо заставить pulseaudio принимать соединение. Цитирование по https://wiki.archlinux.org/index.php/Bluetooth_Headset#Setting_up_auto_connection...

.

To make your headset auto connect you need to enable PulseAudio's switch-on-connect module. Do this by adding the following lines to /etc/pulse/default.pa:

# automatically switch to newly-connected devices
load-module module-switch-on-connect

Now make bluetoothctl trust your Bluetooth headset by running trust 00:1D:43:6D:03:26 inside the bluetoothctl console

0
14.05.2020, 10:45

это уже включено в /etc/pulse/default.pa в Ubuntu 20.04

.ifexists module-switch-on-connect.so
load-module module-switch-on-connect
.endif
0
25.05.2020, 03:56

Я написал простой скрипт, который будет продолжать переподключать устройство при перезагрузке компьютера или когда устройство переключает статус Bluetooth или теряет сигнал на некоторое время.

#!/bin/bash

MAC="E0:CC:F8:E8:87:5D"

powered() {
    echo "show" | bluetoothctl | grep "Powered" | cut -d " " -f 2
}

connected() {
    echo "info ${MAC}" | bluetoothctl | grep "Connected" | cut -d " " -f 2
}

while true
do
    sleep 1
    if [ $(powered) = yes ] && [ $(connected) = no ]; then
        echo "connect ${MAC}" | bluetoothctl
        sleep 5
    fi
done
  1. Обновите переменную MAC, указав MAC-адрес вашего устройства. (динамик, смартфон...)
    echo "devices" | bluetoothctl | grep Device
  2. Сохраните скрипт, например, как~/.bt-autoconnect.sh
  3. Сделать его исполняемымchmod +x ~/.bt-autoconnect.sh
  4. Запускать при входе в системуecho "~/.bt-autoconnect.sh &" >> "~/.xprofile"
0
09.10.2021, 21:44

Теги

Похожие вопросы