Соединение Bluetooth LE длится всего 10 секунд

Мне было интересно, были ли у кого-нибудь еще проблемы с подключением, которое длилось всего 10 секунд. Я пытаюсь подключить Mac (работающий под управлением ubuntu) в качестве центрального и приложение для iPhone, работающее как периферийное устройство. Я подтвердил, что приложение можно подключить с помощью голубого цвета. Я использую hcitool lescan для получения MAC-адреса, а затем использую gatttool-b -I -t random, которая дает мне приглашение [] [MAC ADDRESS]>, а затем я набираю connect, что дает мне [CON] [MAC ADDRESS ]> ровно на 10 секунд, прежде чем вернуться к [] [MAC-АДРЕС]>. Я запустил hcidump и вот результат:

Сниффер HCI - анализатор пакетов Bluetooth версии 2.2 устройство: hci0 snap_len: 1028 фильтр: 0xffffffffffffff

Команда HCI: LE Set Scan Parameters (0x08 | 0x000b) plen 7 type 0x01 (active) interval 10.000ms window 10.000ms own address: 0x00 (Public) policy: All

Событие HCI: команда завершена (0x0e) plen 4 LE Установить параметры сканирования (0x08 | 0x000b) Статус ncmd 1 0x00

Команда HCI: LE Set Scan Enable (0x08 | 0x000c) plen 2 value 0x01 (сканирование включено) фильтр дублирует 0x01 (включен)

Событие HCI: команда завершена (0x0e) plen 4 LE Set Scan Enable (0x08 | 0x000c) ncmd 1 status 0x00

Событие HCI: Мета-событие LE (0x3e) plen 33 Рекламный отчет LE ADV_IND - Ненаправленная реклама с возможностью подключения (0) bdaddr 78: 96: 3C: DB: D9: 9D (Случайно) Флаги: 0x1a Неизвестный тип 0x07 с данными в 16 байтов RSSI: - 37

Событие HCI: мета-событие LE (0x3e) plen 12 Рекламный отчет LE SCAN_RSP - ответ сканирования (4) bdaddr 78: 96: 3C: DB: D9: 9D (Случайный) RSSI: -37

Команда HCI: LE Set Scan Enable (0x08 | 0x000c) plen 2 value 0x00 (сканирование отключено) фильтр дублирует 0x01 (включен)

Событие HCI: команда завершена (0x0e) plen 4 LE Set Scan Enable (0x08 | 0x000c) ncmd 1 status 0x00

Команда HCI: LE Create Connection (0x08 | 0x000d) plen 25 bdaddr 78: 96: 3C: DB: D9: 9D тип 1

Событие HCI: Статус команды (0x0f) plen 4 LE Create Connection (0x08 | 0x000d) status 0x00 ncmd 1

Событие HCI: Мета-событие LE (0x3e) plen 19 Состояние завершения соединения LE 0x00, дескриптор 64, роль master bdaddr 78: 96: 3C: DB: D9: 9D (Случайно)

Данные ACL: обработать 64 флага 0x02 dlen 11 ATT: чтение группой req (0x10) start 0x0001, end 0xffff type-uuid 0x2800

Команда HCI: чтение информации об удаленной версии (0x01 | 0x001d), ручка 2 пленочного блока 64

Событие HCI: чтение удаленной Ver Info Complete (0x0c) plen 8 status 0x00 handle 64 LMP Version: 4.0 (0x6) LMP Subversion: 0x2203 Производитель: Broadcom Corporation (15)

Событие HCI: Статус команды (0x0f) plen 4 Чтение информации об удаленной версии (0x01 | 0x001d), статус 0x00 ncmd 1

Событие HCI: Disconn Complete (0x05) plen 4 status 0x00 handle 64 cause 0x13 Reason: Remote User Terminated Connection

Есть ли предложения, которые помогут мне выбраться из этой колеи?

Заранее спасибо.


person user3712524    schedule 19.07.2014    source источник


Ответы (3)


Я испытал (на Android), что маячки Estimote BLE прерывают соединение ровно через 10 секунд. Как превратить свой iPhone в периферийное устройство? Вы пользуетесь приложением Estimte? Возможно, они реализовали приложение так же, как и маяки.

Если вы используете приложение Estiomte, вы можете попробовать использовать другое приложение, чтобы превратить ваш iPhone в периферийное устройство и проверить, показывает ли оно такое же поведение.

person Mr. Jones    schedule 21.07.2014
comment
Нет, я пишу собственное приложение на Objective-c. - person user3712524; 21.07.2014
comment
То же самое происходит с lightblue, когда я пытаюсь подключиться к любой из их псевдослужб. - person user3712524; 21.07.2014

Я считаю, что это также может быть связано с версией bluez. Какие версии bluez вы использовали в то время? И вы также можете увидеть следующее из hcidump:

Причина: подключение удаленного пользователя прервано (0x13)

person user4826904    schedule 04.01.2017

Это просто мой гость: я думаю, что это часть сохранения вещей в iOS. Если вы подключитесь вручную и ничего не сделаете в течение 10 секунд, он просто отключится. В большинстве случаев программа не простаивает (ничего не делает) в течение 10 секунд. Почему бы вам не подписаться на уведомление / идентификацию символов или выполнить связывание, я снова предполагаю, что это должно предотвратить отключение iOS. Это может быть сложно с gatttool за 10 секунд, но должно быть легко, если вы используете голубой.

person user1012131    schedule 10.08.2014
comment
Спасибо. Я думал об этом и поэтому пытался непрерывно проверять характеристики, получать значения и т. Д. После десятисекундной отметки. Он все еще отключен. Я могу просто попробовать написать программу, которая подключается к услуге и подписывается на нее, и посмотреть, останется ли она подключенной. - person user3712524; 11.08.2014