I'm a developer of an row app. According to the PM5_CSAFE document, i connet to PM5 successfully and Implemented some functions like set a workout , get a logbook then updata it and so on.
Everything seems perfectly until i found that when my workout finished, there is a certain chance my app lost some bluetooth data from PM5.For example,I'm subscribing to Bluetooth messages with IDs 0x0037, 0x0038, 0x0039 and 0x003A. However, i have observed instances where we do not receive split/interval data or workout summary data from the PM5.I want to know if there have rules to obey so i can get the Bluetooth message 100%.
I have also noticed that ErgData utilizes the 0x6A interface (specifically, CSAFE_PM_GET_INTERNALLOGMEMORY) to obtain workout and interval settlement information at the conclusion of a workout.But i dont know the decode rule, so i can just get a pile of binary data.
Above all, i just want to know how can i get all data about workout perfectly, thank you very much for any suggestions or methods.
PM5 Bluetooth Message Has A Chance Of Being Lost
-
- Paddler
- Posts: 1
- Joined: February 25th, 2024, 10:42 pm
Re: PM5 Bluetooth Message Has A Chance Of Being Lost
BLE from the PM5 isn’t 100% reliable, messages like 0x0037–0x003A can get dropped, especially at workout end. That’s why apps like ErgData use 0x6A to pull the full log after finishing.
The 0x6A data is raw and undocumented, but some devs have reverse-engineered parts of it—worth checking GitHub.
The 0x6A data is raw and undocumented, but some devs have reverse-engineered parts of it—worth checking GitHub.
Re: PM5 Bluetooth Message Has A Chance Of Being Lost
Interesting. Haven't seen this one pass by yet in our testing. I am the package maintainer of OpenRowingMonitor, and we've implemented CSAFE commands for our upcoming release. But we don't complete the final handshake, so that might explain this.
Any link you can share? I reverse engineered the PM5 communication (see https://github.com/JaapvanEkris/openrow ... terface.md) for OpenRowingMonitor for our upcoming release. I found some people implementing the low-hanging fruit (this is GeneralStatus, etc.), but hardly any docs about timing, sequencing, relations between messages, etc. of all other messages. Took quite some experimenting and BLE sniffing to get our basics right.
Package maintainer of OpenRowingMonitor, the open source Rowing Monitor