Сопряжение Bluetooth с SSP Ввод пароля с помощью выбранного пароля не работает

#bluetooth #bluez #pairing #hci #ssp

#bluetooth #bluez #сопряжение #hci #ssp

Вопрос:

Для проекта мне нужно подключить два Raspberry Pi с вводом пароля Bluetooth SSP. В интересах проекта пароль должен быть выбран и введен на обоих устройствах. Это должно обрабатываться скриптом, который периодически изменяет пароль псевдослучайным образом (например, пароль = хэш (время начальное значение)).

Аппаратное обеспечение:

2x Raspberry Pi 4 Model b Rev 1.2

         Operating System: Raspbian GNU/Linux 10 (buster)
        Kernel: Linux 5.4.79-v7l 
        Architecture: arm
 

Версия BlueZ 5.50

Спецификация Bluetooth Core 5.0 указана на странице 1441

«когда одно устройство имеет только цифровой ввод, а другое устройство имеет либо дисплей, либо возможность ввода цифр, либо когда оба устройства имеют только возможность ввода цифр. На этом этапе на одном устройстве отображается номер, который должен быть введен другим устройством, или пользователь вводит номер на обоих устройствах. »

Насколько я понимаю, пароль будет сгенерирован устройством с возможностью вывода, если одно устройство обладает возможностью вывода, а другое устройство обладает клавиатурой Only / DisyplayYes / No IOCapability. Если оба устройства имеют только функцию KeyboardOnly, то пароль выбирается пользователем и вводится на обоих устройствах (что и является моей целью).

Вот что я попробовал:

Когда я пытаюсь выполнить сопряжение обоих устройств с помощью IOCapabilities KeyboardOnly, они ведут себя так, как будто они DisplayOnly и DisplayYes / No, но даже если я подтверждаю пароль с помощью yes, они не будут подключаться. Если я переведу оба устройства в режим сопряжения, пароль не запрашивается.

Как мне сообщить bluetoothctl использовать предоставленный мной пароль? Документация bluetoothctl и btmgmt, к сожалению, не существует, и у меня возникают проблемы.

Справочная страница Bluetoothctl

Справочная страница btmgmt

Устройство А:

 root@PiAlice:/home/alicepi# bluetoothctl
Agent registered
[bluetooth]# agent off                  //unregister the agent to chose the right IOCaps
Agent unregistered
[bluetooth]# agent KeyboardOnly 
Agent registered
[bluetooth]# show
Controller DC:A6:32:99:5C:AC (public)
    Name: PiAlice
    Alias: PiAlice
    Class: 0x00480000
    Powered: yes
    Discoverable: no
    Pairable: no
    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 Source              (0000110a-0000-1000-8000-00805f9b34fb)
    UUID: Handsfree Audio Gateway   (0000111f-0000-1000-8000-00805f9b34fb)
    Modalias: usb:v1D6Bp0246d0532
    Discovering: no
[bluetooth]# discoverable on
Changing discoverable on succeeded
[CHG] Controller DC:A6:32:99:5C:AC Discoverable: yes
[NEW] Device DC:A6:32:AB:71:D9 bobpi
[CHG] Device DC:A6:32:AB:71:D9 Connected: no
[DEL] Device DC:A6:32:AB:71:D9 bobpi
 
 [bluetooth]# pairable on
Changing pairable on succeeded
[CHG] Controller DC:A6:32:99:5C:AC Pairable: yes
[NEW] Device DC:A6:32:AB:71:D9 bobpi
[CHG] Device DC:A6:32:AB:71:D9 Modalias: usb:v1D6Bp0246d0532
[CHG] Device DC:A6:32:AB:71:D9 UUIDs: 0000110a-0000-1000-8000-00805f9b34fb
[CHG] Device DC:A6:32:AB:71:D9 UUIDs: 0000110c-0000-1000-8000-00805f9b34fb
[CHG] Device DC:A6:32:AB:71:D9 UUIDs: 0000110e-0000-1000-8000-00805f9b34fb
[CHG] Device DC:A6:32:AB:71:D9 UUIDs: 00001112-0000-1000-8000-00805f9b34fb
[CHG] Device DC:A6:32:AB:71:D9 UUIDs: 0000111f-0000-1000-8000-00805f9b34fb
[CHG] Device DC:A6:32:AB:71:D9 UUIDs: 00001200-0000-1000-8000-00805f9b34fb
[CHG] Device DC:A6:32:AB:71:D9 ServicesResolved: yes
[CHG] Device DC:A6:32:AB:71:D9 Paired: yes
[CHG] Device DC:A6:32:AB:71:D9 ServicesResolved: no
[CHG] Device DC:A6:32:AB:71:D9 Connected: no
 

Устройство B:

 root@bobpi:/home/bobpi# bluetoothctl
Agent registered
[bluetooth]# agent off
Agent unregistered
[bluetooth]# agent KeyboardOnly 
Agent registered
[bluetooth]# show
Controller DC:A6:32:AB:71:D9 (public)
    Name: bobpi
    Alias: bobpi
    Class: 0x00480000
    Powered: yes
    Discoverable: no
    Pairable: no
    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 Source              (0000110a-0000-1000-8000-00805f9b34fb)
    UUID: Handsfree Audio Gateway   (0000111f-0000-1000-8000-00805f9b34fb)
    Modalias: usb:v1D6Bp0246d0532
    Discovering: no
[bluetooth]# scan on
Discovery started
[CHG] Controller DC:A6:32:AB:71:D9 Discovering: yes
[NEW] Device DC:A6:32:99:5C:AC PiAlice
[bluetooth]# pair DC:A6:32:99:5C:AC 
Attempting to pair with DC:A6:32:99:5C:AC
[CHG] Device DC:A6:32:99:5C:AC Connected: yes
Request confirmation
[agent] Confirm passkey 896560 (yes/no): yes
Failed to pair: org.bluez.Error.AuthenticationFailed
[CHG] Device DC:A6:32:99:5C:AC Connected: no
 
 [bluetooth]# pairable on
Changing pairable on succeeded
[CHG] Controller DC:A6:32:AB:71:D9 Pairable: yes
[bluetooth]# pair DC:A6:32:99:5C:AC 
Attempting to pair with DC:A6:32:99:5C:AC
[CHG] Device DC:A6:32:99:5C:AC Connected: yes
[CHG] Device DC:A6:32:99:5C:AC UUIDs: 0000110a-0000-1000-8000-00805f9b34fb
[CHG] Device DC:A6:32:99:5C:AC UUIDs: 0000110c-0000-1000-8000-00805f9b34fb
[CHG] Device DC:A6:32:99:5C:AC UUIDs: 0000110e-0000-1000-8000-00805f9b34fb
[CHG] Device DC:A6:32:99:5C:AC UUIDs: 00001112-0000-1000-8000-00805f9b34fb
[CHG] Device DC:A6:32:99:5C:AC UUIDs: 0000111f-0000-1000-8000-00805f9b34fb
[CHG] Device DC:A6:32:99:5C:AC UUIDs: 00001200-0000-1000-8000-00805f9b34fb
[CHG] Device DC:A6:32:99:5C:AC ServicesResolved: yes
[CHG] Device DC:A6:32:99:5C:AC Paired: yes
Pairing successful
[CHG] Device DC:A6:32:99:5C:AC ServicesResolved: no
[CHG] Device DC:A6:32:99:5C:AC Connected: no
 

Комментарии:

1. Нашел решение самостоятельно. Агент должен быть зарегистрирован как агент по умолчанию, прежде чем его можно будет использовать. agent KeyboardOnly default-agent проблема решена