Use BlueZ Stack As A Peripheral (Advertiser)

前端 未结 2 2007
感情败类
感情败类 2020-11-27 09:54
  • Goal: Use BlueZ and an Bluetooth 4LE dongle to create a peripheral that advertises the bluetooth equivalent of \"Hello World\".

2条回答
  •  南方客
    南方客 (楼主)
    2020-11-27 10:32

    adding some more information here (ref BlueZ5.x):

    • bluez is not exposing DBUS api for gatt server registeration; you have some profile implementation available but you need to configure and compile it with --enable-experimental option or enable gatt-example under plugin folder tha tregister some gatt server as example

    • when you advertise doing hciconfig hci0 leadv pay attention to advertised data. in the example below for iBeacon

      sudo hcitool -i hci0 cmd 0x08 0x0008 1e **02 01 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 c5 00 00 00 00 00 00 00 00 00 00 00 00 00

      the bolded part is for an AD structure that is releated to flags field (check under bluetooth spec for advertisgin data format). With this flags settings the device is advertising itself as simultaneous LE and BR-EDR.

      In my experience when advertising in this way an android device that scan the bluez device acting as BLE peripheral will trigger a connection over Classic bluetooth (due to flag settings) and not over BLE (note that connection procedures are different for LE and Classic). Not sure how Apple central device act in this case. Anyway to avoid it you may set 06 instead of 1A so that BR-EDR support isnot advertised. In this way you will see a connection over BLE.

    If you want to test it using a central Android device there is a free Nordic app for that.

提交回复
热议问题