Не удалось выполнить сопряжение Bluetooth через BlueZ в режиме «Просто работа» — не удалось подтвердить значение

Ядро: Linux 4.9.84 Armv7l на борту
Блюз: 5.65
Аналог: Android 12 и iOS 16.6
Приложение:

  • Используйте открытые настройки Bluetooth btmgmt

btmgmt выключить
btmgmt можно подключить
btmgmt можно подключить
btmgmt включи
кстати, продолжай
btmgmt io-cap 0x3 (установить возможность ввода-вывода как NoInputNoOutput)
btmgmt ssp включен (использовать устаревший режим)

Не удалось выполнить сопряжение Bluetooth через BlueZ в режиме «Просто работа» — не удалось подтвердить значение

  • Для BT_SECURITY для сокета L2CAP установлено низкое значение, а к одной характеристике применено требование шифрования.

Не удалось выполнить сопряжение Bluetooth через BlueZ в режиме «Просто работа» — не удалось подтвердить значение

Процесс:
Я не создавал вручную агент с возможностью ввода-вывода через bluetoothctl, но с помощью описанных выше операций кажется, что протокол автоматически создает агент для решения проблем с сопряжением, когда я пытаюсь получить доступ к характеристике с требованием шифрования.
Мы можем видеть общение через btmon.

> ACL Data RX: Handle 24 flags 0x02 dlen 11                                                                                                                                                                                                              #240 [hci0] 74.105218
  SMP: Pairing Request (0x01) len 6
    IO capability: KeyboardDisplay (0x04)
    OOB data: Authentication data not present (0x00)
    Authentication requirement: Bonding, MITM, SC, No Keypresses, CT2 (0x2d)
    Max encryption key size: 16
    Initiator key distribution: EncKey IdKey Sign LinkKey (0x0f)
    Responder key distribution: EncKey IdKey Sign LinkKey (0x0f) 
< ACL Data TX: Handle 24 flags 0x00 dlen 11                                                                                                                                                                                                              #241 [hci0] 74.105300
      SMP: Pairing Response (0x02) len 6
        IO capability: NoInputNoOutput (0x03)
        OOB data: Authentication data not present (0x00)
        Authentication requirement: Bonding, MITM, Legacy, No Keypresses (0x05)
        Max encryption key size: 16
        Initiator key distribution: EncKey Sign (0x05)
        Responder key distribution: EncKey Sign (0x05)
> HCI Event: Number of Completed Packets (0x13) plen 5                                                                                                                                                                                                   #242 [hci0] 74.224936
        Num handles: 1
        Handle: 24 Address: 67:D0:40:D9:1D:BF (Resolvable)
        Count: 1
> ACL Data RX: Handle 24 flags 0x02 dlen 21                                                                                                                                                                                                              #243 [hci0] 75.304575
      SMP: Pairing Confirm (0x03) len 16
        Confim value: bf331d0c1af509252c7ac50a03acc66f
< ACL Data TX: Handle 24 flags 0x00 dlen 21                                                                                                                                                                                                              #244 [hci0] 75.304672
      SMP: Pairing Confirm (0x03) len 16
        Confim value: ac378c91768d6efd8b5b07ad5cd78ba4
> HCI Event: Number of Completed Packets (0x13) plen 5                                                                                                                                                                                                   #245 [hci0] 75.425942
        Num handles: 1
        Handle: 24 Address: 67:D0:40:D9:1D:BF (Resolvable)
        Count: 1
> ACL Data RX: Handle 24 flags 0x02 dlen 21                                                                                                                                                                                                              #246 [hci0] 75.484575
      SMP: Pairing Random (0x04) len 16
        Random value: 830af66a612fb5dcb8bf8376a43b8dda
< ACL Data TX: Handle 24 flags 0x00 dlen 6                                                                                                                                                                                                               #247 [hci0] 75.486908
      SMP: Pairing Failed (0x05) len 1
        Reason: Confirm value failed (0x04)
> HCI Event: Number of Completed Packets (0x13) plen 5                                                                                                                                                                                                   #248 [hci0] 75.545938
        Num handles: 1
        Handle: 24 Address: 67:D0:40:D9:1D:BF (Resolvable)
        Count: 1
> HCI Event: Disconnect Complete (0x05) plen 4                                                                                                                                                                                                           #249 [hci0] 79.624942
        Status: Success (0x00)
        Handle: 24 Address: 67:D0:40:D9:1D:BF (Resolvable)
        Reason: Remote User Terminated Connection (0x13)

Не удалось выполнить сопряжение Bluetooth через BlueZ в режиме «Просто работа» — не удалось подтвердить значение

Проблема: Я столкнулся с проблемой, когда на этапе подтверждения не удалось подтвердить периферийное устройство (мою плату). Подробности смотрите в сообщении btmon на рисунке выше.

Не удалось выполнить сопряжение Bluetooth через BlueZ в режиме «Просто работа» — не удалось подтвердить значение
ps: Эта картинка из Core_v5.4 Vol3, Part H, патч 1618

Подозрение:
Я не совсем уверен, где находится проблема, но после прочтения формулы расчета подтверждения я подозреваю, что это может быть связано с различиями в алгоритмах между моим телефоном и моей платой или проблемой с адресом, поскольку другие параметры кажутся одинаковыми. .

Не удалось выполнить сопряжение Bluetooth через BlueZ в режиме «Просто работа» — не удалось подтвердить значение
Не удалось выполнить сопряжение Bluetooth через BlueZ в режиме «Просто работа» — не удалось подтвердить значение
Не удалось выполнить сопряжение Bluetooth через BlueZ в режиме «Просто работа» — не удалось подтвердить значение

Я попытался подключиться к своей виртуальной машине (Ubuntu) через Bluetooth с той же версией BlueZ и теми же операциями, и это сработало! Поэтому я подозреваю, что проблема кроется в конфигурации ядра моей платы.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
97
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В конечном итоге проблема была обнаружена в конфигурации ядра Linux.
Рекомендуемая конфигурация от Bluez показана на рисунке ниже.

(Скриншот из учебного руководства A1 Bluetooth Linux — Установка и настройка.pdf, страница 4, загруженного с официального сайта)

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

* User-space interface for random number generator algorithms

Другие вопросы по теме