Bluez 无法永久连接到蓝牙 LE 遥控器“功能未实现 (38)” hcidump

问题描述

我有一个新的破坏者形象:

Linux 立体声 5.10.17+ #1414 Fri Apr 30 13:16:27 BST 2021 armv6l GNU/Linux

我确实将 bluez 更新为 bluez 5.52。有趣的是,我的 /var/log/syslog 中有以下条目:

Jun 30 23:15:09stereopida bluetoothd[557]:蓝牙守护进程 5.50

这似乎表明之前安装的 5.50 版本仍然存在。

我在其他机器上做了同样的设置,然后我可以让它工作,但这次似乎有问题。

现在使用 bluetoothctl 我可以看到我的设备并进行配对,但连接立即断开:

[bluetooth]# trust 84:EB:18:0C:92:0F 
Changing 84:EB:18:0C:92:0F trust succeeded
[bluetooth]# pair 84:EB:18:0C:92:0F 
Attempting to pair with 84:EB:18:0C:92:0F
[CHG] Device 84:EB:18:0C:92:0F Connected: yes
Failed to pair: org.bluez.Error.AuthenticationFailed
[CHG] Device 84:EB:18:0C:92:0F Connected: no
[bluetooth]# connect 84:EB:18:0C:92:0F 
Attempting to connect to 84:EB:18:0C:92:0F
[CHG] Device 84:EB:18:0C:92:0F Connected: yes
Failed to connect: org.bluez.Error.Failed
[CHG] Device 84:EB:18:0C:92:0F Connected: no

当我检查日志时,我确实看到以下内容:

Jun 30 23:15:53 stereopida bluetoothd[567]: src/device.c:bonding_request_new() Requesting bonding for 84:EB:18:0C:92:0F
Jun 30 23:15:53 stereopida bluetoothd[567]: src/agent.c:agent_ref() 0x7b62b0: ref=3
Jun 30 23:15:53 stereopida bluetoothd[567]: src/agent.c:agent_unref() 0x7b62b0: ref=2
Jun 30 23:15:53 stereopida bluetoothd[567]: src/adapter.c:suspend_discovery() 
Jun 30 23:15:53 stereopida bluetoothd[567]: src/adapter.c:adapter_bonding_attempt() hci0 bdaddr 84:EB:18:0C:92:0F type 1 io_cap 0x04
Jun 30 23:15:55 stereopida bluetoothd[567]: src/adapter.c:connected_callback() hci0 device 84:EB:18:0C:92:0F connected eir_len 13
Jun 30 23:15:55 stereopida bluetoothd[567]: src/adapter.c:pair_device_complete() Failed (0x03)
Jun 30 23:15:55 stereopida bluetoothd[567]: src/adapter.c:bonding_attempt_complete() hci0 bdaddr 84:EB:18:0C:92:0F type 1 status 0x3
Jun 30 23:15:55 stereopida bluetoothd[567]: src/device.c:device_bonding_complete() bonding 0x7ba428 status 0x03
Jun 30 23:15:55 stereopida bluetoothd[567]: src/device.c:device_bonding_failed() status 3
Jun 30 23:15:55 stereopida bluetoothd[567]: src/agent.c:agent_unref() 0x7b62b0: ref=1
Jun 30 23:15:55 stereopida bluetoothd[567]: src/adapter.c:resume_discovery() 
Jun 30 23:15:55 stereopida bluetoothd[567]: src/adapter.c:dev_disconnected() Device 84:EB:18:0C:92:0F disconnected,reason 0
Jun 30 23:15:55 stereopida bluetoothd[567]: src/adapter.c:adapter_remove_connection() 
Jun 30 23:15:55 stereopida bluetoothd[567]: plugins/policy.c:disconnect_cb() reason 0
Jun 30 23:15:55 stereopida bluetoothd[567]: src/adapter.c:bonding_attempt_complete() hci0 bdaddr 84:EB:18:0C:92:0F type 1 status 0xe
Jun 30 23:15:55 stereopida bluetoothd[567]: src/device.c:device_bonding_complete() bonding (nil) status 0x0e
Jun 30 23:15:55 stereopida bluetoothd[567]: src/device.c:device_bonding_failed() status 14
Jun 30 23:15:55 stereopida bluetoothd[567]: src/adapter.c:resume_discovery() 
Jun 30 23:16:04 stereopida bluetoothd[567]: src/device.c:device_connect_le() Connection attempt to: 84:EB:18:0C:92:0F
Jun 30 23:16:08 stereopida systemd[1]: systemd-hostnamed.service: Succeeded.
Jun 30 23:16:09 stereopida bluetoothd[567]: src/adapter.c:connected_callback() hci0 device 84:EB:18:0C:92:0F connected eir_len 13
Jun 30 23:16:09 stereopida bluetoothd[567]: src/device.c:att_connect_cb() connect error: Function not implemented (38)
Jun 30 23:16:09 stereopida bluetoothd[567]: src/adapter.c:dev_disconnected() Device 84:EB:18:0C:92:0F disconnected,reason 0
Jun 30 23:16:09 stereopida bluetoothd[567]: src/adapter.c:adapter_remove_connection() 
Jun 30 23:16:09 stereopida bluetoothd[567]: plugins/policy.c:disconnect_cb() reason 0
Jun 30 23:16:09 stereopida bluetoothd[567]: src/adapter.c:bonding_attempt_complete() hci0 bdaddr 84:EB:18:0C:92:0F type 1 status 0xe
Jun 30 23:16:09 stereopida bluetoothd[567]: src/device.c:device_bonding_complete() bonding (nil) status 0x0e
Jun 30 23:16:09 stereopida bluetoothd[567]: src/device.c:device_bonding_failed() status 14
Jun 30 23:16:09 stereopida bluetoothd[567]: src/adapter.c:resume_discovery() 
Jun 30 23:16:15 stereopida bluetoothd[567]: src/agent.c:agent_disconnect() Agent :1.20 disconnected
Jun 30 23:16:15 stereopida bluetoothd[567]: src/agent.c:agent_destroy() agent :1.20
Jun 30 23:16:15 stereopida bluetoothd[567]: src/agent.c:agent_unref() 0x7b62b0: ref=0

在我的 /etc/bluetooth/main.conf 文件中,我做了以下更改:

DiscoverableTimeout = 0
PairableTimeout = 0
ControllerMode = le
Privacy = off

我的 bluetooth.service 的 ExecStart 部分我确实更改为:

ExecStart=/usr/lib/bluetooth/bluetoothd --noplugin=sap -E 

Gatttool

sudo gatttool -b 84:EB:18:0C:92:0F --interactive
[84:EB:18:0C:92:0F][LE]> connect
Attempting to connect to 84:EB:18:0C:92:0F
Error: connect error: Function not implemented (38)

Btmon

当我使用 Gattool 连接时,这是 sudo btmon

的输出
 sudo btmon
Bluetooth monitor ver 5.52
= Note: Linux version 5.10.17+ (armv6l)                                                                                                                                                            0.137356
= Note: Bluetooth subsystem version 2.22                                                                                                                                                           0.137373
= New Index: B8:27:EB:BD:CA:1B (Primary,UART,hci0)                                                                                                                                          [hci0] 0.137378
= Open Index: B8:27:EB:BD:CA:1B                                                                                                                                                             [hci0] 0.137386
= Index Info: B8:27:EB:BD:CA:1B (Broadcom Corporation)                                                                                                                                      [hci0] 0.137390
@ MGMT Open: bluetoothd (privileged) version 1.18                                                                                                                                         {0x0001} 0.137396
@ MGMT Open: btmon (privileged) version 1.18                                                                                                                                              {0x0002} 0.139895
< HCI Command: LE Set Scan Parameters (0x08|0x000b) plen 7                                                                                                                               #1 [hci0] 9.320332
        Type: Passive (0x00)
        Interval: 60.000 msec (0x0060)
        Window: 60.000 msec (0x0060)
        Own address type: Public (0x00)
        Filter policy: Ignore not in white list (0x01)
> HCI Event: Command Complete (0x0e) plen 4                                                                                                                                              #2 [hci0] 9.321695
      LE Set Scan Parameters (0x08|0x000b) ncmd 1
        Status: Success (0x00)
< HCI Command: LE Set Scan Enable (0x08|0x000c) plen 2                                                                                                                                   #3 [hci0] 9.321835
        Scanning: Enabled (0x01)
        Filter duplicates: Enabled (0x01)
> HCI Event: Command Complete (0x0e) plen 4                                                                                                                                              #4 [hci0] 9.324626
      LE Set Scan Enable (0x08|0x000c) ncmd 1
        Status: Success (0x00)
> HCI Event: LE Meta Event (0x3e) plen 25                                                                                                                                               #5 [hci0] 11.847196
      LE Advertising Report (0x02)
        Num reports: 1
        Event type: Connectable undirected - ADV_IND (0x00)
        Address type: Public (0x00)
        Address: 84:EB:18:0C:92:0F (Texas Instruments)
        Data length: 13
        Flags: 0x05
          LE Limited Discoverable Mode
          BR/EDR Not Supported
        Appearance: Human Interface Device (0x03c0)
        16-bit Service UUIDs (partial): 2 entries
          Human Interface Device (0x1812)
          Battery Service (0x180f)
        RSSI: -72 dBm (0xb8)
< HCI Command: LE Set Scan Enable (0x08|0x000c) plen 2                                                                                                                                  #6 [hci0] 11.847369
        Scanning: Disabled (0x00)
        Filter duplicates: Disabled (0x00)
> HCI Event: Command Complete (0x0e) plen 4                                                                                                                                             #7 [hci0] 11.851192
      LE Set Scan Enable (0x08|0x000c) ncmd 1
        Status: Success (0x00)
< HCI Command: LE Create Connection (0x08|0x000d) plen 25                                                                                                                               #8 [hci0] 11.851310
        Scan interval: 60.000 msec (0x0060)
        Scan window: 60.000 msec (0x0060)
        Filter policy: White list is not used (0x00)
        Peer address type: Public (0x00)
        Peer address: 84:EB:18:0C:92:0F (Texas Instruments)
        Own address type: Public (0x00)
        Min connection interval: 30.00 msec (0x0018)
        Max connection interval: 50.00 msec (0x0028)
        Connection latency: 0 (0x0000)
        Supervision timeout: 420 msec (0x002a)
        Min connection length: 0.000 msec (0x0000)
        Max connection length: 0.000 msec (0x0000)
> HCI Event: Command Status (0x0f) plen 4                                                                                                                                               #9 [hci0] 11.852722
      LE Create Connection (0x08|0x000d) ncmd 1
        Status: Success (0x00)
> HCI Event: LE Meta Event (0x3e) plen 19                                                                                                                                              #10 [hci0] 11.869896
      LE Connection Complete (0x01)
        Status: Success (0x00)
        Handle: 64
        Role: Master (0x00)
        Peer address type: Public (0x00)
        Peer address: 84:EB:18:0C:92:0F (Texas Instruments)
        Connection interval: 48.75 msec (0x0027)
        Connection latency: 0 (0x0000)
        Supervision timeout: 420 msec (0x002a)
        Master clock accuracy: 0x00
@ MGMT Event: Device Connected (0x000b) plen 26                                                                                                                                   {0x0002} [hci0] 11.869988
        LE Address: 84:EB:18:0C:92:0F (Texas Instruments)
        Flags: 0x00000000
        Data length: 13
        Flags: 0x05
          LE Limited Discoverable Mode
          BR/EDR Not Supported
        Appearance: Human Interface Device (0x03c0)
        16-bit Service UUIDs (partial): 2 entries
          Human Interface Device (0x1812)
          Battery Service (0x180f)
@ MGMT Event: Device Connected (0x000b) plen 26                                                                                                                                   {0x0001} [hci0] 11.869988
        LE Address: 84:EB:18:0C:92:0F (Texas Instruments)
        Flags: 0x00000000
        Data length: 13
        Flags: 0x05
          LE Limited Discoverable Mode
          BR/EDR Not Supported
        Appearance: Human Interface Device (0x03c0)
        16-bit Service UUIDs (partial): 2 entries
          Human Interface Device (0x1812)
          Battery Service (0x180f)
< HCI Command: LE Read Remote Used Features (0x08|0x0016) plen 2                                                                                                                       #11 [hci0] 11.870350
        Handle: 64
> HCI Event: Command Status (0x0f) plen 4                                                                                                                                              #12 [hci0] 11.877612
      LE Read Remote Used Features (0x08|0x0016) ncmd 1
        Status: Success (0x00)
> HCI Event: LE Meta Event (0x3e) plen 12                                                                                                                                              #13 [hci0] 12.210580
      LE Read Remote Used Features (0x04)
        Status: Connection Failed to be Established (0x3e)
        Handle: 64
        Features: 0x1f 0x00 0x00 0x08 0x00 0x00 0x00 0x00
          LE Encryption
          Connection Parameter Request Procedure
          Extended Reject Indication
          Slave-initiated Features Exchange
          LE Ping
          Remote Public Key Validation
< HCI Command: Disconnect (0x01|0x0006) plen 3                                                                                                                                         #14 [hci0] 12.210756
        Handle: 64
        Reason: Remote User Terminated Connection (0x13)
> HCI Event: Disconnect Complete (0x05) plen 4                                                                                                                                         #15 [hci0] 12.214327
        Status: Success (0x00)
        Handle: 64
        Reason: Connection Failed to be Established (0x3e)
@ MGMT Event: Device Disconnected (0x000c) plen 8                                                                                                                                 {0x0002} [hci0] 12.214426
        LE Address: 84:EB:18:0C:92:0F (Texas Instruments)
        Reason: Unspecified (0x00)
@ MGMT Event: Device Disconnected (0x000c) plen 8                                                                                                                                 {0x0001} [hci0] 12.214426
        LE Address: 84:EB:18:0C:92:0F (Texas Instruments)
        Reason: Unspecified (0x00)
> HCI Event: Command Status (0x0f) plen 4                                                                                                                                              #16 [hci0] 12.214351
      Disconnect (0x01|0x0006) ncmd 1
        Status: Invalid HCI Command Parameters (0x12)

更新 2:使用 DBUS

我尝试使用 dbus-python-script 进行连接,但出现错误:

创建设备失败:org.bluez.Error.AuthenticationFailed

这是该尝试的 btmon 输出:

$ sudo btmon
Bluetooth monitor ver 5.52
= Note: Linux version 5.10.17+ (armv6l)                                                     0.495323
= Note: Bluetooth subsystem version 2.22                                                    0.495341
= New Index: B8:27:EB:BD:CA:1B (Primary,hci0)                                   [hci0] 0.495350
= Open Index: B8:27:EB:BD:CA:1B                                                      [hci0] 0.495355
= Index Info: B8:27:EB:BD:CA:1B (Broadcom Corporation)                               [hci0] 0.495361
@ MGMT Open: bluetoothd (privileged) version 1.18                                  {0x0001} 0.495370
@ MGMT Open: btmon (privileged) version 1.18                                       {0x0002} 0.495742
@ MGMT Command: Pair Device (0x0019) plen 8                                 {0x0001} [hci0] 7.479710
        LE Address: 84:EB:18:0C:92:0F (Texas Instruments)
        Capability: KeyboardDisplay (0x04)
< HCI Command: LE Set Scan Parameters (0x08|0x000b) plen 7                        #1 [hci0] 7.482368
        Type: Passive (0x00)
        Interval: 60.000 msec (0x0060)
        Window: 60.000 msec (0x0060)
        Own address type: Public (0x00)
        Filter policy: Ignore not in white list (0x01)
> HCI Event: Command Complete (0x0e) plen 4                                       #2 [hci0] 7.482814
      LE Set Scan Parameters (0x08|0x000b) ncmd 1
        Status: Success (0x00)
< HCI Command: LE Set Scan Enable (0x08|0x000c) plen 2                            #3 [hci0] 7.482909
        Scanning: Enabled (0x01)
        Filter duplicates: Enabled (0x01)
> HCI Event: Command Complete (0x0e) plen 4                                       #4 [hci0] 7.483658
      LE Set Scan Enable (0x08|0x000c) ncmd 1
        Status: Success (0x00)
> HCI Event: LE Meta Event (0x3e) plen 25                                         #5 [hci0] 7.501439
      LE Advertising Report (0x02)
        Num reports: 1
        Event type: Connectable undirected - ADV_IND (0x00)
        Address type: Public (0x00)
        Address: 84:EB:18:0C:92:0F (Texas Instruments)
        Data length: 13
        Flags: 0x05
          LE Limited Discoverable Mode
          BR/EDR Not Supported
        Appearance: Human Interface Device (0x03c0)
        16-bit Service UUIDs (partial): 2 entries
          Human Interface Device (0x1812)
          Battery Service (0x180f)
        RSSI: -55 dBm (0xc9)
< HCI Command: LE Set Scan Enable (0x08|0x000c) plen 2                            #6 [hci0] 7.501585
        Scanning: Disabled (0x00)
        Filter duplicates: Disabled (0x00)
> HCI Event: Command Complete (0x0e) plen 4                                       #7 [hci0] 7.505073
      LE Set Scan Enable (0x08|0x000c) ncmd 1
        Status: Success (0x00)
< HCI Command: LE Create Connection (0x08|0x000d) plen 25                         #8 [hci0] 7.505187
        Scan interval: 60.000 msec (0x0060)
        Scan window: 60.000 msec (0x0060)
        Filter policy: White list is not used (0x00)
        Peer address type: Public (0x00)
        Peer address: 84:EB:18:0C:92:0F (Texas Instruments)
        Own address type: Public (0x00)
        Min connection interval: 30.00 msec (0x0018)
        Max connection interval: 50.00 msec (0x0028)
        Connection latency: 0 (0x0000)
        Supervision timeout: 420 msec (0x002a)
        Min connection length: 0.000 msec (0x0000)
        Max connection length: 0.000 msec (0x0000)
> HCI Event: Command Status (0x0f) plen 4                                         #9 [hci0] 7.505940
      LE Create Connection (0x08|0x000d) ncmd 1
        Status: Success (0x00)
> HCI Event: LE Meta Event (0x3e) plen 19                                        #10 [hci0] 7.525258
      LE Connection Complete (0x01)
        Status: Success (0x00)
        Handle: 64
        Role: Master (0x00)
        Peer address type: Public (0x00)
        Peer address: 84:EB:18:0C:92:0F (Texas Instruments)
        Connection interval: 48.75 msec (0x0027)
        Connection latency: 0 (0x0000)
        Supervision timeout: 420 msec (0x002a)
        Master clock accuracy: 0x00
@ MGMT Event: Device Connected (0x000b) plen 26                             {0x0002} [hci0] 7.525347
        LE Address: 84:EB:18:0C:92:0F (Texas Instruments)
        Flags: 0x00000000
        Data length: 13
        Flags: 0x05
          LE Limited Discoverable Mode
          BR/EDR Not Supported
        Appearance: Human Interface Device (0x03c0)
        16-bit Service UUIDs (partial): 2 entries
          Human Interface Device (0x1812)
          Battery Service (0x180f)
@ MGMT Event: Device Connected (0x000b) plen 26                             {0x0001} [hci0] 7.525347
        LE Address: 84:EB:18:0C:92:0F (Texas Instruments)
        Flags: 0x00000000
        Data length: 13
        Flags: 0x05
          LE Limited Discoverable Mode
          BR/EDR Not Supported
        Appearance: Human Interface Device (0x03c0)
        16-bit Service UUIDs (partial): 2 entries
          Human Interface Device (0x1812)
          Battery Service (0x180f)
< HCI Command: LE Read Remote Used Features (0x08|0x0016) plen 2                 #11 [hci0] 7.525694
        Handle: 64
> HCI Event: Command Status (0x0f) plen 4                                        #12 [hci0] 7.527893
      LE Read Remote Used Features (0x08|0x0016) ncmd 1
        Status: Success (0x00)
> HCI Event: LE Meta Event (0x3e) plen 12                                        #13 [hci0] 7.837849
      LE Read Remote Used Features (0x04)
        Status: Connection Failed to be Established (0x3e)
        Handle: 64
        Features: 0x1f 0x00 0x00 0x08 0x00 0x00 0x00 0x00
          LE Encryption
          Connection Parameter Request Procedure
          Extended Reject Indication
          Slave-initiated Features Exchange
          LE Ping
          Remote Public Key Validation
@ MGMT Event: Command Complete (0x0001) plen 10                             {0x0001} [hci0] 7.837949
      Pair Device (0x0019) plen 7
        Status: Failed (0x03)
        LE Address: 84:EB:18:0C:92:0F (Texas Instruments)
> HCI Event: Disconnect Complete (0x05) plen 4                                   #14 [hci0] 7.843837
        Status: Success (0x00)
        Handle: 64
        Reason: Connection Failed to be Established (0x3e)
@ MGMT Event: Device Disconnected (0x000c) plen 8                           {0x0002} [hci0] 7.843928
        LE Address: 84:EB:18:0C:92:0F (Texas Instruments)
        Reason: Unspecified (0x00)
@ MGMT Event: Device Disconnected (0x000c) plen 8                           {0x0001} [hci0] 7.843928
        LE Address: 84:EB:18:0C:92:0F (Texas Instruments)
        Reason: Unspecified (0x00)

hcidump

sudo hcidump
HCI sniffer - Bluetooth packet analyzer ver 5.50
device: hci0 snap_len: 1500 filter: 0xffffffff
< HCI Command: LE Set Scan Parameters (0x08|0x000b) plen 7
    type 0x00 (passive)
    interval 60.000ms window 60.000ms
    own address: 0x00 (Public) policy: white list only
> HCI Event: Command Complete (0x0e) plen 4
    LE Set Scan Parameters (0x08|0x000b) ncmd 1
    status 0x00
< HCI Command: LE Set Scan Enable (0x08|0x000c) plen 2
    value 0x01 (scanning enabled)
    filter duplicates 0x01 (enabled)
> HCI Event: Command Complete (0x0e) plen 4
    LE Set Scan Enable (0x08|0x000c) ncmd 1
    status 0x00
> HCI Event: LE Meta Event (0x3e) plen 25
    LE Advertising Report
      ADV_IND - Connectable undirected advertising (0)
      bdaddr 84:EB:18:0C:92:0F (Public)
      Flags: 0x05
      Unknown type 0x19 with 2 bytes data
      Shortened service classes: 0x1812 0x180f
      RSSI: -74
< HCI Command: LE Set Scan Enable (0x08|0x000c) plen 2
    value 0x00 (scanning disabled)
    filter duplicates 0x00 (disabled)
> HCI Event: Command Complete (0x0e) plen 4
    LE Set Scan Enable (0x08|0x000c) ncmd 1
    status 0x00
< HCI Command: LE Create Connection (0x08|0x000d) plen 25
    bdaddr 84:EB:18:0C:92:0F type 0
    interval 96 window 96 initiator_filter 0
    own_bdaddr_type 0 min_interval 24 max_interval 40
    latency 0 supervision_to 42 min_ce 0 max_ce 0
> HCI Event: Command Status (0x0f) plen 4
    LE Create Connection (0x08|0x000d) status 0x00 ncmd 1
> HCI Event: LE Meta Event (0x3e) plen 19
    LE Connection Complete
      status 0x00 handle 64,role master
      bdaddr 84:EB:18:0C:92:0F (Public)
< HCI Command: LE Read Remote Used Features (0x08|0x0016) plen 2
> HCI Event: Command Status (0x0f) plen 4
    LE Read Remote Used Features (0x08|0x0016) status 0x00 ncmd 1
> HCI Event: LE Meta Event (0x3e) plen 12
    LE Read Remote Used Features Complete
      status 0x3e handle 64
      Error: Connection Failed to be Established
< HCI Command: Disconnect (0x01|0x0006) plen 3
    handle 64 reason 0x13
    Reason: Remote User Terminated Connection
> HCI Event: Disconn Complete (0x05) plen 4
    status 0x00 handle 64 reason 0x3e
    Reason: Connection Failed to be Established
> HCI Event: Command Status (0x0f) plen 4
    Disconnect (0x01|0x0006) status 0x12 ncmd 1
    Error: Invalid HCI Command Parameters

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)