Linux BLE: Difference between revisions
From Variscite Wiki
No edit summary |
|||
Line 24: | Line 24: | ||
Use '''gatttool''' to connect to BLE devices. Pass "-t random" parameter if scan has reported a random MAC address. | Use '''gatttool''' to connect to BLE devices. Pass "-t random" parameter if scan has reported a random MAC address. | ||
<pre> | <pre> | ||
# gatttool -t random -b 74:B9:AB:CF:13:A9 -I | |||
[74:B9:AB:CF:13:A9][LE]> connect | [74:B9:AB:CF:13:A9][LE]> connect | ||
Attempting to connect to 74:B9:AB:CF:13:A9 | Attempting to connect to 74:B9:AB:CF:13:A9 |
Revision as of 13:59, 2 June 2021
Bluetooth Low Energy
NOTES:
- Please make sure your Bluetooth device is powered on and ready for use. Follow the Bluetooth wiki page if required.
Finding BLE devices
Use btmgmt tool to find BLE devices and detect their MAC address type (random vs public).
root@var-som-mx6:~# btmgmt find -l 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 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.
# 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 BLE device characteristics 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]>