Raspberry Pi iBeacon connection timing out
bluetooth-lowenergy, bluez, ibeacon, raspberry-pi
Solution
Try setting the device to "advertise and not-connectable" (3 instead of 0) instead of "advertise and connectable"
sudo hciconfig $BLUETOOTH_DEVICE leadv 3
We suddenly had a beacon going down after a few seconds due to a laptop trying to connect. Setting the device to not-connectable solved the problem.
Problem
I am currently attempting the Raspberry Pi iBeacon tutorial posted by RadiusNetworks at http://developer.radiusnetworks.com/2013/10/09/how-to-make-an-ibeacon-out-of-a-raspberry-pi.html but I am having issues with the connection timing out after a few seconds. I have performed a fresh build of raspbian, and have tried with 2 different dongles (AZIO V400 and IOGEAR GBU521), and I have tried with Bluez 5.8 per the tutorial as well as Bluez 5.11, both on fresh Raspbian loads. When I call the start script I see: ``` 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 ``` This triggers an "Entered" event on the iPhone using the "Locate iBeacon" app, and shows a distance in meters for a few seconds. It then shows "Distance: unknown" as the range for several more seconds, followed by an "exit" event occurring. When I run the sequence with "hcidump" running, I get ``` 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 ``` It appears that the iPhone is trying to initiate a connection to the pi, and then fails at negotiating that connection which then ends the advertisement. I have completed the steps from the tutorial to the letter, and cannot seem to determine what is causing the disconnect. I have tried changing bluez versions, and tried different hardware, but to no avail. Any ideas what step I may be missing? I have searched everything I can think of for clues, but have not found the answer yet. Thanks in advance for any advice!