Linux BLE: Difference between revisions

From Variscite Wiki
Line 36: Line 36:
= Accessing BLE devices =
= Accessing BLE devices =


After successful connection the BLE device can be accessed via gatttool. Continuing the example above:
After successful connection the BLE device can be accessed via '''gatttool'''. Continuing the example above:
<pre>
<pre>
[74:B9:AB:CF:13:A9][LE]> characteristics  
[74:B9:AB:CF:13:A9][LE]> characteristics  

Revision as of 12:48, 9 February 2017

Bluetooth Low Energy

Scanning for BLE devices

Use btmgmt tool to scan for BLE devices and report their MAC address type (random vs public).

root@var-som-mx6:~# btmgmt find
Discovery started
hci0 type 7 discovering on
hci0 dev_found: 74:B9:AB:CF:13:A9 type LE Random rssi -90 flags 0x0000
AD flags 0x1a 
name Galaxy S5
hci0 dev_found: 00:1A:7D:DA:71:0B type BR/EDR rssi -79 flags 0x0000 
name SMTBT
hci0 dev_found: 00:1A:7D:DA:71:11 type BR/EDR rssi -96 flags 0x0001 
eir_len 5
confirm_name succeeded for 00:1A:7D:DA:71:11
hci0 type 7 discovering off

In this example a single BLE device was detected, having MAC address 74:B9:AB:CF:13:A9 and random MAC address type

Connecting to BLE devices

Use gatttool to connect to BLE devices. Pass "-t random" parameter if scan has reported a random MAC address.

 
root@var-som-mx6:~# gatttool -t random -b 74:B9:AB:CF:13:A9 -I
[74:B9:AB:CF:13:A9][LE]> connect
Attempting to connect to 74:B9:AB:CF:13:A9
[74:B9:AB:CF:13:A9][LE]>
Connection successful
Indication handle = 0x0003 value: 01 00 ff ff 
[74:B9:AB:CF:13:A9][LE]>

Accessing BLE devices

After successful connection the BLE device can be accessed via gatttool. Continuing the example above:

[74:B9:AB:CF:13:A9][LE]> characteristics 
handle: 0x0002, char properties: 0x20, char value handle: 0x0003, uuid: 00002a05-0000-1000-8000-00805f9b34fb
handle: 0x0015, char properties: 0x02, char value handle: 0x0016, uuid: 00002a00-0000-1000-8000-00805f9b34fb
handle: 0x0017, char properties: 0x02, char value handle: 0x0018, uuid: 00002a01-0000-1000-8000-00805f9b34fb
handle: 0x0019, char properties: 0x02, char value handle: 0x001a, uuid: 00002aa6-0000-1000-8000-00805f9b34fb
handle: 0x0029, char properties: 0x12, char value handle: 0x002a, uuid: 00002a19-0000-1000-8000-00805f9b34fb
[74:B9:AB:CF:13:A9][LE]> char-read-hnd 0x0002
Characteristic value/descriptor: 20 03 00 05 2a 
[74:B9:AB:CF:13:A9][LE]> char-read-hnd 0x0015
Characteristic value/descriptor: 02 16 00 00 2a 
[74:B9:AB:CF:13:A9][LE]> char-read-hnd 0x0017
Characteristic value/descriptor: 02 18 00 01 2a 
[74:B9:AB:CF:13:A9][LE]> char-read-hnd 0x0019
Characteristic value/descriptor: 02 1a 00 a6 2a 
[74:B9:AB:CF:13:A9][LE]> char-read-hnd 0x0029
Characteristic value/descriptor: 12 2a 00 19 2a 

Receiving notifications from BLE devices

Notifications sent from connected BLE devices can be seen in gatttool. The example below shows notification sent by Android "BLE Peripheral Simulator"

[74:B9:AB:CF:13:A9][LE]>
Notification handle = 0x002a value: 08 3c 00 00
[74:B9:AB:CF:13:A9][LE]>