In short
When I connect to a BLE device with an unofficial app/program, GATT commands are not executed by the device.
Does the app need to run some king of authentication with the device? (a Bulb)
My reverse engineering story
I am trying to reverse-engineer a Bluetooth LE bulb (the Holi Sleep Companion). I have successfully found the GATT messages I need:
- by reading the HCI journals from Android (dev tools)
- by disassembling the Java code of the Android app (Sleep360)
However, sending the exact same sequence of Bluetooth messages to the Bulb does not work.
While testing, I actually found that the following works for one GATT command if quickly run in the right order:
- I connect the official Android app
- I close the official Android app
- I connect my own app/program and send one GATT command (from the same device or another)
My tests
I run my tests with two methods:
- with the nF Connect Android app
- with my own python script running on a Linux laptop with bluez
Thank you for you help!