Мне нужно подключиться к удаленному BLE-устройству, используя Уровень безопасности Режим 1 Уровень 3 .Как мне это сделать, используя bluetoothctl
, пожалуйста?
Я сделал:
- Подключите к устройству (успех)
- Pair устройство (успех)
Но, по-видимому, это не установило режим безопасности, как я хотел , потому что, когда я пытаюсь записать данную характеристику (эта характеристика доступна для записи;) Я получаю ошибку ATT «Недостаточная аутентификация (5)»
> ACL data: handle 70 flags 0x02 dlen 9
ATT: Error (0x01)
Error: Insufficient authentication (5)
Write req (0x12) on handle 0x0014
Шаг за шагом, это то, что hcidump
показывает после подключения:
< HCI Command: LE Set Scan Parameters (0x08|0x000b) plen 7
type 0x00 (passive)
interval 60.000ms window 30.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 43
LE Advertising Report
ADV_IND - Connectable undirected advertising (0)
bdaddr D2:A7:4C:76:F3:E0 (Random)
Flags: 0x06
Unknown type 0x06 with 16 bytes data
Unknown type 0xff with 8 bytes data
RSSI: -75
< 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 D2:A7:4C:76:F3:E0 type 1
interval 96 window 96 initiator_filter 0
own_bdaddr_type 0 min_interval 6 max_interval 12
latency 0 supervision_to 400 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 70, role master
bdaddr D2:A7:4C:76:F3:E0 (Random)
< 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 0x00 handle 70
Features: 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00
< ACL data: handle 70 flags 0x00 dlen 7
ATT: MTU req (0x02)
client rx mtu 517
> HCI Event: Number of Completed Packets (0x13) plen 5
handle 70 packets 1
...
При спаривании больше не отображаются пакеты (!)
[D2A74C76F3E0]# pair D2:A7:4C:76:F3:E0
Attempting to pair with D2:A7:4C:76:F3:E0
[CHG] Device D2:A7:4C:76:F3:E0 Paired: yes
Pairing successful
Затем я делаю
[D2A74C76F3E0]# menu gatt
[D2A74C76F3E0]# select-attribute /org/bluez/hci0/dev_D2_A7_4C_76_F3_E0/service000c/char0013
[D2A74C76F3E0:/service000c/char0013]# write 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
Attempting to write /org/bluez/hci0/dev_D2_A7_4C_76_F3_E0/service000c/char0013
, и при этом выдаются следующие пакеты:
< ACL data: handle 70 flags 0x00 dlen 8
ATT: Write req (0x12)
handle 0x0014 value 0xFF
> HCI Event: Number of Completed Packets (0x13) plen 5
handle 70 packets 1
> ACL data: handle 70 flags 0x02 dlen 9
ATT: Error (0x01)
Error: Insufficient authentication (5)
Write req (0x12) on handle 0x0014
(loop)
Обратите внимание, что он отправляет только один байт + циклы ( это, вероятно, ошибка ).Но для меня важен ответ: «Ошибка: недостаточно аутентификации (5)», что, очевидно, означает, что уровень безопасности установлен неправильно.
Если мы посмотрим на информацию для устройства:
# info
...
Paired: yes
Trusted: no
Blocked: no
Connected: yes
LegacyPairing: no
Итак, я считаю, что я подключился, но не в режиме 1 уровня 3. Это bluetoothctl
версия 5.50 на хосте Linux Mint.Обратите внимание, что, однако, я получаю такое же поведение с bluetoothctl
версии 5.43 на Raspberry Pi , за исключением того, что он правильно отправляет весь пакет записи.Но ответ тот же.
< ACL data: handle 64 flags 0x00 dlen 15
ATT: Write req (0x12)
handle 0x0014 value 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
> ACL data: handle 64 flags 0x02 dlen 9
ATT: Error (0x01)
Error: Insufficient authentication (5)
Write req (0x12) on handle 0x0014