Tuesday, March 17, 2015

Garmin Forerunner FR220 'What else can it do...'


 Morning,
 This is a spin off of my other FR220 post. This one will cover stuff that we can do with the 220 and probably the 620 that involves messing with the setup files but does not require messing with the firmware.

Here is a teaser that i'll get to ....



While corresponding with a new friend about my work on the test mode data EPO status, this new friend ( Lets call him 'MiniQ') started investigating the SETTINGS and 0RRUNNIN .FIT files.
MiniQ wanted to be able to select a slower Virtual Partner WALK pace than the slowest available in the watch  ( 8.55min/KM). After many hours of  bit twiddling MiniQ sent me an email  " Now I've successfully raced the Virtual Partner while walking (VP pace set to 14:00/km). I WON! :-)
He passed on info on how the activity screen metrics are indexed on the FR620 and where the number of fields per screen was stored. Here is a list of the 620 metrics.
I have since found the same metrics have the same index number on all garmin forerunner devices. 910,920,620,220 and fr10. I hope to create a full list . Anyone got one before i start ?
I re-ran his tests on the FR220 and here are my results based on his hours of work.
Seeing that the FR620 can display up to 4 screens of fields and the FR220 can only display up to 2 screens of 3 i wanted to see if i could enable more...

Testing every combination i can not get more than 2 activity screens but CAN set both to 4 fields !

You will need 

  1. Hex editor to edit the .FIT file.
  2. The ANT .FIT SDK  ( i use the FitTestTool.jar JAVA script from it to create the new checksum for the modifyed .FIT ) 
  3. Some DOS skills if you do it the way i do it . MiniQ uses Unix scripts. 


MiniQ found the FR620's first activity screen settings started at address 0x0280 in the 0RRUNNIN.FIT file.
0RRUNNIN.FIT is found in the GARMIN\SPORTS folder on the watch.

Here is what the header looks like in the hex editor.




Here is the bit around address 280hex we are interested in..



Grab your current 0RRUNNIN.FIT file and drop it in the working folder on your computer.
( Excuse the mess. I hate path problems so put the utils and data in the same folder.)

Run the FitTestTool over your .FIT to make sure its ok and that you can run the tool.

D:\Downloads\Garmin\FitSDKRelease_14.00\java>java -jar fittesttool.jar -d 0RRUNNIN.FIT > 0RRUNNIN.txt

 This will create a .txt file like the section below. ( open it in Wordpad if on a PC to keep correct newline formatting).

To help make things clear i have made an indexed version with Decimal and Hex and comments. 


(*** Screens The 3rd and 4th screens above maybe wrong. i'll update the pic and text ASAP.)


Here you can see the Activity screen settings at the time were Screen 1 Enabled and showing 3 fields, Distance , Timer , Elevation.  Activity Screen 2 was Enabled and only showing 2 fields, Average Pace and Speed. The HRM screen was NOT enabled but if it was it would have shown 2 fields, HR and HR Zone ( there are the default for HR and not adjustable from the watch menu. The 4th screen would be the Workout screen. It was NOT enabled but would have shown Average Pace, Average HR and Time Of Day.

The fields in the green text are normal metrics for the two main FR220 activity screens. The others were only available when the extra HR and workout screens were enabled but look to be available on the main activity screens if added via the 0RRUNNIN.FIT

Dec  Hex   Metric         Comment                                                           
0   0x00  Calories        Calories burned during the current workout.
3   0x03  Cadence         Number of steps per minute.

6   0x06  Distance        Distance travelled during the current activity.
7   0x07  Lap Distance    Distance travelled during the current lap.
9   0x09  Elevation       Current altitude above sea level.

13  0x0d  Heart Rate      Current heart rate (heart beats per minute, bpm).
14  0x0e  Average HR      Average heart rate for the current activity.

16  0x10  HR %Max.        Percentage of maximum heart rate.

19  0x13  %HRR            Percent of heart rate reserve (HRR=MaxHR-RestingHR).

22  0x16  HR Zone         Current heart rate zone (1..5).
23  0x17  Heart Rate      Ibid nr 13 decimal - duplicate?]

33  0x21  Pace            Current pace.
34  0x22  Average Pace    Average pace for the current activity.
35  0x23  Lap Pace        Average pace for the current lap.
48  0x30  Speed           Current speed.

50  0x32  Lap Speed       “ Unknown _ _ _ _ . _ “

56  0x38  Timer           Stopwatch: Duration of activity. Paused if stopped.
58  0x3a  Lap Time        Elapsed time for the current lap.
59  0x3b  Time of Day     Current time of day

64  0x40  Calories to Go  Remaining calories to burn. If workout target]
65  0x41  Distance to Go  Remaining distance. If set as a workout target]
66  0x42  HR to Go        Difference between current HR and workout HR target]
67  0x43  Repetition      Repetition ? no lines or numbers; “
68  0x44  Time to Go      Remaining time during workout. If a time target is set]
_______________________________________________________________________________

I can get a max of 2 screens of 1 to 4 fields.
I have not run with the other two screens we can get on a 220 that are for HR and Workout with other field numbers entered into screens 3 to 8.
_____________________________________________________________________________

I have been running and riding with 4 fields for 4 weeks now and its stable and required no clunky workarounds. The only drawback is that once you enable the 4th field you are stuck with the selected 4th field until you do a hard reset or replace the 0RRUNNIN.FIT file. You can change the first 1, 2 or 3 fields to any of the normal metrics from the watch menu as before.

Lets make Activity Screen 1 a 4 field screen showing LapTime, Speed, Pace and Timer.
I put timer last as its a field that i would always have on a screen. This allows me to add and change the first 3 from the watch at any time.

From the above table we need. Laptime (3A), Speed ( 30), Pace (21) and Timer( 38).
Copy your 0RRUNNIN.FIT to your PC as above.
Open it with the hex editor.
Edit addresses 0x28A to 0x3A, 0x28B to 0x30, 0x28C to 0x21, 0x28D to 0x38.
Edit address 0x291 to 0x04 to enable the 4 data fields.
Save the file.
All done... Not quite.. for the watch to suck the .FIT file into to its belly it needs to make sure the file is correctly formed and not corrupt. We have not messed with its format but will have changed the checksum of the file.
There maybe other tools out there to create a new 16bit checksum but i use the FIT tool tester.
Re-run the tool over the new .FIT and look at the last few lines.

java -jar fittesttool.jar -d 0RRUNNIN.FIT 

Your should see a 'File integrity failure' error.
Take note of the hex number at the end of the 3rd last line. The below example is E873.



Take the E8 and the 73, reverse them and with the hex editor put them into the LAST 2 locations in the .FIT file you are working on.



Save it and re-run the fit test tool.


Dont worry about the last 2 lines that show an error. As long as the CRC and the last 2 bytes match you are done.

At this point you have not changed anything on your watch at all. If you do proceed from here and IF it screws up your watch don't come crying to me. Its your choice and and you do so at your risk.


Replace the 0RRINNIN.FIT on your watch in the GARMIN\NEWFILES folder.
When you unplug the watch from the USB clip you should see it 'Updating' for a few seconds.

That's it. go into your watch activity screen menu or just press start, start to see how 4 fields looks. ( you may need your glasses ;-)





No comments:

Post a Comment