Tự động kết nối loa Bluetooth đáng tin cậy


10

Tôi đã làm theo hướng dẫn sau ( http://mygeek014.blogspot.nl/2015/01/audio-streaming-to-bluetooth-speaker.html ) để kết nối loa Bluetooth với Raspberry Pi của tôi. Mọi thứ hoạt động như mong muốn, nhưng loa sẽ không tự động kết nối lại khi Raspberry được khởi động lại hoặc loa được bật / tắt. Ngay bây giờ tôi tự kết nối lại loa qua GUI Raspbian, nhưng tôi tự hỏi liệu có một giải pháp đơn giản nào để kết nối lại loa qua CLI không. Sau đó tôi sẽ có thể viết một CRON đơn giản để kết nối lại loa nếu nó chưa được kết nối.

Câu trả lời:


17

Đây là một lời giải thích rất chi tiết:

Den3243

Đây là một giải pháp dòng lệnh:

Trước tiên, hãy quét, ghép nối, tin tưởng thiết bị của bạn với "bluetoothctl". Để làm điều đó, hãy chạy nó tại dòng lệnh, thiết bị đầu cuối của bạn:

bluetoothctl -a

Bạn sẽ nhận được một dấu nhắc lệnh khác nhau như:

[bluetooth]

Với loa BT của bạn trên, gõ này:

scan on

Trong một vài phút, bạn sẽ thấy các thiết bị BT có sẵn. Bên cạnh thiết bị sẽ là địa chỉ MAC, như: 00: AA: 22: BB: 33. Bây giờ gõ này:

info <your mac address>

Loại trừ lớn hơn và nhỏ hơn ký tự. Những gì bạn đang tìm kiếm là một loại liên kết trước đó với loa BT của bạn. Bạn sẽ biết rằng đã có một hiệp hội trước đó vì bluetoothctl sẽ hiển thị thông tin về thiết bị BT của bạn. Một số thông tin này sẽ là về thiết bị được ghép nối và tin cậy. Điều này là tốt

Nếu bluetoothctl phàn nàn về việc không có thiết bị, thì chúng ta cần thiết lập nó vào lúc này. Để làm điều đó, gõ này:

pair <your mac address>

Bạn sẽ thấy một thông báo thành công về việc ghép nối thiết bị của bạn thành công. Bây giờ hãy tin tưởng vào thiết bị BT mới của chúng tôi. Nhập cái này:

trust <your mac address>

Một lần nữa, bạn sẽ thấy một thông điệp thành công về sự tin tưởng. Hãy để tôi cảnh báo trước cho bạn. Thiết bị BT của bạn có thể kết nối sau đó một lần nữa có thể không. Không bao giờ sợ hãi, chúng tôi không muốn nó kết nối. Hãy tiếp tục và hãy thoát khỏi "bluetoothctl". Để làm điều đó, gõ:

quit

Bây giờ bạn sẽ được đưa trở lại dấu nhắc dòng lệnh. Trong một bài viết trước tôi đã đề nghị bạn tạo một thư mục script trong thư mục chính của bạn. Nếu bạn không có, hãy tiếp tục và làm điều đó ngay bây giờ. Nhập cái này vào dấu nhắc lệnh:

mkdir -p ~/scripts

Nhấn enter và bây giờ hãy tạo tập lệnh bash autopair của chúng tôi. Nhập cái này:

nano ~/scripts/autopair

Nhập mã này vào tập lệnh:

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

Không bao gồm dấu ngoặc!

Bây giờ nhấn CTRL + x cùng một lúc, và bây giờ nhấn enter để lưu tập lệnh. Chúng ta cần làm cho nó thực thi được. Để làm điều đó, gõ này:

chmod +x ~/scripts/autopair

Tôi giả sử rằng bạn không sử dụng loa analog ngoài cắm vào giắc cắm 3,5 mm. Nếu điều này là đúng, hãy vô hiệu hóa alsa. Để làm điều đó, hãy chỉnh sửa một tệp trong thư mục / boot có tên config.txt. Để làm điều đó, hãy nhập cái này vào terminal của bạn:

sudo nano /boot/config.txt

Trang xuống cuối tập tin và tìm hai dòng có nội dung:

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

Đặt một (dấu thăng #) ở phía trước dòng ghi:

dtparam=audio=on

Để trông giống như:

#dtparam=audio=on

Nhấn CTRL + x và sau đó nhấn Enter để lưu tệp của bạn.

Tôi đang giả sử bạn đã cài đặt pulseaudio? Nếu không, hãy tiếp tục và chạy lệnh này từ dòng lệnh:

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

Điều này sẽ giúp bạn có một thành phần rất quan trọng để làm cho bluetooth hoạt động! Bây giờ hãy chỉnh sửa tệp .bashrc trong thư mục chính của chúng tôi. Nhập cái này:

nano ~/.bashrc

Trang xuống dưới cùng và thêm dòng này:

pulseaudio --start

Nhấn CTRL + x và bây giờ nhấn Enter để lưu tệp của bạn.

ĐỒNG Ý! Chúng ta cần tham gia vào thế giới Python. Tôi đã viết một chương trình Python sẽ xem cho thiết bị bluetooth. Nói tóm lại, nó sẽ kích hoạt kết nối giữa RPi và loa bluetooth của bạn, sau khi loa bluetooth của bạn được bật. Và ngược lại. Hãy tạo một thư mục có tên python trong thư mục chính của bạn Để làm điều đó, hãy nhập vào đây:

mkdir -p ~/python

Bây giờ hãy tạo tập tin chương trình python. Để làm điều đó, gõ này:

nano ~/python/on.py

Bên trong tập tin đó, chúng ta cần sao chép và dán như sau:

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

Bây giờ nhấn CTRL + x và sau đó nhấn Enter để lưu tệp chương trình Python. Bây giờ chúng ta cần làm cho tập tin này thực thi. Để làm điều đó, gõ này:

chmod +x ~/python/on.py

Cuối cùng, hãy thêm đoạn mã này vào tập lệnh .bashrc trong thư mục chính của chúng tôi:

nano ~/.bashrc

Trang xuống dưới cùng của tệp và thêm hai dòng sau:

wait
~/python/on.py

Bây giờ nhấn CTRL + x và sau đó nhấn Enter để lưu. Bật loa bluetooth của bạn và khởi động lại Raspberry Pi của bạn.

Chúc may mắn!

-nitrolinux


Cám ơn bạn đã góp ý. Tôi cũng phải nhấn nút 'Âm thanh chìm' trong giao diện người dùng, liệu có thay thế CLI cho việc này không?
Den3243

Tôi đã cập nhật câu trả lời ban đầu của tôi.
Jason Woodruff

1
Cảm ơn bạn đã giải thích rất chi tiết của bạn! Hoạt động như một lá bùa.
Den3243

Tôi rất vui vì nó đã làm việc!
Jason Woodruff

Tập lệnh này cuối cùng có bị sập do đệ quy vô hạn giữa blue_it và chờ đợi không?
Kevin Chen

4

Tôi đã thấy rằng có những vấn đề hiện tại với pulseaudio5 đặc biệt là khi phát lại âm thanh qua bluetooth. Vì vậy, tôi đề xuất rằng thay vì phải gỡ lỗi những thứ đó khi chúng xuất hiện, chỉ cần sử dụng PulseAudio6 cho những gì bạn muốn.

Tôi đã tạo một repo sẽ tự động hóa mọi thứ bên dưới để bạn không cần phải thực hiện tất cả các công việc chân, nhưng nếu bạn vẫn tiếp tục tự làm thì hãy tiếp tục bên dưới.

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

Quá trình cài đặt:

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

Đợi cho đến khi quá trình cài đặt được thực hiện và khởi động lại. Sau khi hoàn thành, bạn sẽ cần bắt đầu, ghép nối, tin tưởng và kết nối thiết bị của mình. Sau thời gian ban đầu, bạn sẽ chỉ cần bật thiết bị.

Ghép nối, tin tưởng và kết nối:

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

-------------------- Hoàn thành hướng dẫn: --------------------

Biên dịch PulseAudio 6

Thêm các tệp sau

/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

Kích hoạt dịch vụ init.d mới và thực thi

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

Đảm bảo chúng tôi có tất cả các mô-đun cần thiết

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

Thay đổi thành Thư mục chính và Cài đặt json-c từ nguồn git (cần thiết cho PA6)

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

Thay đổi thành Thư mục chính và Cài đặt libsndfile từ nguồn git

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

Đảm bảo rằng Bluetooth đang tìm kiếm ( sudo hciconfig hci0 piscankhông được dùng nữa)

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

Điều hướng đến Thư mục chính và Cài đặt PulseAudio 6 từ nguồn git

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

Đảm bảo xung nằm trong tất cả các nhóm cần thiết

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

Cập nhật /etc/pulse/system.pa/etc/pulse/daemon.confđể xem như sau:

/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

Thiết lập quy tắc udev

Chỉnh sửa /etc/udev/rules.d/99-com.rulesvà thêm hai dòng sau:

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

Tạo nên /usr/local/bin/bluez-udev

/ usr / địa phương / 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

Đảm bảo rằng bluez-udev có thể thực thi được

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

Tóm lược

Những gì đang được thực hiện ở đây?

  • Tạo các dịch vụ init.d cho bluetooth và pulseaudio và cho phép chúng
  • Cài đặt phụ thuộc cho PulseAudio6
  • Biên dịch PulseAudio6 và thêm người dùng xung vào các nhóm cần thiết (hầu hết sẽ được thực hiện)
  • Thiết lập daemon.conf và system.pa để tải các mô-đun thích hợp
  • Tạo quy tắc udev, để chạy bluez-udev mỗi khi thiết bị được kết nối. bluez-udev kiểm tra xem thiết bị có phải là thiết bị bluetooth hay không, nếu có thì nó sẽ cố gắng kết nối âm thanh phát hiện tại với bồn rửa thiết bị bluetooth được tạo bởi pulseaudio. Khi ngắt kết nối bluetooth, nó sẽ chuyển luồng trở lại mức chìm mặc định hoặc chìm 0. Bạn đã có nó, sau tất cả những gì bạn có một thiết bị bluetooth được kết nối tự động, quy tắc bluez-udev sẽ tự động kết nối nhạc đang phát với kết nối thiết bị bluetooth. Tất nhiên, nếu điều này có vẻ Daunting

1

Bạn đã thử tạo một tập lệnh Bash sử dụng hcitool để kết nối chưa?

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


Thêm quyền thực thi vào tệp đó sau đó thêm nó vào cron (bạn có thể chọn bất kỳ lúc nào).

Điều này làm việc cho tôi khi tôi cố gắng kết nối với Bàn phím Bluetooth. Tôi không chắc nó có hoạt động cho loa không (không chắc đó có phải là giao thức khác không). Hi vọng điêu nay co ich!


0

tìm thấy điều này thậm chí còn tốt hơn

sudo bluetoothctl <<EOF
power on
discoverable on
pairable on
agent NoInputNoOutput
default-agent 
EOF
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.