HMs DIY #1-6

Store Link

Because I want to keep this datafield and the app free for use I would be very grateful about a small donation to PayPal

A detailed description of how to use it can be found here: 

HMs_DIY_GUIDANCE.pdf
HMs_DIY_ANLEITUNG.pdf

Thanks very much to mcinner1 for putting so much time into this documentation!

Designer download

You can contribute on my github page.
You can upload your layout so others can use it as well.
Also any changes to the fonts.txt can be updated there as well.

Garmin_HMsDIY

=======================================================================
RELEASE NOTES
=======================================================================
-----------------------------------------------------------------------
3.6.2
* switched to new SDK 7.2.1
* added devices: Approach S7 42mm, Descent Mk3 43mm /Mk3i 43mm, Descent Mk3i 51mm, Edge 1050, epix Pro Gen2 42mm, epix Pro Gen2 47mm / quatix 7 pro, epix Pro Gen2 51mm / D2 mach 1 pro / tactix 7
Fenix 7 Pro, Fenix 7 Pro Solar, Fenix 7S Pro, Fenix 7X Pro, Fenix 7xPro Solar, Forerunner 165, Forerunner 165M, Venu 3, Venu 3S, Vivoactive 5
-----------------------------------------------------------------------
3.5.1
* switched to new SDK 4.2.4
* added devices: FR265, FR265S, FR965, GPSMAP 67/67i, Marq (Gen 2), Marq (Gen 2) Aviator, EDGE 540, EDGE 840, Instinct 2x Solar
* added two new font types GLANCE, GLANCENR (only available if device supports it!)

for full releasenotes see: releasenotes.txt
=======================================================================

 

  • This odometer drives me crazy, haven't found a reliable way yet.

    For watches it works ok, because after timer stop the data field is left and the clock is shown. So all data are reloaded when entering an activity again. And there is still a bug, where onTimerStop is called on activity stop in the sim but not on the real device.

    On the edges it is different, there the datafield stays visible after activity stop, is that correct?

    I will take a closer look again, maybe I can found a working solution for all devices.

  • Yeah, it's a real hair-raiser.

    I just did another test. I set only an odometer on a layout.
    Made an activityprofiie which has 2 datascreens.
    On one I set Clone #4 with the odometer starting at 36000m
    on the other I set Clone #6 with only an odometer starting at 45000m.

    Loaded both layouts, startet an activity, counter on both screens counted up.
    Stopped the activity, saved it.

    Back to the Layout - showed on both screens the not updated value (36.0 and 45.0 km) - ok, that was to be expected.

    Shut off the device, turned on - boot:
    TRARA: both odometer values were updatet correctly:

    That is another result as I got before with thosj's layout...
    I'm out...  Thinking

    EDIT:
    Can there even be a difference between the clones? I doubt it...

  • I just loaded the layouts one at a time in the 2.9.7 designer, and re-saved them. Then tried to copy the string to the clipboard, and paste the string into connect iq, data field #1. When I load it up on the watch, I'm seeing about 1/16th of the data in the design. I see a vertical line, pace/max pace, altitude, and the words "pace" & "max". That's it.

    Updated, and re-saved layout

    <?xml version="1.0" encoding="UTF-8"?>
    <DIYLayout>
        <Device name="fenix 6X Pro / 6X Sapphire / 6X Pro Solar"/>
        <Designer time="18.06.2020 09:48" ver="2.9.7" ifver="B"/>
        <LayoutElement type="3" text="----------------- Base Lines -------------"/>
        <LayoutElement type="1" color="C0C0C0" x="139" y="0" x2="139" y2="74" eletype="LN" valuetype="FX" minval="false" maxonly="false" daynight="false" radius="0" stroke="3" nr_values="1"/>
        <LayoutElement type="1" color="C0C0C0" x="42" y="40" x2="238" y2="40" eletype="LN" valuetype="FX" minval="false" maxonly="false" daynight="false" radius="0" stroke="3" nr_values="1"/>
        <LayoutElement type="1" color="C0C0C0" x="96" y="74" x2="185" y2="74" eletype="LN" valuetype="FX" minval="false" maxonly="false" daynight="false" radius="0" stroke="3" nr_values="1"/>
        <LayoutElement type="1" color="C0C0C0" x="97" y="73" x2="84" y2="99" eletype="LN" valuetype="FX" minval="false" maxonly="false" daynight="false" radius="0" stroke="4" nr_values="1"/>
        <LayoutElement type="1" color="C0C0C0" x="183" y="73" x2="196" y2="99" eletype="LN" valuetype="FX" minval="false" maxonly="false" daynight="false" radius="0" stroke="4" nr_values="1"/>
        <LayoutElement type="1" color="C0C0C0" x="6" y="100" x2="275" y2="100" eletype="LN" valuetype="FX" minval="false" maxonly="false" daynight="false" radius="0" stroke="4" nr_values="1"/>
        <LayoutElement type="1" color="C0C0C0" x="75" y="133" x2="207" y2="133" eletype="LN" valuetype="FX" minval="false" maxonly="false" daynight="false" radius="0" stroke="4" nr_values="1"/>
        <LayoutElement type="1" color="C0C0C0" x="115" y="161" x2="153" y2="217" eletype="AC" valuetype="FX" minval="false" maxonly="false" daynight="false" radius="48" stroke="4" nr_values="1"/>
        <LayoutElement type="1" color="C0C0C0" x="168" y="163" x2="381" y2="319" eletype="AC" valuetype="FX" minval="false" maxonly="false" daynight="false" radius="48" stroke="4" nr_values="1"/>
        <LayoutElement type="1" color="C0C0C0" x="15" y="181" x2="72" y2="181" eletype="LN" valuetype="FX" minval="false" maxonly="false" daynight="false" radius="0" stroke="4" nr_values="1"/>
        <LayoutElement type="1" color="C0C0C0" x="72" y="181" x2="115" y2="198" eletype="LN" valuetype="FX" minval="false" maxonly="false" daynight="false" radius="0" stroke="4" nr_values="1"/>
        <LayoutElement type="1" color="C0C0C0" x="114" y="198" x2="164" y2="198" eletype="LN" valuetype="FX" minval="false" maxonly="false" daynight="false" radius="0" stroke="5" nr_values="1"/>
        <LayoutElement type="1" color="C0C0C0" x="211" y="180" x2="162" y2="198" eletype="LN" valuetype="FX" minval="false" maxonly="false" daynight="false" radius="0" stroke="4" nr_values="1"/>
        <LayoutElement type="1" color="C0C0C0" x="211" y="180" x2="266" y2="180" eletype="LN" valuetype="FX" minval="false" maxonly="false" daynight="false" radius="0" stroke="4" nr_values="1"/>
        <LayoutElement type="1" color="C0C0C0" x="162" y="198" x2="175" y2="228" eletype="LN" valuetype="FX" minval="false" maxonly="false" daynight="false" radius="0" stroke="3" nr_values="1"/>
        <LayoutElement type="1" color="C0C0C0" x="116" y="198" x2="100" y2="228" eletype="LN" valuetype="FX" minval="false" maxonly="false" daynight="false" radius="0" stroke="3" nr_values="1"/>
        <LayoutElement type="1" color="C0C0C0" x="42" y="228" x2="239" y2="228" eletype="LN" valuetype="FX" minval="false" maxonly="false" daynight="false" radius="0" stroke="3" nr_values="1"/>
        <LayoutElement type="1" color="C0C0C0" x="66" y="259" x2="213" y2="259" eletype="LN" valuetype="FX" minval="false" maxonly="false" daynight="false" radius="0" stroke="6" nr_values="1"/>
        <LayoutElement type="3" text="----------------- Arches ------------------"/>
        <LayoutElement type="1" color="C0C0C0" x="150" y="136" x2="120" y2="195" eletype="AC" valuetype="FX" minval="false" maxonly="false" daynight="false" radius="141" stroke="4" nr_values="1"/>
        <LayoutElement type="1" color="FFFF01" x="150" y="136" x2="122" y2="194" eletype="AF" valuetype="BV" minval="false" maxonly="false" daynight="false" radius="147" stroke="9" nr_values="1"/>
        <LayoutElement type="2" replDC="FFFF01" valDC00="1000" colDC00="00FF40" hideDC00="false" blinkDC00="false" valDC01="750" colDC01="00FF40" hideDC01="false" blinkDC01="false" valDC02="500" colDC02="FFFF00" hideDC02="false" blinkDC02="false" valDC03="250" colDC03="FF8000" hideDC03="false" blinkDC03="false" valDC04="100" colDC04="FF0000" hideDC04="false" blinkDC04="false" valDC05="0" colDC05="000000" hideDC05="false" blinkDC05="false" invertcolor="false"/>
        <LayoutElement type="1" color="C0C0C0" x="138" y="139" x2="342" y2="424" eletype="AC" valuetype="FX" minval="false" maxonly="false" daynight="false" radius="133" stroke="4" nr_values="1"/>
        <LayoutElement type="1" color="FFFF02" x="138" y="139" x2="344" y2="420" eletype="AF" valuetype="GA" minval="false" maxonly="false" daynight="false" radius="139" stroke="9" nr_values="1"/>
        <LayoutElement type="2" replDC="FFFF02" valDC00="40" colDC00="00FF40" hideDC00="false" blinkDC00="false" valDC01="20" colDC01="FFFF00" hideDC01="false" blinkDC01="false" valDC02="10" colDC02="FF8000" hideDC02="false" blinkDC02="false" valDC03="0" colDC03="FF0000" hideDC03="false" blinkDC03="false" invertcolor="false"/>
        <LayoutElement type="3" text="----------------- Date Time -------------"/>
        <LayoutElement type="0" color="FFFFFF" x="133" y="8" fixedtext="false" maxonly="false" daynight="false" eletype="CT" text="$H:$M" font="TINY" halignment="0" precision="0" nr_values="1" sampletext="63312"/>
        <LayoutElement type="0" color="FFFFFF" x="145" y="8" fixedtext="false" maxonly="false" daynight="false" eletype="CT" text="$N/$D" font="TINY" halignment="2" precision="0" nr_values="1" sampletext="63312"/>
        <LayoutElement type="3" text="----------------- Pace -------------"/>
        <LayoutElement type="0" color="FFFFFF" x="18" y="80" fixedtext="true" maxonly="false" daynight="false" eletype="FX" text="Pace" font="XTINY" halignment="2" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="128" y="35" fixedtext="false" maxonly="false" daynight="false" eletype="CP" text="$m:$S" font="MEDIUM" halignment="0" precision="0" nr_values="1" sampletext="1011"/>
        <LayoutElement type="0" color="FFFFFF" x="261" y="80" fixedtext="true" maxonly="false" daynight="false" eletype="FX" text="Max" font="XTINY" halignment="0" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="151" y="35" fixedtext="false" maxonly="false" daynight="false" eletype="MP" text="$M:$S" font="MEDIUM" halignment="2" precision="0" nr_values="1" sampletext="211"/>
        <LayoutElement type="3" text="----------------- Altitude ------------------"/>
        <LayoutElement type="0" color="FFFF05" x="139" y="70" fixedtext="false" maxonly="false" daynight="false" eletype="CL" text="$V" font="TINY" halignment="1" precision="0" nr_values="1" sampletext="14000"/>
        <LayoutElement type="2" replDC="FFFF05" valDC00="140000" colDC00="FF0000" hideDC00="false" blinkDC00="false" valDC01="130000" colDC01="FF8000" hideDC01="false" blinkDC01="false" valDC02="120000" colDC02="FFFF00" hideDC02="false" blinkDC02="false" valDC03="100000" colDC03="00FF00" hideDC03="false" blinkDC03="false" valDC04="80000" colDC04="0080FF" hideDC04="false" blinkDC04="false" valDC05="60000" colDC05="800080" hideDC05="false" blinkDC05="false" valDC06="50000" colDC06="FFFFFF" hideDC06="false" blinkDC06="false" invertcolor="false"/>
        <LayoutElement type="0" color="FFFFFF" x="176" y="75" fixedtext="true" maxonly="false" daynight="false" eletype="FX" text="Ft" font="XTINY" halignment="1" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="3" text="----------------- Center -----------------"/>
        <LayoutElement type="0" color="FFFFF1" x="62" y="96" fixedtext="false" maxonly="false" daynight="false" eletype="CS" text="$V" font="MEDIUM" halignment="0" precision="1" nr_values="1" sampletext="2.5"/>
        <LayoutElement type="0" color="FFFFFF" x="53" y="160" fixedtext="true" maxonly="false" daynight="false" eletype="FX" text="Mph" font="XTINY" halignment="0" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="139" y="122" fixedtext="false" maxonly="false" daynight="false" eletype="DS" text="$V" font="NR_MEDIUM" halignment="1" precision="2" nr_values="1" sampletext="12.56"/>
        <LayoutElement type="0" color="FFFFF1" x="218" y="96" fixedtext="false" maxonly="false" daynight="false" eletype="AS" text="$V" font="MEDIUM" halignment="2" precision="1" nr_values="1" sampletext="4.5"/>
        <LayoutElement type="0" color="FFFFFF" x="253" y="160" fixedtext="true" maxonly="false" daynight="false" eletype="FX" text="Avg" font="XTINY" halignment="0" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="2" replDC="FFFFF1" valDC00="50" colDC00="FF0000" hideDC00="false" blinkDC00="false" valDC01="40" colDC01="FF8000" hideDC01="false" blinkDC01="false" valDC02="30" colDC02="00FF40" hideDC02="false" blinkDC02="false" valDC03="20" colDC03="8FD3FC" hideDC03="false" blinkDC03="false" valDC04="10" colDC04="FFFFFF" hideDC04="false" blinkDC04="false" invertcolor="false"/>
        <LayoutElement type="3" text="----------------- Seperator ------------------"/>
        <LayoutElement type="0" color="FFFFFF" x="101" y="177" fixedtext="false" maxonly="false" daynight="false" eletype="TA" text="$V" font="NR_MILD" halignment="0" precision="0" nr_values="1" sampletext="200"/>
        <LayoutElement type="0" color="FFFFFF" x="176" y="177" fixedtext="false" maxonly="false" daynight="false" eletype="TD" text="$V" font="NR_MILD" halignment="2" precision="0" nr_values="1" sampletext="200"/>
        <LayoutElement type="0" color="FFFF07" x="139" y="197" fixedtext="false" maxonly="false" daynight="false" eletype="HR" text="$V" font="SMALL" halignment="1" precision="0" nr_values="1" sampletext="120"/>
        <LayoutElement type="2" replDC="FFFF07" valDC00="1600" colDC00="FF0000" hideDC00="false" blinkDC00="false" valDC01="1400" colDC01="FF8000" hideDC01="false" blinkDC01="false" valDC02="1200" colDC02="00FF40" hideDC02="false" blinkDC02="false" valDC03="1000" colDC03="00FFFF" hideDC03="false" blinkDC03="false" valDC04="600" colDC04="FFFFFF" hideDC04="false" blinkDC04="false" invertcolor="false"/>
        <LayoutElement type="3" text="----------------- Seperator ------------------"/>
        <LayoutElement type="0" color="FFFFFF" x="139" y="227" fixedtext="false" maxonly="false" daynight="false" eletype="TT" text="$H:$M:$s" font="TINY" halignment="1" precision="0" nr_values="1" sampletext="4374"/>
        <LayoutElement type="3" text="----------------- Seperator ------------------"/>
        <LayoutElement type="0" color="FFFF08" x="139" y="259" fixedtext="false" maxonly="false" daynight="false" eletype="TM" text="$V" font="XTINY" halignment="1" precision="0" nr_values="1" sampletext="100"/>
        <LayoutElement type="2" replDC="FFFF08" valDC00="1000" colDC00="8000FF" hideDC00="false" blinkDC00="false" valDC01="900" colDC01="FF0000" hideDC01="false" blinkDC01="false" valDC02="800" colDC02="FF8000" hideDC02="false" blinkDC02="false" valDC03="700" colDC03="FFFF00" hideDC03="false" blinkDC03="false" valDC04="600" colDC04="0080FF" hideDC04="false" blinkDC04="false" valDC05="500" colDC05="48A4FF" hideDC05="false" blinkDC05="false" valDC06="400" colDC06="B3D9FF" hideDC06="false" blinkDC06="false" valDC07="300" colDC07="D7EBFF" hideDC07="false" blinkDC07="false" valDC08="200" colDC08="FFFFFF" hideDC08="false" blinkDC08="false" valDC09="100" colDC09="FFFFFF" hideDC09="false" blinkDC09="false" invertcolor="false"/>
        <LayoutElement type="0" color="FFFFFF" x="161" y="259" fixedtext="true" maxonly="false" daynight="false" eletype="FX" text=" °F" font="XTINY" halignment="0" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="1" color="FFFF80" x="105" y="267" x2="0" y2="0" eletype="CF" valuetype="PO" minval="false" maxonly="false" daynight="false" radius="5" stroke="1" nr_values="1"/>
        <LayoutElement type="2" replDC="FFFF80" valDC00="10" colDC00="00FF40" hideDC00="false" blinkDC00="false" valDC01="0" colDC01="FF0000" hideDC01="false" blinkDC01="false" invertcolor="false"/>
    </DIYLayout>
    

  • On the edges it is different, there the datafield stays visible after activity stop, is that correct?

    There are 2 kind of stops:
    -stop by pressing pause or autopause if speed comes to zero: the datafields stay at the actual values.
    -stop and save (or discard) the activity: "normal" datafields (speed, average values, calories, elevation gain...) are resetted to zero. Odometer is resetted to the begin-value of the last activity. After reboot it shows the correct value.

  • It looks to me like not the complete string was transferred. Your string should be 1210 characters (bytes) long.
    I suggest:
    Open the setup of the clone in question and copy the string entered there. (Take it out from the setup). Then paste it into a posting here so that we can see if it is complete.

  • Thanks mcinner1, here's the string copied directly out of the designer

    B!!iQ*"2M^fzd=;e!!!k!!iQ*"2M^f%cF!0!!!I!!iQ*"2M^f$]uiF!!!k!!iQ*"Mhgg"[ODB!!"/!!iQ*"Mhgg$pc/J!!"/!!iQ*"MhggyM]@O!!"0!!iQ*"Mhgg%.Y**!!"Q!!iQb"Mhgg!s4-s!?c"!!iQb"Mhgg!s4F[!N7K!!iQ*"Mhgg"G5,6!!z,!!iQ*"Mhggz;Xe"!!z=!!iQ*"i.ph$:xYN!!z=!!iQ*"Mhgg$6mjG!!z=!!iQ*"MhggyxIPz!!z+!!iQ*"2M^f$M,+/!!z[!!iQ*"2M^fz"'5L!!z[!!iQ*"2M^f%eGc3!!z[!!iQ*z/J$i%9*ay!!$%!!iQb"Mhggzgsi]!wXS!"4TK$31z+zr3Wh!wLQ2uiX[!!*$a!!!,b!!*$a!!!)g!ww'!!!!yl!w7QL!!!zq!w3$!!!!"0!!!!!!!!!!!!iQb"MhggzZw42!],t!"4lS$31z,zdQ"=!\Qf-i`rS!!*$a!!!!I!ww'!!!!!5!w7QL!!!!+!w3$!!!!!!!!lCt"onWy!"^9,$H:$M!!lCt"onWyy.ftH$N/$D!!iQ)"TSN%y-5$/Pace!!r)`"onWy!y0@^$m:$S!!iQ)"98E$!!,@hMax!!rZ+"onWyy29'0$M:$S!".0$!rr9(zS@o3$V5QCL.!w3$!!!4Ay!w7QL!!2uD!ww'!!!1Tb!!*$!!!.hI!!%QL!!,'0!.Y'"!!):l!ww*!!!'o5!!iQ)!rrwzzQZK\Ft!"%WB!rr;j!\o3h$V!!iQ)"98E$!!7[.Mph!""dL!rrwz$t8@X$V!"%oR!rr;jyi"pj$V!!iQ)"98E$!!7]LAvg0E;'0!w3$!!!!!S!w7QL!!!!I!!*$a!!!!?!0xV,!!!!5!ww*!!!!!+!".H4!rrwz!)gaH$V!".`D!rrwzy5pHN$V!"1"o!rr9*zU:%A$V0E:f.!w3$!!!!3g!w7QL!!!1I!!*$a!!!/+!!*'!!!!,b!ww*!!!!(y!!l\/zljr)zSW/T$H:$M:$s!"6][!rr9+zQtQo$V=9y%^!.Y(L!!!,b!w3$!!!!+S!w7QL!!!*D!ww'!!!!)5!!%QL!!!(y!(`pc!!!yl!41AY!!!%]!8$Q:!!!$N!ww*!!!!z?!ww*!!!!"0!!iQ)"98E$!!E_( °F!"7-c!ww(L!)tL`!!!!(]XC7!!*$a!!!!+!w3$!!!!!!

  • Sorry - better ok!

    The string copied out from the setup is complete and correct.

    I have installed your layout on my Edge - looks not soo good as on your watch ;-)  but is complete!

  • Well, that's progress..

    When the exact same string is copied into the datafield string on connect iq, and saved, it produces:

  • I had a look at your layout. You are in imperial system (feet)

    I'm not sure if the values given in dynamic colors for elevation are to be set in feet or meters.
    Your layout stops drawing on "Elevation".
    (Althoug the grafics for lines and so on are to be drawn earlier...)

    Just a first try: change something (or omit) dynamic colors for elevation.
    Or move the elevation-section down to the bottom of the element list and look what happens.
    Not sure if that helps...

    My Edge is on metric system and I had no problems.

    EDIT:
    has this exact layout worked before you updated the os of the watch?

  • I am trying to use the designer in a windows 10 installed in a MacBook Pro through boot camp and it does not work. Layouts does not load. Am I doing something wrong?