Тайм-аут подключения Raspberry Pi iBeacon

В настоящее время я пробую учебник Raspberry Pi iBeacon, размещенный RadiusNetworks по адресу

http://developer.radiusnetworks.com/2013/10/09/how-to-make-an-ibeacon-out-of-a-raspberry-pi.html

но у меня возникли проблемы с тайм-аутом соединения через несколько секунд. Я выполнил свежую сборку Rasbian и попробовал с двумя различными ключами (AZIO V400 и IOGEAR GBU521), и я попробовал с Bluez 5.8 в этом уроке, а также Bluez 5.11, как на свежих Raspbian загрузках.

Когда я вызываю стартовый скрипт, я вижу:

pi@piBlueTest ~ $ ./start
Launching virtual iBeacon...
LE set advertise enable on hci0 returned status 12
< HCI Command: ogf 0x08, ocf 0x0008, plen 44
  1E 02 01 1A 1A FF 4C 00 02 15 E2 C5 6D B5 DF FB 48 D2 B0 60 
  D0 F5 A7 10 96 E0 00 00 00 00 C9 00 00 00 00 00 00 00 00 00 
  00 00 00 00 
> HCI Event: 0x0e plen 4
  01 08 20 00 
Complete

Это вызывает событие "Введено" на iPhone с помощью приложения "Найти iBeacon" и показывает расстояние в метрах в течение нескольких секунд. Затем он показывает "Расстояние: неизвестно" как диапазон в течение еще нескольких секунд, после чего происходит событие "выхода". Когда я запускаю последовательность с запуском "hcidump", я получаю

HCI sniffer - Bluetooth packet analyzer ver 5.11
device: hci0 snap_len: 1500 filter: 0xffffffff
< HCI Command: LE Set Advertise Enable (0x08|0x000a) plen 1
> HCI Event: Command Complete (0x0e) plen 4
    LE Set Advertise Enable (0x08|0x000a) ncmd 1
    status 0x0c
    Error: Command Disallowed
< HCI Command: LE Set Advertising Data (0x08|0x0008) plen 44
> HCI Event: Command Complete (0x0e) plen 4
    LE Set Advertising Data (0x08|0x0008) ncmd 1
    status 0x00
< HCI Command: LE Set Advertising Parameters (0x08|0x0006) plen 15
    min 1280.000ms, max 1280.000ms
    type 0x00 (ADV_IND - Connectable undirected advertising) ownbdaddr 0x00 (Public)
    directbdaddr 0x00 (Public) 00:00:00:00:00:00
    channelmap 0x07 filterpolicy 0x00 (Allow scan from any, connection from any)
> HCI Event: Command Complete (0x0e) plen 4
    LE Set Advertising Parameters (0x08|0x0006) ncmd 1
    status 0x00
< HCI Command: LE Set Advertise Enable (0x08|0x000a) plen 1
> HCI Event: Command Complete (0x0e) plen 4
    LE Set Advertise Enable (0x08|0x000a) ncmd 1
    status 0x00
> HCI Event: LE Meta Event (0x3e) plen 19
    LE Connection Complete
      status 0x00 handle 64, role slave
      bdaddr B8:F6:B1:1C:15:C8 (Public)
> ACL data: handle 64 flags 0x02 dlen 11
    ATT: Read By Type req (0x08)
      start 0x0001, end 0xffff
      type-uuid 0x2a00
> HCI Event: Disconn Complete (0x05) plen 4
    status 0x00 handle 64 reason 0x13
    Reason: Remote User Terminated Connection

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

Я выполнил шаги от учебника до письма, и не могу определить, что вызывает разрыв. Я пытался изменить версии bluez и пробовал другое оборудование, но безрезультатно. Есть идеи, какой шаг я могу пропустить? Я искал все, что могу придумать, чтобы найти подсказки, но пока не нашел ответа. Спасибо заранее за любые советы!

3 ответа

Решение

Попробуйте настроить устройство на "рекламу и отсутствие подключения" (3 вместо 0) вместо "реклама и подключение"

sudo hciconfig $BLUETOOTH_DEVICE leadv 3

Через несколько секунд у нас неожиданно загорелся маяк из-за того, что ноутбук пытался подключиться. Устранение проблемы с подключением устройства к сети.

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

Как и Крис, я выполнил шаги из руководства, за исключением использования bluez 5.11. После некоторых экспериментов мне пришлось изменить порядок шагов в "стартовом" скрипте. Не уверен, почему, но это, кажется, единственный порядок, в котором он будет работать правильно. Может я что то не так сделал?

#!/bin/sh
. ./ibeacon.conf
echo "Launching virtual iBeacon..."
sudo hciconfig $BLUETOOTH_DEVICE up
sudo hciconfig $BLUETOOTH_DEVICE noleadv
sudo hciconfig $BLUETOOTH_DEVICE leadv 0
sudo hcitool -i hci0 cmd 0x08 0x0008 1e 02 01 1a 1a ff 4c 00 02 15 $UUID $MAJOR $MINOR $POWER 00 00 00 00 00 00 00 00 00 00 00 00 00
echo "Complete"

Возможно, вы можете предотвратить это, заставив любое устройство, пытающееся установить соединение, прекратить это. Это не нормально для iOS. Вы сказали это, чтобы попытаться установить соединение? Вы уверены, что это устройство iOS делает это? Возможно, это ваш компьютер?

С другой стороны, если вы не можете заставить его работать самостоятельно, я могу предоставить бесплатный файл.iso с точным кодом, который мы добавляем в предварительно собранные модули. Это может устранить проблему сборки. Пожалуйста, отправьте записку через нашего контактного лица по продажам, если вы хотите попробовать это.

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