尝试禁用 RPi3 上的某些蓝牙功能

尝试禁用 RPi3 上的某些蓝牙功能

我正在尝试让我的 RPi3 成为蓝牙接收器。

我的问题是,当我尝试将 Windows 7 笔记本电脑连接到 RPi 蓝牙接收器时,它显示如下:

蓝牙问题

抱歉,是法语。

它允许创建 3 个连接:

  • 一个用于将 Rpi 连接为麦克风
  • 一个用于将 Rpi 连接为耳机(我只想要这个选项)
  • 将 Rpi 用作音频文件服务器

信息:

$ sudo bluetoothctl
[bluetooth]# show
Controller B8:27:EB:XX:XX:XX
        Name: Gertrude
        Alias: Gertrude
        Class: 0x20041c
        Powered: yes
        Discoverable: yes
        Pairable: yes
        UUID: Headset AG                (00001112-0000-1000-8000-00805f9b34fb)
        UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
        UUID: A/V Remote Control        (0000110e-0000-1000-8000-00805f9b34fb)
        UUID: Generic Access Profile    (00001800-0000-1000-8000-00805f9b34fb)
        UUID: PnP Information           (00001200-0000-1000-8000-00805f9b34fb)
        UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)
        UUID: Audio Sink                (0000110b-0000-1000-8000-00805f9b34fb)
        UUID: Audio Source              (0000110a-0000-1000-8000-00805f9b34fb)
        Modalias: usb:v1D6Bp0246d052B
        Discovering: no

蓝牙配置文件:

$ cat /etc/bluetooth/main.conf
[General]

# Default adapter name
# Defaults to 'BlueZ X.YZ'
#Name = BlueZ

# Default device class. Only the major and minor device class bits are
Name =
# considered. Defaults to '0x000000'.
#Class = 0x000100
Class = 0x20041c

# How long to stay in discoverable mode before going back to non-discoverable
# The value is in seconds. Default is 180, i.e. 3 minutes.
# 0 = disable timer, i.e. stay discoverable forever
DiscoverableTimeout = 0

# How long to stay in pairable mode before going back to non-discoverable
# The value is in seconds. Default is 0.
# 0 = disable timer, i.e. stay pairable forever
#PairableTimeout = 0

# Automatic connection for bonded devices driven by platform/user events.
# If a platform plugin uses this mechanism, automatic connections will be
# enabled during the interval defined below. Initially, this feature
# intends to be used to establish connections to ATT channels. Default is 60.
#AutoConnectTimeout = 60

# Use vendor id source (assigner), vendor, product and version information for
# DID profile support. The values are separated by ":" and assigner, VID, PID
# and version.
# Possible vendor id source values: bluetooth, usb (defaults to usb)
#DeviceID = bluetooth:1234:5678:abcd

# Do reverse service discovery for previously unknown devices that connect to
# us. This option is really only needed for qualification since the BITE tester
# doesn't like us doing reverse SDP for some test cases (though there could in
# theory be other useful purposes for this too). Defaults to 'true'.
#ReverseServiceDiscovery = true

# Enable name resolving after inquiry. Set it to 'false' if you don't need
# remote devices name and want shorter discovery cycle. Defaults to 'true'.
#NameResolving = true

# Enable runtime persistency of debug link keys. Default is false which
# makes debug link keys valid only for the duration of the connection
# that they were created for.
#DebugKeys = false

# Restricts all controllers to the specified transport. Default value
# is "dual", i.e. both BR/EDR and LE enabled (when supported by the HW).
# Possible values: "dual", "bredr", "le"
#ControllerMode = dual

# Enables Multi Profile Specification support. This allows to specify if
# system supports only Multiple Profiles Single Device (MPSD) configuration
# or both Multiple Profiles Single Device (MPSD) and Multiple Profiles Multiple
# Devices (MPMD) configurations.
# Possible values: "off", "single", "multiple"
#MultiProfile = off

# Permanently enables the Fast Connectable setting for adapters that
# support it. When enabled other devices can connect faster to us,
# however the tradeoff is increased power consumptions. This feature
# will fully work only on kernel version 4.1 and newer. Defaults to
# 'false'.
#FastConnectable = false

# Default privacy setting.
# Enables use of private address.
# Possible values: "off", "device", "network"
# "network" option not supported currently
# Defaults to "off"
# Privacy = off

[Policy]
#
# The ReconnectUUIDs defines the set of remote services that should try
# to be reconnected to in case of a link loss (link supervision
# timeout). The policy plugin should contain a sane set of values by
# default, but this list can be overridden here. By setting the list to
# empty the reconnection feature gets disabled.
#ReconnectUUIDs=00001112-0000-1000-8000-00805f9b34fb,0000111f-0000-1000-8000-00805f9b34fb,0000110a-0000-1000-8000-00805f9b34fb

# ReconnectAttempts define the number of attempts to reconnect after a link
# lost. Setting the value to 0 disables reconnecting feature.
#ReconnectAttempts=7

# ReconnectIntervals define the set of intervals in seconds to use in between
# attempts.
# If the number of attempts defined in ReconnectAttempts is bigger than the
# set of intervals the last interval is repeated until the last attempt.
#ReconnectIntervals=1,2,4,8,16,32,64

# AutoEnable defines option to enable all controllers when they are found.
# This includes adapters present on start as well as adapters that are plugged
# in later on. Defaults to 'false'.
AutoEnable=true

我已经更改了蓝牙类别,这要归功于:http://bluetooth-pentest.narod.ru/software/bluetooth_class_of_device-service_generator.html,删除并再次添加“Windows 蓝牙设备”,但没有任何效果。

所以我注意到该bluetoothctl / show命令显示了 UUID 功能,对应于一些我不想要的功能。

0000110a-0000-1000-8000-00805f9b34fb : Audio Source
00001800-0000-1000-8000-00805f9b34fb : Generic Access
00001801-0000-1000-8000-00805f9b34fb : Generic Attribute

但我完全不知道如何禁用这些功能。

有任何想法吗?

答案1

我终于找到了解决方法。

此功能称为服务发现,并且有一个协议可以使用蓝牙服务:SDP。

Raspbian 发行版提供了该sdptool实用程序,但是,蓝牙守护程序 (BlueZ5) 默认情况下与 SDP 不兼容。

解决方案

编辑该bluetooth.service文件以在命令行中添加--compat或选项。-C

更新 systemd 以使 sdptool 实用程序正常工作:

$ sudo systemctl daemon-reload

显示 RPi 的蓝牙功能:

$ sudo sdptool browse local

调查https://www.bluetooth.com/specifications/assigned-numbers/service-discovery为了找到不愿意的特征的对应关系,并用以下方法删除它们:

$ sudo sdptool del 0xYYYYYY

对于我的情况,我必须删除“音频源”(0x110a) 和“耳机音频网关”(0x1112) 服务。

相关内容