0

我正在寻找来自 Bluez 的轻量级蓝牙工具,而不依赖于 bluetoothd 和 dbus。BlueZ的文件夹“ src/shared ”有这些工具的代码。例如:btgattclient.c 在编译时产生“gattclient”。gattclient 能够连接到 ble 外围设备并读取/写入或接收来自 ble 设备的通知,但它需要初始化 hci0 接口,这是蓝牙正在做的事情。

在运行 bluetoothd 执行初始化之后,如果我杀死了 bluetoothd,gattclient 仍然可以正常工作,连接到 ble 设备并接收通知。似乎 bluetoothd 正在适配器上进行一些设置或初始化,以使“socket connect()”成功,而无需运行 bluetoothd 进行初始化,gattclient 为“connect()”套接字调用返回“连接被拒绝”。btmon 日志显示“connect()”在主机本身失败,没有到目标 BD 地址的连接请求。

如果这里的 BLE 专家可以指出蓝牙的初始化序列/命令,这将很有帮助,这样我就可以手动(使用 btmgmt)或以编程方式实现它,以促进 gattclient 的成功工作。

以下是蓝牙启动时的 btmon 日志 -

$ = bluetoothd: Bluetooth daemon 5.48                                   26.592869
@ MGMT Open: bluetoothd (privileged) version 1.14            {0x0002} 26.599957
= bluetoothd: Starting SDP server                                     26.600367
= bluetoothd: kernel lacks bnep-protocol support                      26.601263
= bluetoothd: System does not support network plugin                  26.601344
@ MGMT Command: Read Management Version I.. (0x0001) plen 0  {0x0002} 26.605719
@ MGMT Event: Command Complete (0x0001) plen 6               {0x0002} 26.605743
      Read Management Version Information (0x0001) plen 3
        Status: Success (0x00)
        Version: 1.14
= bluetoothd: Bluetooth management interface 1.14 initialized         26.606018
@ MGMT Command: Read Management Supported.. (0x0002) plen 0  {0x0002} 26.606076
@ MGMT Event: Command Complete (0x0001) plen 207             {0x0002} 26.606095
      Read Management Supported Commands (0x0002) plen 204
        Status: Success (0x00)
        Commands: 65
          Read Controller Index List (0x0003)
          Read Controller Information (0x0004)
          Set Powered (0x0005)
          Set Discoverable (0x0006)
          Set Connectable (0x0007)
          Set Fast Connectable (0x0008)
          Set Bondable (0x0009)
          Set Link Security (0x000a)
          Set Secure Simple Pairing (0x000b)
          Set High Speed (0x000c)
          Set Low Energy (0x000d)
          Set Device Class (0x000e)
          Set Local Name (0x000f)
          Add UUID (0x0010)
          Remove UUID (0x0011)
          Load Link Keys (0x0012)
          Load Long Term Keys (0x0013)
          Disconnect (0x0014)
          Get Connections (0x0015)
          PIN Code Reply (0x0016)
          PIN Code Negative Reply (0x0017)
          Set IO Capability (0x0018)
          Pair Device (0x0019)
          Cancel Pair Device (0x001a)
          Unpair Device (0x001b)
          User Confirmation Reply (0x001c)
          User Confirmation Negative Reply (0x001d)
          User Passkey Reply (0x001e)
          User Passkey Negative Reply (0x001f)
          Read Local Out Of Band Data (0x0020)
          Add Remote Out Of Band Data (0x0021)
          Remove Remote Out Of Band Data (0x0022)
          Start Discovery (0x0023)
          Stop Discovery (0x0024)
          Confirm Name (0x0025)
          Block Device (0x0026)
          Unblock Device (0x0027)
          Set Device ID (0x0028)
          Set Advertising (0x0029)
          Set BR/EDR (0x002a)
          Set Static Address (0x002b)
          Set Scan Parameters (0x002c)
          Set Secure Connections (0x002d)
          Set Debug Keys (0x002e)
          Set Privacy (0x002f)
          Load Identity Resolving Keys (0x0030)
          Get Connection Information (0x0031)
          Get Clock Information (0x0032)
          Add Device (0x0033)
          Remove Device (0x0034)
          Load Connection Parameters (0x0035)
          Read Unconfigured Controller Index List (0x0036)
          Read Controller Configuration Information (0x0037)
          Set External Configuration (0x0038)
          Set Public Address (0x0039)
          Start Service Discovery (0x003a)
          Read Local Out Of Band Extended Data (0x003b)
          Read Extended Controller Index List (0x003c)
          Read Advertising Features (0x003d)
          Add Advertising (0x003e)
          Remove Advertising (0x003f)
          Get Advertising Size Information (0x0040)
          Start Limited Discovery (0x0041)
          Read Extended Controller Information (0x0042)
          Set Appearance (0x0043)
        Events: 35
          Controller Error (0x0003)
          Index Added (0x0004)
          Index Removed (0x0005)
          New Settings (0x0006)
          Class Of Device Changed (0x0007)
          Local Name Changed (0x0008)
          New Link Key (0x0009)
          New Long Term Key (0x000a)
          Device Connected (0x000b)
          Device Disconnected (0x000c)
          Connect Failed (0x000d)
          PIN Code Request (0x000e)
          User Confirmation Request (0x000f)
          User Passkey Request (0x0010)
          Authentication Failed (0x0011)
          Device Found (0x0012)
          Discovering (0x0013)
          Device Blocked (0x0014)
          Device Unblocked (0x0015)
          Device Unpaired (0x0016)
          Passkey Notify (0x0017)
          New Identity Resolving Key (0x0018)
          New Signature Resolving Key (0x0019)
          Device Added (0x001a)
          Device Removed (0x001b)
          New Connection Parameter (0x001c)
          Unconfigured Index Added (0x001d)
          Unconfigured Index Removed (0x001e)
          New Configuration Options (0x001f)
          Extended Index Added (0x0020)
          Extended Index Removed (0x0021)
          Local Out Of Band Extended Data Updated (0x0022)
          Advertising Added (0x0023)
          Advertising Removed (0x0024)
          Extended Controller Information Changed (0x0025)
@ MGMT Command: Read Controller Index List (0x0003) plen 0   {0x0002} 26.606174
@ MGMT Event: Command Complete (0x0001) plen 7               {0x0002} 26.606182
      Read Controller Index List (0x0003) plen 4
        Status: Success (0x00)
        Controllers: 1
          hci0
@ MGMT Command: Read Controller In.. (0x0004) plen 0  {0x0002} [hci0] 26.606296
@ MGMT Event: Command Complete (0x0001) plen 283      {0x0002} [hci0] 26.606310
      Read Controller Information (0x0004) plen 280
        Status: Success (0x00)
        Address: C8:DF:84:4E:43:6F (OUI C8-DF-84)
        Version: Bluetooth 4.2 (0x08)
        Manufacturer: Texas Instruments Inc. (13)
        Supported settings: 0x0000bfff
          Powered
          Connectable
          Fast Connectable
          Discoverable
          Bondable
          Link Security
          Secure Simple Pairing
          BR/EDR
          High Speed
          Low Energy
          Advertising
          Secure Connections
          Debug Keys
          Privacy
          Static Address
        Current settings: 0x00000081
          Powered
          BR/EDR
        Class: 0x001f00
          Major class: Uncategorized, specific device code not specified
          Minor class: 0x00
        Name:
        Short name:
@ MGMT Open: bluetoothd (privileged) version 1.14            {0x0003} 26.606719
@ MGMT Command: Remove UUID (0x0011) plen 16          {0x0002} [hci0] 26.608603
        UUID: 00000000-0000-0000-0000-000000000000
@ MGMT Event: Command Complete (0x0001) plen 6        {0x0002} [hci0] 26.608625
      Remove UUID (0x0011) plen 3
        Status: Success (0x00)
        Class: 0x001f00
          Major class: Uncategorized, specific device code not specified
          Minor class: 0x00
@ MGMT Command: Read Advertising F.. (0x003d) plen 0  {0x0003} [hci0] 26.608652
@ MGMT Event: Command Complete (0x0001) plen 11       {0x0003} [hci0] 26.608660
      Read Advertising Features (0x003d) plen 8
        Status: Success (0x00)
        Flags: 0x0000007f
          Switch into Connectable mode
          Advertise as Discoverable
          Advertise as Limited Discoverable
          Add Flags field to Advertising Data
          Add TX Power field to Advertising Data
          Add Appearance field to Scan Response
          Add Local Name in Scan Response
        Advertising data length: 31
        Scan response length: 31
        Max instances: 5
        Instances: 0
@ MGMT Command: Remove Device (0x0034) plen 7         {0x0002} [hci0] 26.608819
        BR/EDR Address: 00:00:00:00:00:00 (OUI 00-00-00)
@ MGMT Event: Command Complete (0x0001) plen 10       {0x0002} [hci0] 26.608847
      Remove Device (0x0034) plen 7
        Status: Success (0x00)
        BR/EDR Address: 00:00:00:00:00:00 (OUI 00-00-00)
@ MGMT Command: Set Secure Simple... (0x000b) plen 1  {0x0002} [hci0] 26.608959
        Secure Simple Pairing: Enabled (0x01)
< HCI Command: Write Simple Pairing.. (0x03|0x0056) plen 1  #1 [hci0] 26.608989
        Mode: Enabled (0x01)
> HCI Event: Command Complete (0x0e) plen 4                 #2 [hci0] 26.615520
      Write Simple Pairing Mode (0x03|0x0056) ncmd 1
        Status: Success (0x00)
@ MGMT Event: Command Complete (0x0001) plen 7        {0x0002} [hci0] 26.615563
      Set Secure Simple Pairing (0x000b) plen 4
        Status: Success (0x00)
        Current settings: 0x000000c1
          Powered
          Secure Simple Pairing
          BR/EDR
@ MGMT Event: New Settings (0x0006) plen 4            {0x0003} [hci0] 26.615579
        Current settings: 0x000000c1
          Powered
          Secure Simple Pairing
          BR/EDR
@ MGMT Event: New Settings (0x0006) plen 4            {0x0001} [hci0] 26.615579
        Current settings: 0x000000c1
          Powered
          Secure Simple Pairing
          BR/EDR
@ MGMT Command: Set Low Energy (0x000d) plen 1        {0x0002} [hci0] 26.615712
        Low Energy: Enabled (0x01)
< HCI Command: Write LE Host Suppor.. (0x03|0x006d) plen 2  #3 [hci0] 26.615743
        Supported: 0x01
        Simultaneous: 0x00
> HCI Event: Command Complete (0x0e) plen 4                 #4 [hci0] 26.615982
      Write LE Host Supported (0x03|0x006d) ncmd 1
        Status: Success (0x00)
@ MGMT Event: Command Complete (0x0001) plen 7        {0x0002} [hci0] 26.616014
      Set Low Energy (0x000d) plen 4
        Status: Success (0x00)
        Current settings: 0x000002c1
          Powered
          Secure Simple Pairing
          BR/EDR
          Low Energy
@ MGMT Event: New Settings (0x0006) plen 4            {0x0003} [hci0] 26.616025
        Current settings: 0x000002c1
          Powered
          Secure Simple Pairing
          BR/EDR
          Low Energy
@ MGMT Event: New Settings (0x0006) plen 4            {0x0001} [hci0] 26.616025
        Current settings: 0x000002c1
          Powered
          Secure Simple Pairing
          BR/EDR
          Low Energy
< HCI Command: LE Set Advertising... (0x08|0x0008) plen 32  #5 [hci0] 26.616060
        Length: 3
        TX power: 14 dBm
@ MGMT Command: Set Secure Connect.. (0x002d) plen 1  {0x0002} [hci0] 26.616194
        Secure Connections: Enabled (0x01)
@ MGMT Event: Command Complete (0x0001) plen 7        {0x0002} [hci0] 26.616203
      Set Secure Connections (0x002d) plen 4
        Status: Success (0x00)
        Current settings: 0x00000ac1
          Powered
          Secure Simple Pairing
          BR/EDR
          Low Energy
          Secure Connections
@ MGMT Event: New Settings (0x0006) plen 4            {0x0003} [hci0] 26.616208
        Current settings: 0x00000ac1
          Powered
          Secure Simple Pairing
          BR/EDR
          Low Energy
          Secure Connections
@ MGMT Event: New Settings (0x0006) plen 4            {0x0001} [hci0] 26.616208
        Current settings: 0x00000ac1
          Powered
          Secure Simple Pairing
          BR/EDR
          Low Energy
          Secure Connections
@ MGMT Command: Set Privacy (0x002f) plen 17          {0x0002} [hci0] 26.616330
        Privacy: Disabled (0x00)
        Key: 00000000000000000000000000000000
@ MGMT Event: Command Status (0x0002) plen 3          {0x0002} [hci0] 26.616338
      Set Privacy (0x002f)
        Status: Rejected (0x0b)
> HCI Event: Command Complete (0x0e) plen 4                 #6 [hci0] 26.616401
      LE Set Advertising Data (0x08|0x0008) ncmd 1
        Status: Success (0x00)
= bluetoothd: Failed to set privacy: Rejected (0x0b)           [hci0] 27.944530
@ MGMT Command: Add UUID (0x0010) plen 17             {0x0002} [hci0] 26.616572
        UUID: 0000110e-0000-1000-8000-00805f9b34fb
        Service class: 0x00
@ MGMT Event: Command Complete (0x0001) plen 6        {0x0002} [hci0] 26.616582
      Add UUID (0x0010) plen 3
        Status: Success (0x00)
        Class: 0x001f00
          Major class: Uncategorized, specific device code not specified
          Minor class: 0x00
@ MGMT Command: Add UUID (0x0010) plen 17             {0x0002} [hci0] 26.616711
        UUID: 0000110c-0000-1000-8000-00805f9b34fb
        Service class: 0x00
@ MGMT Event: Command Complete (0x0001) plen 6        {0x0002} [hci0] 26.616721
      Add UUID (0x0010) plen 3
        Status: Success (0x00)
        Class: 0x001f00
          Major class: Uncategorized, specific device code not specified
          Minor class: 0x00
@ MGMT Command: Unblock Device (0x0027) plen 7        {0x0002} [hci0] 26.616826
        BR/EDR Address: 00:00:00:00:00:00 (OUI 00-00-00)
@ MGMT Event: Device Unblocked (0x0015) plen 7        {0x0003} [hci0] 26.616834
        BR/EDR Address: 00:00:00:00:00:00 (OUI 00-00-00)
@ MGMT Event: Device Unblocked (0x0015) plen 7        {0x0001} [hci0] 26.616834
        BR/EDR Address: 00:00:00:00:00:00 (OUI 00-00-00)
@ MGMT Event: Command Complete (0x0001) plen 10       {0x0002} [hci0] 26.616847
      Unblock Device (0x0027) plen 7
        Status: Success (0x00)
        BR/EDR Address: 00:00:00:00:00:00 (OUI 00-00-00)
@ MGMT Command: Load Link Keys (0x0012) plen 3        {0x0002} [hci0] 26.616946
        Debug keys: Disabled (0x00)
        Keys: 0
@ MGMT Event: Command Complete (0x0001) plen 3        {0x0002} [hci0] 26.616954
      Load Link Keys (0x0012) plen 0
        Status: Success (0x00)
@ MGMT Command: Load Long Term Keys (0x0013) plen 2   {0x0002} [hci0] 26.617042
        Keys: 0
@ MGMT Event: Command Complete (0x0001) plen 3        {0x0002} [hci0] 26.617050
      Load Long Term Keys (0x0013) plen 0
        Status: Success (0x00)
@ MGMT Command: Load Identity Reso.. (0x0030) plen 2  {0x0002} [hci0] 26.617138
        Keys: 0
@ MGMT Event: Command Complete (0x0001) plen 3        {0x0002} [hci0] 26.617146
      Load Identity Resolving Keys (0x0030) plen 0
        Status: Success (0x00)
@ MGMT Command: Load Connection Pa.. (0x0035) plen 2  {0x0002} [hci0] 26.617225
        Parameters: 0
@ MGMT Event: Command Complete (0x0001) plen 3        {0x0002} [hci0] 26.617234
      Load Connection Parameters (0x0035) plen 0
        Status: Success (0x00)
@ MGMT Command: Get Connections (0x0015) plen 0       {0x0002} [hci0] 26.617314
@ MGMT Event: Command Complete (0x0001) plen 5        {0x0002} [hci0] 26.617327
      Get Connections (0x0015) plen 2
        Status: Success (0x00)
        Connections: 0
@ MGMT Command: Add UUID (0x0010) plen 17             {0x0002} [hci0] 26.617408
        UUID: 00001200-0000-1000-8000-00805f9b34fb
        Service class: 0x00
@ MGMT Event: Command Complete (0x0001) plen 6        {0x0002} [hci0] 26.617417
      Add UUID (0x0010) plen 3
        Status: Success (0x00)
        Class: 0x001f00
          Major class: Uncategorized, specific device code not specified
          Minor class: 0x00
@ MGMT Command: Set Device ID (0x0028) plen 8         {0x0002} [hci0] 26.617517
        Device ID: USB Implementer's Forum assigned (0x0002)
          Vendor: 0x1d6b
          Product: 0x0246
          Version: 5.3.0 (0x0530)
@ MGMT Event: Command Complete (0x0001) plen 3        {0x0002} [hci0] 26.617526
      Set Device ID (0x0028) plen 0
        Status: Success (0x00)
@ MGMT Command: Set Device Class (0x000e) plen 2      {0x0002} [hci0] 26.617606
        Major class: 0x00
        Minor class: 0x00
< HCI Command: Write Extended Inq.. (0x03|0x0052) plen 241  #7 [hci0] 26.617645
        FEC: Not required (0x00)
        TX power: 14 dBm
        Device ID: USB Implementer's Forum assigned (0x0002)
          Vendor: 0x1d6b
          Product: 0x0246
          Version: 5.3.0 (0x0530)
        16-bit Service UUIDs (complete): 2 entries
          A/V Remote Control (0x110e)
          A/V Remote Control Target (0x110c)
> HCI Event: Command Complete (0x0e) plen 4                 #8 [hci0] 26.618802
      Write Extended Inquiry Response (0x03|0x0052) ncmd 1
        Status: Success (0x00)
< HCI Command: Write Class of Device (0x03|0x0024) plen 3   #9 [hci0] 26.618848
        Class: 0x000000
          Major class: Miscellaneous
          Minor class: 0x00
> HCI Event: Command Complete (0x0e) plen 4                #10 [hci0] 26.619058
      Write Class of Device (0x03|0x0024) ncmd 1
        Status: Success (0x00)
@ MGMT Event: Class Of Device Chan.. (0x0007) plen 3  {0x0003} [hci0] 26.619082
        Class: 0x000000
          Major class: Miscellaneous
          Minor class: 0x00
@ MGMT Event: Class Of Device Chan.. (0x0007) plen 3  {0x0002} [hci0] 26.619082
        Class: 0x000000
          Major class: Miscellaneous
          Minor class: 0x00
@ MGMT Event: Class Of Device Chan.. (0x0007) plen 3  {0x0001} [hci0] 26.619082
        Class: 0x000000
          Major class: Miscellaneous
          Minor class: 0x00
@ MGMT Event: Command Complete (0x0001) plen 6        {0x0002} [hci0] 26.619114
      Set Device Class (0x000e) plen 3
        Status: Success (0x00)
        Class: 0x000000
          Major class: Miscellaneous
          Minor class: 0x00
@ MGMT Command: Set Local Name (0x000f) plen 260      {0x0002} [hci0] 26.619282
        Name: BlueZ 5.48
        Short name:
< HCI Command: Write Local Name (0x03|0x0013) plen 248     #11 [hci0] 26.619319
        Name: BlueZ 5.48
> HCI Event: Command Complete (0x0e) plen 4                #12 [hci0] 26.620330
      Write Local Name (0x03|0x0013) ncmd 1
        Status: Success (0x00)
@ MGMT Event: Local Name Changed (0x0008) plen 260    {0x0003} [hci0] 26.620362
        Name: BlueZ 5.48
        Short name:
@ MGMT Event: Local Name Changed (0x0008) plen 260    {0x0001} [hci0] 26.620362
        Name: BlueZ 5.48
        Short name:
< HCI Command: Write Extended In.. (0x03|0x0052) plen 241  #13 [hci0] 26.620404
        FEC: Not required (0x00)
        Name (complete): BlueZ 5.48
        TX power: 14 dBm
        Device ID: USB Implementer's Forum assigned (0x0002)
          Vendor: 0x1d6b
          Product: 0x0246
          Version: 5.3.0 (0x0530)
        16-bit Service UUIDs (complete): 2 entries
          A/V Remote Control (0x110e)
          A/V Remote Control Target (0x110c)
> HCI Event: Command Complete (0x0e) plen 4                #14 [hci0] 26.621500
      Write Extended Inquiry Response (0x03|0x0052) ncmd 1
        Status: Success (0x00)
@ MGMT Event: Command Complete (0x0001) plen 263      {0x0002} [hci0] 26.621533
      Set Local Name (0x000f) plen 260
        Status: Success (0x00)
        Name: BlueZ 5.48
        Short name:
@ MGMT Command: Set Bondable (0x0009) plen 1          {0x0002} [hci0] 26.621666
        Bondable: Enabled (0x01)
@ MGMT Event: Command Complete (0x0001) plen 7        {0x0002} [hci0] 26.621677
      Set Bondable (0x0009) plen 4
        Status: Success (0x00)
        Current settings: 0x00000ad1
          Powered
          Bondable
          Secure Simple Pairing
          BR/EDR
          Low Energy
          Secure Connections
@ MGMT Event: New Settings (0x0006) plen 4            {0x0003} [hci0] 26.621682
        Current settings: 0x00000ad1
          Powered
          Bondable
          Secure Simple Pairing
          BR/EDR
          Low Energy
          Secure Connections
@ MGMT Event: New Settings (0x0006) plen 4            {0x0001} [hci0] 26.621682
        Current settings: 0x00000ad1
          Powered
          Bondable
          Secure Simple Pairing
          BR/EDR
          Low Energy
          Secure Connections

请指教。

谢谢

4

0 回答 0