Category Archives: FreeSSM

Logger Definition Formats

This is about logger definition formats and conversion between formats.

See page protocols for details about SSM2 and other diagnostic procotols.

Example values to be used for well known parameter Coolant Temperature at SSM2 address 0x000008. See data snippets below table.

Topic RomRaider FreeSSM

Latest definitions
Storage format XML data file Text in source code file, columns separated by semicolon.
Filename logger.xml SSMprotocol2_def_en.cpp (English)

SSMprotocol2_def_de.cpp (German)



Starting at 8

(RR includes the first 8 Init-bytes which are SSMID[3] + ROMID[5])


=FreeSSMByteIndex + 7

Starting at 1

1st column

example value: 1

= RRecubyteindex – 7

BitNr of InitByte indicating value is supported by vehicle 0-7


=FreeSSMbitNr – 1


2nd column

example value: 7

= RRecubit + 1

Control Unit target="1"
→ ECU;
“2” → TCU
“3” → valid for both ECU & TCU
3rd column
bit 0: ECU, bit 1: TCU
(value 1 → ECU, 2 → TCU, 3 → valid for both ECU & TCU)

(pseudo address/ID, it is not an actual memory address!)

in hexadecimal e.g.


Multi-byte values, e.g. 0xE & 0xF: <address length="2">0x00000E</address>

4th column (higher address, for low byte)
2-byte values: 5th column for lower address representing high byte, otherwise empty; in hexadecimal, (values with >2 bytes not possible!?)000008
Name name="Coolant Temperature" 6th column
Coolant Temperature
Unit Can define multiple units by adding additional conversion elements.
<conversion units="C" expr=... />
<conversion units="F" expr=... />
7th column
(single unit only?)
Formula Plain text formula in standard math notation.
8th column
Sequential: one operator with following value at a time, easy to parse by program but not so nice for humans. Supports switching (e.g. 0=-60,1=-60,2=-51, …)
Output Decimals format="0"
(example for 2 decimals: format="0.00")
9th = last column
(2 decimals: 2)


file logger_METRIC_EN_vXXX.xml

<?xml version="1.0" encoding="UTF-8"?>
<parameter id="P2" name="Coolant Temperature" desc="P2" ecubyteindex="8" ecubit="6" target="1">
        <conversion units="C" expr="x-40" format="0" gauge_min="-20" gauge_max="120" gauge_step="20" />
        <conversion units="F" expr="32+9*(x-40)/5" format="0" gauge_min="0" gauge_max="240" gauge_step="30" />


file src/SSMprotocol2_def_en.cpp

<< "1;7;1;000008;;Coolant Temperature;°C;-40;0"