I am having a problem with my Garmin Fenix 3 working properly with a non-Garmin HRM. Long story short, the non-Garmin HRM hooks up just fine with the Fenix 3 and is able to send accurate data to the device. The problem is that Garmin calculates this
"Training Effect" based on the HRM data and with non-Garmin HRMs, it seems to be unable to calculate this accurately. Reaching out to Garmin was a waste and so I decided to look into it.
What I need to know is if the FIT file is allowed to have any non-record messages mixed in with record messages. That's the only discrepancy I can find between the working FIT file
(the Garmin HRM) and the non-working FIT file
(the MyZone HRM). My hope is if I can prove that both FIT files are valid, I can possibly get Garmin to fix their software. And if the MyZone FIT file is not valid, I can possibly get MyZone to fix their HRM.
Below is the FIT file structures for each activities my Garmin Fenix 3 recorded.
(Each activity was as close to the same as possible, basically me on a spin bike for 10 minutes trying to hover around 75% max HR) I have also attached both FIT files provided by Garmin Connect to help if you have time.
Garmin HRM FIT Structure
1 File size: 4444 bytes, protocol ver: 1.00, profile ver: 20.13
1 File header CRC: 0x5B54
1 file_id (0, type: 0, length: 20 bytes):
1 file_creator (49, type: 1, length: 4 bytes):
1 event (21, type: 2, length: 12 bytes):
4 device_info (23, type: 3, length: 44 bytes):
1 source (22, type: 4, length: 13 bytes):
1 unknown (141, type: 5, length: 26 bytes):
1 unknown (79, type: 6, length: 27 bytes):
1 sport (12, type: 7, length: 35 bytes):
145 record (20, type: 8, length: 17 bytes):
1 unknown (140, type: 9, length: 45 bytes):
1 event (21, type: 2, length: 12 bytes):
1 record (20, type: 8, length: 17 bytes):
1 event (21, type: 2, length: 12 bytes):
4 device_info (23, type: 3, length: 44 bytes):
1 lap (19, type: 10, length: 232 bytes):
1 session (18, type: 11, length: 254 bytes):
1 activity (34, type: 12, length: 19 bytes):
1 CRC: 0xC168
MyZone HRM FIT Structure
1 File size: 4284 bytes, protocol ver: 1.00, profile ver: 20.13
1 File header CRC: 0xD34A
1 file_id (0, type: 0, length: 20 bytes):
1 file_creator (49, type: 1, length: 4 bytes):
1 event (21, type: 2, length: 12 bytes):
4 device_info (23, type: 3, length: 44 bytes):
1 source (22, type: 4, length: 13 bytes):
1 unknown (141, type: 5, length: 26 bytes):
1 unknown (79, type: 6, length: 27 bytes):
1 sport (12, type: 7, length: 35 bytes):
87 record (20, type: 8, length: 17 bytes):
1 device_info (23, type: 3, length: 44 bytes):
46 record (20, type: 8, length: 17 bytes):
1 unknown (140, type: 9, length: 45 bytes):
1 event (21, type: 2, length: 12 bytes):
1 record (20, type: 8, length: 17 bytes):
1 event (21, type: 2, length: 12 bytes):
4 device_info (23, type: 3, length: 44 bytes):
1 lap (19, type: 10, length: 232 bytes):
1 session (18, type: 11, length: 254 bytes):
1 activity (34, type: 12, length: 19 bytes):
1 CRC: 0xE5E4
Within reason, the structures and the data within them are identical other than the Garmin HRM has one continuous grouping of 145
"record" entries while the MyZone HRM has two groupings of 87 and 46
"record" groupings respectively.