atbrask / CMS50Dplus

Python code for downloading data from a Contec CMS50D+ pulse oximeter
BSD 2-Clause "Simplified" License
54 stars 21 forks source link

Project cms50ew to support CMS50EW (and possibly others) #7

Open tobac opened 7 years ago

tobac commented 7 years ago

I've just pushed my project cms50ew to GitHub. It's a python client for Contec CMS50EW pulse oximeters providing both a Qt5-based GUI and a partially curses-based CLI. Would you be interested in collaborating and eventually merging the projects?

reox commented 3 years ago

After a long journey I found these two repos... It would have spared me some hours of reverse engineering - but all in all it was fun to do that.

I own a "ReFleX wireless AQWave RX101 PPG Recorder", which was build in 2012. I tried to reverse engineer their serial protocol and was amused to find the source code to their PC program attached to the installer... Looks like someone had no idea how to package binaries. Based on the source code, I found out about the other commands (which are not used in the source) and also tried to understand the package structure. Everything is so messy and in their code they do really weird things.... If you want to have some fun, download the windows installer from their website: https://www.reflexwireless.com/en/aqwave-ppg-recorder/

Eventually, I ended up with this small library: https://github.com/reox/aqwaver/

By searching for the USB-Serial Cable part number (!), I eventually stumbled over the CMS50x devices - which looked suspiciously similar - i mean identical (except for labeling). Interestingly, ReFleX registered the device at the FCC in 2012, while Contec registered it in 2014. However, the PCBs inside the device have part numbers like CM... which would indicate that Contec was the manufacturer all along? Fun fact: ReFleX sells the device for 200$, while Contec apparently offers it for about 80$...

I send ReFleX many mails asking for a description of the serial protocol, because back in the days they said they want to offer an SDK... However they are not responding to mails anymore and it looks like they are out of business or are just playing uboat, idk... Back then, they would answer immediately, now I did not hear from them over a year.

Would be interesting to know which company was the inventor of this device and also to have a full protocol description. I would be interested if you can write to the device and change settings via the serial port.

Anyways, it is nice to see, that I'm not the only one who developed a python library!