设备 BLE 立即连接和断开 in​​tel NUC 11、ubuntu 20

设备 BLE 立即连接和断开 in​​tel NUC 11、ubuntu 20

语境:我正在尝试通过英特尔 NUC 11 上的 BLE 连接血压监测仪。我还有另一台电脑,戴尔 xps 15,我可以毫无问题地连接它(使用下面的脚本)。

配置(我的两台电脑具有相同的配置,见下文):

  • 操作系统:Ubuntu 20.04
  • 内核版本:5.13.0-40-generic
  • bluez 版本:5.53

以下是我正在使用的脚本:

import gatt
 
address = 'EC:21:E5:F0:81:C7'
 
types = {
    '00002a2b-0000-1000-8000-00805f9b34fb': "Current_Time",
}
 
manager = gatt.DeviceManager(adapter_name='hci0')
 
class AnyDevice(gatt.Device):
    def connect_succeeded(self):
        super().connect_succeeded()
        print("[%s] Connected" % (self.mac_address))
 
    def connect_failed(self, error):
        super().connect_failed(error)
        print("[%s] Connection failed: %s" % (self.mac_address, str(error)))
 
    def disconnect_succeeded(self):
        super().disconnect_succeeded()
        print("[%s] Disconnected" % (self.mac_address))
 
    def services_resolved(self):
        super().services_resolved()
 
        print("[%s] Resolved services" % (self.mac_address))
        for service in self.services:
            print("[%s]  Service [%s]" % (self.mac_address, service.uuid))
            for characteristic in service.characteristics:
                print("[%s]    Characteristic [%s]" % (self.mac_address, characteristic.uuid))
                characteristic.enable_notifications()
   
    def characteristic_value_updated(self, characteristic: gatt.Characteristic, value: bytes):
        try:
            value = value.decode()
        except UnicodeDecodeError:
            pass
        print(f"[{characteristic.uuid}] updated: {value}")
 
        print("\t", value.hex())
        print("\t", int(value.hex(), 16))
        print("\t", types.get(characteristic.uuid, '?'))
 
 
device = AnyDevice(mac_address=address.capitalize(), manager=manager)
print("Starting...")
device.connect()
print("Connected")
 
manager.run()
print("end")

我可以向你展示/etc/bluetooth/main.conf

[General]

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

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

# 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

[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

我也尝试点击此链接:文本

以下是输出/var/lib/蓝牙/adapter_mac/device_mac/info

[General]
Name=BLESmart_0000021FEC21E5F081C7
AddressType=public
SupportedTechnologies=LE;
Trusted=true
Blocked=false
Services=00001800-0000-1000-8000-00805f9b34fb;00001801-0000-1000-8000-00805f9b34fb;00001805-0000-1000-8000-00805f9b34fb;0000180a-0000-1000-8000-00805f9b34fb;0000180f-0000-1000-8000-00805f9b34fb;00001810>
Appearance=0x0381

[IdentityResolvingKey]
Key=1767A79A37E3DB5897ADEDA275157730

[LongTermKey]
Key=3A75C66423E740B1A9BCD220DBBC9BA3
Authenticated=0
EncSize=16
EDiv=51131
Rand=1639348934062904132

[SlaveLongTermKey]
Key=B39C1351E3E2A6C0658D31E08D789A98
Authenticated=0
EncSize=16
EDiv=36670
Rand=11762431942953384779

[ConnectionParameters]
MinInterval=16
MaxInterval=24
Latency=0
Timeout=200

[ServiceChanged]
CCC_LE=2

有人有办法解决这个问题吗?提前谢谢

相关内容