Hello everyone!

I’m trying to parse raw data from the CMS50N Bluetooth Pulse Ox. I couldn’t find any documents online describing the format, so I’m stuck reverse engineering.

Can someone please help interpret the data?

Here’s what I could gather so far:

- Device sends 2 packets per second
- Each packet is 9 bytes long
- First 8 bytes look like unsigned ints, and roughly match a Photoplethysmogram graph also seen on the device’s screen
- Last byte is varying a lot, no idea what it means.

Plot of the first 8 bytes from each packet combined into a single sequence

Plot of the 9th byte taken from each packet.

I guess calculating the heart rate can be done by counting the number of peaks per second (assuming 16 readings measured at the periodic interval = 1 second), but I have absolutely no idea of how to calculate SpO2 or Perfusion Index.

Can anyone guide me to the resources where I can find formulas for this or just general info? Also some examples with real data would be really nice so I could just try to guess what these numbers mean by plugging them in different formulas and seeing what fits.

Thank you!