Guandong Bluetooth Pulse Oximeter
Tait Sougstad
If I can sniff the Bluetooth data on my $10 Bluetooth pulse oximeter, can you support it? What data do you look for when you are adding support for a device? I assume there are data streams for sp02% and HR, and you probably need some identifier for the device so the app knows what to look for? I'd like to help if I can.
V
Valeriy Kovalenko
Hi Tait Sougstad, we've just released a bluetooth connection wizard. https://getstamina.app/help/sensors/bluetooth-device-connection-wizard
Could you please give it a try to see if you'll be able to connect your device? Make sure that you're on the latest version of the mobile app (6.4.1)
Tait Sougstad
Awesome. I'll try to take a look tonight. Thanks for recommending Lightblue. It looks like Wireshark is another tool developers use to sniff BLE packets.
V
Valeriy Kovalenko
Hey Tait Sougstad, yeah, that's possible doable if you can investigate all this. I need two pieces of information:
1) How to identify a device
2) How to get HR/ SpO2
The ideal solution for (1) - when a device advertises a unique service ID.
For (2) I need to know a service ID, a characteristic ID (that supports notify). And to know how to get HR/SpO2 out of the streamed data.
I usually use LightBlue app for initial investigation.
Tait Sougstad
Valeriy Kovalenko: Here are some screenshots. The device name is "HealthTree-BLE". There are two characteristics, likely sp02% and HR? When I read them, they just advance need characters by one each query.
I tried to set up a Wireshark connection. Got it connected to my computers Bluetooth, found BT in Wireshark, but it doesn't discover the device for some reason.
Basically, I've never done this before, but trying to Google my way through it. Let me know if you have any suggestions.
V
Valeriy Kovalenko
Tait Sougstad: All sevices that I’ve seen use one characteristic to pass both HR and SpO2.
Next step for you is to hit that ‘Subscribe’ button on characteristics’ pages. If you see Hex data constantly coming - you’re on the right way. In the hex data we’ll need to find HR and SpO2. From what I’ve seen in cheap pulse-oximeters they usually are unencoded. (E.g. The second byte is hr, the third spo2). The first byte usually denotes a packet type.
Tait Sougstad
Valeriy Kovalenko: Characteristic 1 streams data, and 2 does not. None of the data is intelligible to me. There appear to be some patterns, though.
V
Valeriy Kovalenko
Tait Sougstad: Can you please subscribe for 3-4 seconds, then unsubscribe and share the log with me along with some reference intervals of hr/spo2 that you had on the pulseoximeter’s display?