Verbinden Sie automatisch einen vertrauenswürdigen Bluetooth-Lautsprecher

10

Ich habe das folgende Tutorial ( http://mygeeks014.blogspot.nl/2015/01/audio-streaming-to-bluetooth-speaker.html ) befolgt , um einen Bluetooth-Lautsprecher an meinen Raspberry Pi anzuschließen. Alles funktioniert wie vorgesehen, aber der Lautsprecher wird nicht automatisch wieder verbunden, wenn die Himbeere neu gestartet oder der Lautsprecher ein- oder ausgeschaltet wird. Im Moment schließe ich den Lautsprecher manuell über die Raspbian-Benutzeroberfläche wieder an, aber ich frage mich, ob es eine einfache Lösung gibt, um den Lautsprecher über die CLI wieder anzuschließen. Ich kann dann einen einfachen CRON schreiben, um den Lautsprecher wieder anzuschließen, wenn er noch nicht angeschlossen ist.

Den3243
quelle

Antworten:

17

Hier ist eine sehr detaillierte Erklärung:

Den3243

Hier ist eine Befehlszeilenlösung:

Lassen Sie uns zunächst scannen, koppeln und Ihrem Gerät "bluetoothctl" anvertrauen. Führen Sie dazu dies in der Befehlszeile Ihres Terminals aus:

bluetoothctl -a

Sie sollten eine andere Eingabeaufforderung erhalten wie:

[bluetooth]

Geben Sie bei eingeschaltetem BT-Lautsprecher Folgendes ein:

scan on

In wenigen Augenblicken sollten Sie die verfügbaren BT-Geräte sehen. Neben dem Gerät befindet sich die MAC-Adresse wie: 00: AA: 22: BB: 33. Geben Sie nun Folgendes ein:

info <your mac address>

Schließen Sie die Zeichen größer als und kleiner als aus. Was Sie suchen, ist eine Art frühere Verbindung mit Ihrem BT-Sprecher. Sie werden wissen, dass es eine frühere Zuordnung gab, da Bluetoothctl Informationen zu Ihrem BT-Gerät anzeigt. Einige dieser Informationen beziehen sich auf das gekoppelte und vertrauenswürdige Gerät. Das ist gut.

Wenn sich Bluetoothctl darüber beschwert, dass es kein Gerät gibt, müssen wir dies in diesem Moment einrichten. Geben Sie dazu Folgendes ein:

pair <your mac address>

Sie sollten eine Erfolgsmeldung über die erfolgreiche Kopplung Ihres Geräts sehen. Vertrauen wir jetzt unserem neuen BT-Gerät. Geben Sie Folgendes ein:

trust <your mac address>

Auch hier sollte eine Erfolgsmeldung zum Thema Vertrauen angezeigt werden. Lassen Sie sich von mir vorwarnen. Ihr BT-Gerät kann dann möglicherweise erneut eine Verbindung herstellen. Keine Angst, wir wollen nicht, dass es sich verbindet. Fahren Sie fort und beenden Sie "bluetoothctl". Geben Sie dazu Folgendes ein:

quit

Jetzt kehren Sie zur Eingabeaufforderung zurück. In einem früheren Beitrag habe ich vorgeschlagen, dass Sie ein Skriptverzeichnis in Ihrem Home-Verzeichnis erstellen. Wenn nicht, machen Sie das jetzt. Geben Sie dies an der Eingabeaufforderung ein:

mkdir -p ~/scripts

Drücken Sie die Eingabetaste und jetzt erstellen wir unser Autopair-Bash-Skript. Geben Sie Folgendes ein:

nano ~/scripts/autopair

Geben Sie diesen Code in das Skript ein:

#!/bin/bash
bluetoothctl << EOF
connect [enter your MAC add]
EOF

Klammern ausschließen!

Drücken Sie jetzt gleichzeitig STRG + x und dann die Eingabetaste, um das Skript zu speichern. Wir müssen es ausführbar machen. Geben Sie dazu Folgendes ein:

chmod +x ~/scripts/autopair

Ich gehe davon aus, dass Sie keine externen analogen Lautsprecher verwenden, die an die 3,5-mm-Buchse angeschlossen sind. Wenn dies zutrifft, deaktivieren wir alsa. Dazu bearbeiten wir eine Datei im Verzeichnis / boot mit dem Namen config.txt. Geben Sie dazu Folgendes in Ihr Terminal ein:

sudo nano /boot/config.txt

Blättern Sie zum Ende der Datei und suchen Sie nach zwei Zeilen, die lauten:

# Enable audio (loads snd_bcm2835)
dtparam=audio=on

Stellen Sie ein (Pfundzeichen #) vor die Zeile mit der Aufschrift:

dtparam=audio=on

Aussehen:

#dtparam=audio=on

Drücken Sie STRG + x und dann die Eingabetaste, um Ihre Datei zu speichern.

Ich gehe davon aus, dass Sie pulseaudio installiert haben? Wenn nicht, führen Sie diesen Befehl über die Befehlszeile aus:

sudo apt-get update && sudo apt-get install pulseaudio -y

Dadurch erhalten Sie eine sehr wichtige Komponente, damit Bluetooth funktioniert! Jetzt bearbeiten wir unsere .bashrc-Datei in unserem Home-Verzeichnis. Geben Sie Folgendes ein:

nano ~/.bashrc

Blättern Sie nach unten und fügen Sie diese Zeile hinzu:

pulseaudio --start

Drücken Sie STRG + x und drücken Sie jetzt die Eingabetaste, um Ihre Datei zu speichern.

IN ORDNUNG! Wir müssen in die Python-Welt eintreten. Ich habe ein Python-Programm geschrieben, das nach dem Bluetooth-Gerät sucht. Kurz gesagt, es wird die Verbindung zwischen RPi und Ihrem Bluetooth-Lautsprecher aktiviert, sobald Ihr Bluetooth-Lautsprecher eingeschaltet ist. Und umgekehrt. Erstellen wir ein Verzeichnis namens Python in Ihrem Home-Verzeichnis. Geben Sie dazu Folgendes ein:

mkdir -p ~/python

Jetzt erstellen wir die Python-Programmdatei. Geben Sie dazu Folgendes ein:

nano ~/python/on.py

In diese Datei müssen wir Folgendes kopieren und einfügen:

#!/usr/bin/python
#
# Monitor removal of bluetooth reciever
import os
import sys
import subprocess
import time

def blue_it():
    status = subprocess.call('ls /dev/input/event0 2>/dev/null', shell=True)
    while status == 0:
        print("Bluetooth UP")
        print(status)
        time.sleep(15)
        status = subprocess.call('ls /dev/input/event0 2>/dev/null', shell=True)
    else:
        waiting()

def waiting():
    subprocess.call('killall -9 pulseaudio', shell=True)
    time.sleep(3)
    subprocess.call('pulseaudio --start', shell=True)
    time.sleep(2)
    status = subprocess.call('ls /dev/input/event0 2>/dev/null', shell=True)  
    while status == 2:
        print("Bluetooth DOWN")
        print(status)
        subprocess.call('~/scripts/autopair', shell=True)
        time.sleep(15)
        status = subprocess.call('ls /dev/input/event0 2>/dev/null', shell=True)
    else:
        blue_it() 

blue_it()

Drücken Sie nun STRG + x und dann die Eingabetaste, um die Python-Programmdatei zu speichern. Jetzt müssen wir diese Datei ausführbar machen. Geben Sie dazu Folgendes ein:

chmod +x ~/python/on.py

Fügen wir dies abschließend unserem .bashrc-Skript in unserem Home-Verzeichnis hinzu:

nano ~/.bashrc

Blättern Sie zum Ende der Datei und fügen Sie diese beiden Zeilen hinzu:

wait
~/python/on.py

Drücken Sie nun STRG + x und dann die Eingabetaste, um zu speichern. Schalten Sie Ihren Bluetooth-Lautsprecher ein und starten Sie Ihren Raspberry Pi neu.

Viel Glück!

-Nitrolinux

Jason Woodruff
quelle
Vielen Dank für Ihren Kommentar. Ich muss auch die Schaltfläche 'Sink Audio' in der Benutzeroberfläche drücken. Gibt es auch dafür eine CLI-Alternative?
Den3243
Ich habe meine ursprüngliche Antwort aktualisiert.
Jason Woodruff
1
Vielen Dank für Ihre sehr ausführliche Erklärung! Klappt wunderbar.
Den3243
Ich bin froh, dass es funktioniert hat!
Jason Woodruff
Wird dieses Skript nicht irgendwann aufgrund einer unendlichen Rekursion zwischen blue_it und Warten abstürzen?
Kevin Chen
4

Ich habe festgestellt, dass es aktuelle Probleme mit pulseaudio5 gibt, insbesondere wenn es um die Audiowiedergabe über Bluetooth geht. Als solches schlage ich vor, dass Sie PulseAudio6 nicht für das verwenden müssen, was Sie möchten, anstatt diese zu debuggen, wenn sie kommen.

Ich habe ein Repo erstellt, das alles unten automatisiert, sodass Sie nicht die ganze Beinarbeit erledigen müssen, aber wenn Sie immer noch bereit sind, es selbst zu tun, fahren Sie unten fort.

Repo: https://github.com/BaReinhard/a2dp_bluetooth

Installationsprozess:

git clone https://github.com/bareinhard/a2dp_bluetooth
cd a2dp_bluetooth/a2dp_source
./configure

Warten Sie, bis der Installationsvorgang abgeschlossen ist, und starten Sie den Computer neu. Nach Abschluss müssen Sie Ihr Gerät zunächst koppeln, vertrauen und verbinden. Nach der ersten Zeit müssen Sie nur noch das Gerät einschalten.

Pairing, Vertrauen und Verbinden:

sudo bluetoothctl
[bluetooth]# power on
[bluetooth]# agent on
[bluetooth]# default-agent
[bluetooth]# scan on
[bluetooth]# pair XX:XX:XX:XX:XX
[bluetooth]# trust XX:XX:XX:XX:XX
[bluetooth]# connect XX:XX:XX:XX:XX
[bluetooth]# exit

-------------------- Komplette exemplarische Vorgehensweise: --------------------

Kompilieren von PulseAudio 6

Fügen Sie die folgenden Dateien hinzu

/etc/init.d/pulseaudio

#!/bin/sh -e
### BEGIN INIT INFO
# Provides:          pulseaudio esound
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Should-Start:      udev network-manager
# Should-Stop:       udev network-manager
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start the PulseAudio sound server
# Description:       System mode startup script for
#                    the PulseAudio sound server.
### END INIT INFO

DAEMON=/usr/local/bin/pulseaudio
PIDDIR=/var/run/pulse
PIDFILE=$PIDDIR/pid
DAEMONUSER=pulse
PATH=/sbin:/bin:/usr/sbin:/usr/bin

test -x $DAEMON || exit 0

. /lib/lsb/init-functions

pulseaudio_start () {
        log_daemon_msg "Starting system PulseAudio Daemon"
        if [ ! -d $PIDDIR ]; then
                mkdir -p $PIDDIR
                chown $DAEMONUSER:$DAEMONUSER $PIDDIR
        fi
        start-stop-daemon -x $DAEMON -p $PIDFILE --start -- --system --disallow-exit --disallow-module-loading=0 --daemonize --log-target=syslog --high-priority
        status=$?
        if [ -e /var/run/pulse/.esd_auth ]; then
                chown pulse:pulse-access /var/run/pulse/.esd_auth
                chmod 640 /var/run/pulse/.esd_auth
        fi
        if [ -e /var/run/pulse/.pulse-cookie ]; then
                chown pulse:pulse-access /var/run/pulse/.pulse-cookie
                chmod 640 /var/run/pulse/.pulse-cookie
        fi
        log_end_msg ${status}
}

pulseaudio_stop () {
        log_daemon_msg "Stopping system PulseAudio Daemon"
        start-stop-daemon -p $PIDFILE --stop --retry 5 || echo -n "...which is not running"
        log_end_msg $?
}

case "$1" in
        start|stop)
                pulseaudio_${1}
                ;;
        restart|reload|force-reload)
                if [ -s $PIDFILE ] && kill -0 $(cat $PIDFILE) >/dev/null 2>&1; then
                        pulseaudio_stop
                        pulseaudio_start
                fi
                ;;
        force-stop)
                pulseaudio_stop
                killall pulseaudio || true
                sleep 2
                killall -9 pulseaudio || true
                ;;
        status)
                status_of_proc -p $PIDFILE "$DAEMON" "system-wide PulseAudio" && exit 0 || exit $?
                ;;
        *)
                echo "Usage: /etc/init.d/pulseaudio {start|stop|force-stop|restart|reload|force-reload|status}"
                exit 1
                ;;
esac

exit 0

/etc/init.d/bluetooth

#!/bin/sh -e
### BEGIN INIT INFO
# Provides:            bluetooth
# Required-Start:      $local_fs $syslog dbus
# Required-Stop:       $local_fs $syslog
# Default-Start:       2 3 4 5
# Default-Stop:        0 1 6
# Short-Description:   Starts bluetooth daemons
### END INIT INFO

. /lib/lsb/init-functions

DESC=bluetoothd
DAEMON=/usr/libexec/bluetooth/bluetoothd
#SSD_OPTIONS="--oknodo --quiet --exec $DAEMON --plugin=a2dp"
SSD_OPTIONS="--oknodo --quiet --exec $DAEMON" #Change to this if you want media control using DBus at the expense of volume control 
HCI=hci0

case "${1}" in
    start)
       log_daemon_msg "Starting Bluetooth daemon bluetoothd..."
       start-stop-daemon --start --background $SSD_OPTIONS
       log_progress_msg "${DAEMON}"

       hciconfig $HCI up > /dev/null 2>&1
       log_end_msg 0
       ;;

    stop)
        log_daemon_msg "Stopping Bluetooth daemon bluetoothd..."
        start-stop-daemon --stop $SSD_OPTIONS
        log_progress_msg "${DAEMON}"
        log_end_msg 0
       ;;

    restart)
       ${0} stop
       sleep 1
       ${0} start
       ;;

    status)
        status_of_proc "$DAEMON" "$DESC" && exit 0 || exit $?
       ;;

    *)
         echo "Usage: ${0} {start|stop|restart|status}"
         exit 1
       ;;
esac

exit 0

Aktivieren Sie neue init.d-Dienste und machen Sie sie ausführbar

sudo chmod +x /etc/init.d/bluetooth
sudo chmod +x /etc/init.d/pulseaudio
sudo update-rc.d bluetooth defaults
sudo update-rc.d pulseaudio defaults

Stellen Sie sicher, dass wir alle erforderlichen Module haben

sudo apt-get install bluez pulseaudio-module-bluetooth python-dbus libtool intltool libsndfile-dev libcap-dev libjson0-dev libasound2-dev libavahi-client-dev libbluetooth-dev libglib2.0-dev libsamplerate0-dev libsbc-dev libspeexdsp-dev libssl-dev libtdb-dev libbluetooth-dev intltool autoconf autogen automake build-essential libasound2-dev libflac-dev libogg-dev libtool libvorbis-dev pkg-config python -y

Wechseln Sie in das Home-Verzeichnis und installieren Sie json-c von der Git-Quelle (erforderlich für PA6).

cd ~
git clone https://github.com/json-c/json-c.git
cd json-c
./configure 
make
sudo make install

Wechseln Sie in das Basisverzeichnis und installieren Sie libsndfile von der Git-Quelle

git clone git://github.com/erikd/libsndfile.git
cd libsndfile
./autogen.sh
./configure --enable-werror
make
sudo make install

Stellen Sie sicher, dass Bluetooth sucht ( sudo hciconfig hci0 piscanveraltet ist)

cat << EOT | sudo tee -a /etc/bluetooth/main.conf
[Policy]
AutoEnable=true
EOT

Navigieren Sie zu Home Directory und installieren Sie PulseAudio 6 von der Git-Quelle

git clone --branch v6.0 https://github.com/pulseaudio/pulseaudio
cd pulseaudio
sudo ./bootstrap.sh
sudo make
sudo make install
sudo ldconfig

Stellen Sie sicher, dass der Puls in allen erforderlichen Gruppen liegt

sudo addgroup --system pulse
sudo adduser --system --ingroup pulse --home /var/run/pulse pulse
sudo addgroup --system pulse-access
sudo adduser pulse audio
sudo adduser root pulse-access
sudo adduser pulse lp

Aktualisieren /etc/pulse/system.paund /etc/pulse/daemon.confwie folgt aussehen:

/etc/pulse/system.pa

#!/usr/bin/pulseaudio -nF
#
# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PulseAudio; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.

# This startup script is used only if PulseAudio is started in system
# mode.

### Automatically load driver modules depending on the hardware available
.ifexists module-udev-detect.so
 #load-module module-udev-detect
 load-module module-udev-detect tsched=0
.else
### Use the static hardware detection module (for systems that lack udev/hal support)
load-module module-detect
.endif

### Load several protocols
.ifexists module-esound-protocol-unix.so
load-module module-esound-protocol-unix
.endif
load-module module-native-protocol-unix

### Automatically restore the volume of streams and devices
load-module module-stream-restore
load-module module-device-restore

### Automatically restore the default sink/source when changed by the user
### during runtime
### NOTE: This should be loaded as early as possible so that subsequent modules
### that look up the default sink/source get the right value
load-module module-default-device-restore

### Automatically move streams to the default sink if the sink they are
### connected to dies, similar for sources
load-module module-rescue-streams

### Make sure we always have a sink around, even if it is a null sink.
load-module module-always-sink

### Automatically suspend sinks/sources that become idle for too long
load-module module-suspend-on-idle

### Enable positioned event sounds
load-module module-position-event-sounds

### Automatically load driver modules for Bluetooth hardware
.ifexists module-bluetooth-discover.so
    load-module module-bluetooth-discover
.endif
load-module module-bluetooth-policy
load-module module-switch-on-connect

/etc/pulse/daemon.conf

# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PulseAudio; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA.

## Configuration file for the PulseAudio daemon. See pulse-daemon.conf(5) for
## more information. Default values are commented out.  Use either ; or # for
## commenting.

; daemonize = no
; fail = yes
; allow-module-loading = yes
; allow-exit = yes
; use-pid-file = yes
; system-instance = no
; local-server-type = user
; enable-shm = yes
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB
; lock-memory = no
; cpu-limit = no

; high-priority = yes
; nice-level = -15

; realtime-scheduling = yes
; realtime-priority = 5

exit-idle-time = -1
; scache-idle-time = 20

; dl-search-path = (depends on architecture)

; load-default-script-file = yes
; default-script-file = /etc/pulse/default.pa

; log-target = auto
; log-level = notice
; log-meta = no
; log-time = no
; log-backtrace = 0

# resample-method defaults to  speex-float-1 on most architectures,
# speex-fixed-1 on ARM
; resample-method = speex-float-1
resample-method = ffmpeg
enable-remixing = no
enable-lfe-remixing = no

; flat-volumes = yes

; rlimit-fsize = -1
; rlimit-data = -1
; rlimit-stack = -1
; rlimit-core = -1
; rlimit-as = -1
; rlimit-rss = -1
; rlimit-nproc = -1
; rlimit-nofile = 256
; rlimit-memlock = -1
; rlimit-locks = -1
; rlimit-sigpending = -1
; rlimit-msgqueue = -1
; rlimit-nice = 31
; rlimit-rtprio = 9
; rlimit-rttime = 1000000

default-sample-format = s16le
default-sample-rate = 44100
;alternate-sample-rate = 48000
default-sample-channels = 2
; default-channel-map = front-left,front-right

default-fragments = 10
default-fragment-size-msec = 10

; enable-deferred-volume = yes
; deferred-volume-safety-margin-usec = 8000
; deferred-volume-extra-delay-usec = 0

Richten Sie die udev-Regel ein

Bearbeiten /etc/udev/rules.d/99-com.rulesund fügen Sie die folgenden zwei Zeilen hinzu:

SUBSYSTEM=="input", GROUP="input", MODE="0660"
KERNEL=="input[0-9]*", RUN+="/usr/local/bin/bluez-udev"

Erstellen /usr/local/bin/bluez-udev

/ usr / local / bin / bluez-udev

#!/bin/bash
name=$(sed 's/\"//g' <<< $NAME)
#exit if not a BT address
if [[ ! $name =~ ^([0-9A-F]{2}[:-]){5}([0-9A-F]{2})$ ]]; then exit 0;  fi

bt_name=`grep Name /var/lib/bluetooth/*/$name/info | awk -F'=' '{print $2}'`

audio_sink=bluez_source.$(sed 's/:/_/g' <<< $name)

action=$(expr "$ACTION" : "\([a-zA-Z]\+\).*")
logger "Action: $action"
if [ "$action" = "add" ]; then
    logger "[$(basename $0)] Bluetooth device is being added [$name] - $bt_name"
    logger "[$(basename $0)] Patching $audio_source into ALSA sink #$audio_sink"
    #hciconfig hci0 noscan
    bluetoothctl << EOT
discoverable off
EOT
    # Grab Card Number
    PACARD=`pactl list cards | grep "Card #" | sed "s/Card #//"`

    # Grab Sink Input if it exists
    audio_source=`pactl pactl list sink-inputs | grep "Sink Input" | sed "s/Sink Input #//"`
    if [ $audio_source = "" ];then
        sleep 5
        audio_source=`pactl pactl list sink-inputs | grep "Sink Input" | sed "s/Sink Input #//"`

    fi
    pactl set-sink-volume $audio_sink 65537
    if [ $audio_source != "" ]; then
        pactl set-source-volume $audio_source 90%
    fi
    pactl set-card-profile $PACARD a2dp_sink


    pactl set-default-sink $audio_sink





    # loop back this source to the default sink
    handle=$(pactl load-module module-loopback source=$audio_source sink=$audio_sink)
    logger "[$(basename $0)] PulseAudio module-loopback returned handle [$handle]"
    logger "$bt_name"


fi

if [ "$action" = "remove" ]; then
    # Grab Sink Input if it exists
    audio_source=`pactl pactl list sink-inputs | grep "Sink Input" | sed "s/Sink Input #//"`
    if [ $audio_source = "" ];then
        sleep 5
        audio_source=`pactl pactl list sink-inputs | grep "Sink Input" | sed "s/Sink Input #//"`

    fi
    pactl set-sink-volume 0 65537
    if [ $audio_source = "" ]; then
#        pactl set-default-sink 0
        pactl set-source-volume $audio_source 90%
    else
        pactl move-sink-input $audio_source 0 
    fi

    logger "[$(basename $0)] Bluetooth device is being removed [$name] - $bt_name"
    #hciconfig hci0 pscan

    bluetoothctl << EOT
discoverable on
EOT

    # remove any loopback modules assigned to this source
    # only required for USB sound cards, which PulseAudio will not automatically remove
    for handle in $(pactl list short modules | grep module-loopback | grep source=$audio_source | cut -f 1); do
        logger "[$(basename $0)] Unloading module-loopback with handle [$handle]"
        pactl unload-module $handle
    done

    sleep 5
    amixer cset numid=3 80%
    amixer cset numid=3 80%
fi

Stellen Sie sicher, dass bluez-udev ausführbar ist

sudo chmod +x /usr/local/bin/bluez-udev

Zusammenfassung

Was wird hier gemacht?

  • Init.d-Dienste für Bluetooth und Pulseaudio erstellen und aktivieren
  • Abhängigkeiten für PulseAudio6 installieren
  • Kompilieren von PulseAudio6 und Hinzufügen des Impulsbenutzers zu den erforderlichen Gruppen (die meisten wurden bereits durchgeführt)
  • Richten Sie daemon.conf und system.pa ein, um die richtigen Module zu laden
  • Erstellen Sie eine udev-Regel, um bluez-udev jedes Mal auszuführen, wenn ein Gerät verbunden ist. bluez-udev prüft, ob es sich bei dem Gerät um ein Bluetooth-Gerät handelt. Wenn dies der Fall ist, wird versucht, aktuell wiedergegebenes Audio mit der von pulseaudio erstellten Bluetooth-Senke zu verbinden. Wenn Sie die Bluetooth-Verbindung trennen, wird der Stream zurück zur Standardsenke oder zur Senke 0 verschoben. Nachdem Sie nun ein automatisch verbundenes Bluetooth-Gerät haben sollten, verbindet die bluez-udev-Regel die abgespielte Musik automatisch mit der neuen verbundenes Bluetooth-Gerät. Natürlich, wenn dies entmutigend erscheint
Brett Reinhard
quelle
1

Haben Sie versucht, ein Bash-Skript zu erstellen, das eine Verbindung mit hcitool herstellt?

#!/bin/bash
sudo hcitool cc [speaker Bluetooth address]


Fügen Sie dieser Datei ausführbare Rechte hinzu und fügen Sie sie dann cron hinzu (Sie können sie jederzeit auswählen).

Dies funktionierte bei mir, als ich versuchte, eine Verbindung zu einer Bluetooth-Tastatur herzustellen. Ich bin nicht sicher, ob es für einen Sprecher funktioniert (nicht sicher, ob es sich um ein anderes Protokoll handelt). Hoffe das hilft!

ALinuxLover
quelle
0

fand das noch besser

sudo bluetoothctl <<EOF
power on
discoverable on
pairable on
agent NoInputNoOutput
default-agent 
EOF
Jochnickel
quelle