Secara otomatis menghubungkan speaker Bluetooth tepercaya

10

Saya telah mengikuti tutorial berikut ( http://mygeeks014.blogspot.nl/2015/01/audio-streaming-to-bluetooth-speaker.html ) untuk menghubungkan speaker Bluetooth ke Raspberry Pi saya. Semuanya berfungsi sebagaimana mestinya, tetapi speaker tidak akan secara otomatis menyambung kembali ketika Raspberry dihidupkan ulang atau speaker dihidupkan / dimatikan. Saat ini saya secara manual menyambungkan kembali speaker melalui GUI Raspbian, tapi saya ingin tahu apakah ada solusi sederhana untuk menghubungkan kembali speaker melalui CLI. Saya kemudian dapat menulis CRON sederhana untuk menghubungkan kembali speaker jika belum tersambung.

Den3243
sumber

Jawaban:

17

Berikut ini penjelasan yang sangat detail:

Den3243

Berikut ini adalah solusi baris perintah:

Pertama, mari kita memindai, memasangkan, mempercayai perangkat Anda dengan "bluetoothctl". Untuk melakukan itu, jalankan ini di baris perintah, terminal Anda:

bluetoothctl -a

Anda harus mendapatkan prompt perintah yang berbeda seperti:

[bluetooth]

Dengan speaker BT Anda aktif, ketikkan ini:

scan on

Dalam beberapa saat, Anda akan melihat perangkat BT tersedia. Di sebelah perangkat adalah alamat MAC-nya, seperti: 00: AA: 22: BB: 33. Sekarang ketikkan ini:

info <your mac address>

Kecualikan lebih dari dan kurang dari karakter. Apa yang Anda cari adalah semacam hubungan sebelumnya dengan pembicara BT Anda. Anda akan tahu bahwa ada hubungan sebelumnya karena bluetoothctl akan menampilkan informasi tentang perangkat BT Anda. Beberapa informasi ini adalah tentang perangkat yang dipasangkan dan dipercaya. Ini bagus.

Jika bluetoothctl mengeluh tentang tidak ada perangkat, maka kita perlu mengaturnya pada saat ini. Untuk melakukannya, ketikkan ini:

pair <your mac address>

Anda akan melihat pesan sukses tentang pasangan perangkat Anda berhasil. Sekarang mari kita percayai perangkat BT baru kami. Ketikkan ini:

trust <your mac address>

Sekali lagi, Anda harus melihat pesan sukses tentang kepercayaan. Biarkan saya pra-peringatkan Anda. Perangkat BT Anda mungkin terhubung kemudian lagi mungkin tidak. Jangan takut, kami tidak ingin terhubung. Silakan dan mari kita keluar "bluetoothctl". Untuk melakukannya, ketik:

quit

Sekarang Anda akan dibawa kembali ke prompt baris perintah. Dalam posting sebelumnya saya menyarankan Anda untuk membuat direktori skrip di direktori home Anda. Jika belum, silakan dan lakukan sekarang. Ketikkan ini pada prompt perintah:

mkdir -p ~/scripts

Tekan enter dan sekarang mari kita buat skrip bash autopair kami. Ketikkan ini:

nano ~/scripts/autopair

Masukkan kode ini ke dalam skrip:

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

Kecualikan kurung!

Sekarang tekan CTRL + x secara bersamaan, dan sekarang tekan enter untuk menyimpan skrip. Kita perlu membuatnya bisa dieksekusi. Untuk melakukannya, ketikkan ini:

chmod +x ~/scripts/autopair

Saya berasumsi bahwa Anda tidak menggunakan plug speaker analog eksternal ke jack 3,5 mm. Jika ini benar, mari nonaktifkan alsa. Untuk melakukan itu, mari kita edit file di direktori / boot bernama config.txt. Untuk melakukannya, ketikkan ini di terminal Anda:

sudo nano /boot/config.txt

Halaman ke bawah ke bagian bawah file dan cari dua baris yang bertuliskan:

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

Tempatkan (tanda pon #) di depan baris yang bertuliskan:

dtparam=audio=on

Agar terlihat seperti:

#dtparam=audio=on

Tekan CTRL + x dan kemudian tekan Enter untuk menyimpan file Anda.

Saya berasumsi Anda telah menginstal pulseaudio? Jika tidak, silakan jalankan perintah ini dari baris perintah:

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

Ini akan membuat Anda menjadi komponen yang sangat penting untuk membuat bluetooth berfungsi! Sekarang mari kita edit file .bashrc kami di direktori home kami. Ketikkan ini:

nano ~/.bashrc

Halaman ke bawah dan tambahkan baris ini:

pulseaudio --start

Tekan CTRL + x dan sekarang tekan Enter untuk menyimpan file Anda.

BAIK! Kita harus masuk ke dunia Python. Saya telah menulis program Python yang akan mengawasi perangkat bluetooth. Singkatnya, ini akan mengaktifkan koneksi antara RPi dan speaker Bluetooth Anda, setelah speaker Bluetooth Anda dihidupkan. Dan sebaliknya. Mari kita buat direktori bernama python di direktori home Anda. Untuk melakukannya, ketikkan ini:

mkdir -p ~/python

Sekarang mari kita buat file program python. Untuk melakukannya, ketikkan ini:

nano ~/python/on.py

Di dalam file itu, kita perlu menyalin dan menempel yang berikut:

#!/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()

Sekarang tekan CTRL + x dan kemudian tekan Enter untuk menyimpan file program Python. Sekarang kita perlu membuat file ini dapat dieksekusi. Untuk melakukannya, ketikkan ini:

chmod +x ~/python/on.py

Akhirnya, mari kita tambahkan ini ke skrip .bashrc kami di direktori home kami:

nano ~/.bashrc

Halaman ke bawah ke bagian bawah file dan tambahkan dua baris ini:

wait
~/python/on.py

Sekarang tekan CTRL + x dan kemudian tekan Enter untuk menyimpan. Nyalakan speaker bluetooth Anda dan reboot Raspberry Pi Anda.

Semoga berhasil!

-nitrolinux

Jason Woodruff
sumber
Terima kasih atas komentar Anda. Saya juga harus menekan tombol 'Sink Audio' di UI, apakah ada alternatif CLI untuk ini juga?
Den3243
Saya telah memperbarui jawaban asli saya.
Jason Woodruff
1
Terima kasih atas penjelasan Anda yang sangat mendetail! Bekerja seperti pesona.
Den3243
Saya senang itu berhasil!
Jason Woodruff
bukankah skrip ini pada akhirnya mogok karena rekursi tak terbatas antara blue_it dan menunggu?
Kevin Chen
4

Saya telah menemukan bahwa ada masalah saat ini dengan pulseaudio5 terutama ketika datang ke pemutaran audio melalui bluetooth. Karena itu saya mengusulkan bahwa daripada harus men-debug mereka ketika datang cukup gunakan PulseAudio6 untuk apa yang Anda inginkan.

Saya telah membuat repo yang akan mengotomatisasi semua yang ada di bawah ini sehingga Anda tidak perlu melakukan semua pekerjaan kaki, tetapi jika Anda masih siap melakukannya sendiri, lanjutkan di bawah.

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

Instal Proses:

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

Tunggu sampai proses instalasi selesai dan reboot. Setelah selesai, Anda harus secara inisial, memasangkan, mempercayai, dan menghubungkan perangkat Anda. Setelah waktu awal, Anda hanya perlu menghidupkan perangkat.

Memasangkan, Memercayai, dan Menghubungkan:

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

-------------------- Panduan lengkap: --------------------

Kompilasi PulseAudio 6

Tambahkan File-file berikut

/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

Aktifkan layanan init.d baru dan jadikan executable

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

Pastikan kita memiliki semua modul yang diperlukan

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

Ubah ke Home Directory dan Instal json-c dari sumber git (diperlukan untuk PA6)

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

Ubah ke Home Directory dan Instal libsndfile dari sumber git

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

Pastikan Bluetooth sedang mencari ( sudo hciconfig hci0 piscansudah usang)

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

Arahkan ke Home Directory dan Instal PulseAudio 6 dari sumber git

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

Pastikan pulsa ada di semua grup yang diperlukan

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

Perbarui /etc/pulse/system.padan /etc/pulse/daemon.confterlihat sebagai berikut:

/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

Setup udev Rule

Edit /etc/udev/rules.d/99-com.rulesdan tambahkan dua baris berikut:

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

Membuat /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

Pastikan bluez-udev dapat dieksekusi

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

Ringkasan

Apa yang sedang dilakukan di sini?

  • Membuat layanan init.d untuk bluetooth dan pulseaudio dan mengaktifkannya
  • Menginstal Dependensi untuk PulseAudio6
  • Kompilasi PulseAudio6 dan menambahkan pengguna pulsa ke grup yang diperlukan (sebagian besar sudah dilakukan)
  • Setup daemon.conf dan system.pa untuk memuat modul yang tepat
  • Buat aturan udev, untuk menjalankan bluez-udev setiap kali perangkat terhubung. bluez-udev memeriksa untuk melihat apakah perangkat tersebut adalah perangkat bluetooth, jika itu akan mencoba untuk menghubungkan audio yang sedang diputar ke wastafel perangkat bluetooth yang dibuat oleh pulseaudio. Setelah bluetooth lepaskan, itu akan memindahkan aliran kembali ke wastafel default, atau tenggelam 0. Di sana Anda memilikinya, setelah semua yang sekarang Anda miliki memiliki perangkat bluetooth yang terhubung secara otomatis, aturan bluez-udev akan secara otomatis menghubungkan musik yang diputar ke yang baru perangkat bluetooth yang terhubung. Tentu saja, jika ini tampak menakutkan
Brett Reinhard
sumber
1

Sudahkah Anda mencoba membuat skrip Bash yang menggunakan hcitool untuk terhubung?

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


Tambahkan hak yang dapat dieksekusi ke file itu lalu tambahkan ke cron (Anda dapat memilih kapan saja).

Ini bekerja untuk saya ketika saya mencoba menghubungkan ke Keyboard Bluetooth. Saya tidak yakin apakah itu akan berfungsi untuk pembicara (tidak yakin apakah itu protokol yang berbeda). Semoga ini membantu!

ALinuxLover
sumber
0

menemukan ini lebih baik

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