CERN IPMC / Tile Carrier full resets with TDAQi RTM

Hi IPMC support,

I am currently adapting the MMC firmware for the Tile TDAQi RTM. The MMC reads four temperature sensors via software I2C, along with several alert pins.

While this firmware has run reliably for months in our commercial Kontron carrier, we are experiencing random resets when combining it with our Tile Carrier, which runs on the CERN IPMC project (XML configuration attached).

The main issue is that the carrier resets completely. Even if there were communication drops between the TDAQi RTM and the carrier, it shouldn’t trigger a full carrier reset.

I have made a few observations regarding the issue:

  • The frequency of the resets correlates directly with how often we query the sensor data via ipmitool.
  • If we disable the sensors in the TDAQi RTM MMC firmware, the issue disappears (or becomes unlikely).
  • We encountered a similar issue initially on the Kontron carrier (though in that case, communication was just marked as lost and regained) because interrupts were disabled by default during the software I2C operations. While re-enabling those interrupts completely resolved the Kontron carrier’s instability, the CERN IPMC carrier is still crashing.

Given the previous interrupt issue, I am currently suspecting there might be a stricter watchdog or timeout on the CERN IPMC handling communication with the TDAQi. If there is a collision between reading the I2C sensors and a dropped IPMI message, or if the RTM simply takes a bit too long to respond to an IPMI request, it seems to crash the entire carrier.

Below is the SEL log capturing the event (which occurs without any manual intervention).

Could you help or give some insight what might be triggering this carrier reset or maybe this is an issue that has come up before?

Best regards,
Maximilian

(Attachment config(1).xml is missing)

I did not know that the mail will be pusblished here but as the mail system truncated logs and rejected the attached file will add them here:

TDAQi MMC sensors:

>ipmitool -P "" -I lan -H 199.169.0.214 -B 0 -T 0x8e -b 7 -t 0x90 sdr
RTM HOT_SWAP             | 0x00              | ok
12V                      | 11.94 Volts       | ok
MCP9808_U3_TEMP          | 31.50 degrees C   | ok
MCP9808_U4_TEMP          | 32 degrees C      | ok
MCP9808_U6_TEMP          | 34 degrees C      | ok
MCP9808_U7_TEMP          | 26 degrees C      | ok
TEMP_ALERT               | 0x01              | ok
PM_ALERT                 | 0x02              | ok
FPGA_INIT                | 0x01              | ok
LOW_VOLTAGE              | 0x01              | ok
MMC_VCC                  | 3.26 Volts        | ok

SEL LOG:
(sometimes FRU 0 (Carrier) is also marked as communication lost before the reset)

0x02E9: Event: at: Apr 11 11:22:16 2026; from IPM Controller: 0x90, LUN: 0, Channel: 0
    "Hot Swap" (0xf0) sensor # 1
    "Sensor-specific" (0x6f) event Asserted
    HotSwap: FRU # 5, M4 (Active) -> M7 (Communication Lost), Cause = "Communication Lost or Regained - locally detected" (0x05)
0x02EA: Event: at: Apr 11 11:22:29 2026; from IPM Controller: 0x90, LUN: 0, Channel: 0
    "Hot Swap" (0xf0) sensor # 1
    "Sensor-specific" (0x6f) event Asserted
    HotSwap: FRU # 5, M7 (Communication Lost) -> M0 (Not Installed), Cause = "Surprise State change due to extraction" (0x06)
0x039B: Event: at: Apr 11 11:22:29 2026; from IPM Controller: 0x90, LUN: 0, Channel: 0
    "Hot Swap" (0xf0) sensor # 0
    "Sensor-specific" (0x6f) event Asserted
    HotSwap: FRU # 0, M4 (Active) -> M0 (Not Installed), Cause = "Surprise State change due to extraction" (0x06)
0x027A: Event: at: Apr 11 11:22:30 2026; from IPM Controller: 0x90, LUN: 0, Channel: 0
    "IPMB Link" (0xf1) sensor # 7
    "Sensor-specific" (0x6f) event Asserted
    IPMB-A:  Enabled; State: LocalControl, No failure
    IPMB-B:  Enabled; State: LocalControl, No failure
0x0280: Event: at: Apr 11 11:22:30 2026; from IPM Controller: 0x90, LUN: 0, Channel: 0
    "Hot Swap" (0xf0) sensor # 0
    "Sensor-specific" (0x6f) event Asserted
    HotSwap: FRU # 0, M0 (Not Installed) -> M1 (Inactive), Cause = "Normal State Change" (0x00)
0x0281: Event: at: Apr 11 11:22:30 2026; from IPM Controller: 0x90, LUN: 0, Channel: 0
    "Hot Swap" (0xf0) sensor # 0
    "Sensor-specific" (0x6f) event Asserted
    HotSwap: FRU # 0, M1 (Inactive) -> M2 (Activation Request), Cause = "State Change due to operator changing a Handle latch"  (0x02)
0x0282: Event: at: Apr 11 11:22:30 2026; from IPM Controller: 0x90, LUN: 0, Channel: 0
    "Hot Swap" (0xf0) sensor # 0
    "Sensor-specific" (0x6f) event Asserted
    HotSwap: FRU # 0, M2 (Activation Request) -> M3 (Activation In Process), Cause = "Change Commanded by shelf Manager with Set&nbs p;FRU Activation" (0x01)
0x0283: Event: at: Apr 11 11:22:30 2026; from IPM Controller: 0x90, LUN: 0, Channel: 0
    "Hot Swap" (0xf0) sensor # 0
    "Sensor-specific" (0x6f) event Asserted
    HotSwap: FRU # 0, M3 (Activation In Process) -> M4 (Active), Cause = "Normal State Change" (0x00)
0x00D8: Event: at: Apr 11 11:22:31 2026; from IPM Controller: 0x90, LUN: 0, Channel: 0
    "Hot Swap" (0xf0) sensor # 1
    "Sensor-specific" (0x6f) event Asserted
    HotSwap: FRU # 5, M0 (Not Installed) -> M1 (Inactive), Cause = "Normal State Change" (0x00)
0x00D9: Event: at: Apr 11 11:22:31 2026; from IPM Controller: 0x90, LUN: 0, Channel: 0
    "Hot Swap" (0xf0) sensor # 1
    "Sensor-specific" (0x6f) event Asserted
    HotSwap: FRU # 5, M1 (Inactive) -> M2 (Activation Request), Cause = "State Change due to operator changing a Handle latch"  (0x02)
0x00DA: Event: at: Apr 11 11:22:31 2026; from IPM Controller: 0x90, LUN: 0, Channel: 0
    "Hot Swap" (0xf0) sensor # 1
    "Sensor-specific" (0x6f) event Asserted
    HotSwap: FRU # 5, M2 (Activation Request) -> M3 (Activation In Process), Cause = "Change Commanded by shelf Manager with Set&nbs p;FRU Activation" (0x01)
0x00DB: Event: at: Apr 11 11:22:31 2026; from IPM Controller: 0x90, LUN: 0, Channel: 0
    "Hot Swap" (0xf0) sensor # 1
    "Sensor-specific" (0x6f) event Asserted
    HotSwap: FRU # 5, M3 (Activation In Process) -> M4 (Active), Cause = "Normal State Change" (0x00)

XML config file of the IPMC

<?xml version="1.0" encoding="UTF-8"?>

<IPMC>
	<GeneralConfig>

		<DeviceID>0x12</DeviceID>
		<DeviceRevision>0x00</DeviceRevision>
		<ManufacturerID>0x000060</ManufacturerID>
		<ProductID>0x1236</ProductID>

		<ManufacturingDate>06/01/2017</ManufacturingDate>

		<BoardManuf>IFIC/TileCal</BoardManuf>
		<BoardName>PPRCARRIERBOARD</BoardName>
		<BoardSN>00001</BoardSN>
		<BoardPN>P00000001</BoardPN>

		<ProductManuf>IFIC</ProductManuf>
		<ProductName>Tile ATCA Carrier Board</ProductName>
		<ProductPN>PN00001</ProductPN>
		<ProductSN>0000001</ProductSN>
		<ProductVersion type="major">1</ProductVersion>
		<ProductVersion type="minor">21</ProductVersion>

		<MaxCurrent>35.0</MaxCurrent>
		<MaxInternalCurrent>1.0</MaxInternalCurrent>

		<!-- Hardware -->
		<HandleSwitch active="HIGH" inactive="LOW" />

        <!-- <ResetOnWrongHAEn /> -->
        <!-- <PowerMonitoringEn /> -->
        <!-- <AlertMonitoringEn />-->

        <!-- Shutdown timeout in tens of ms (optional - if not defined: 10s) -->
        <shutdownTimeout>0</shutdownTimeout>

        <nonVolatileParams forced="true" />
	</GeneralConfig>

    <SerialInterfaces>
        <!--
            This part allows connecting the UART port to interfaces.

            The ports 0 to 2 are linked to the hardware:
                port 0: Edge connector (Tx: 57 / Rx: 60)
                port 1: Edge connector (Tx: 58 / Rx: 61)
                port 2: Optionnal UART (Tx: 75 / Rx: 76)

            Warning: Enabling port 2 will automatically set the GPIOs in UART mode!

            For each bord, the following name can be used:
                "SOL": Serial Over Lan
                "SDI": Serial Debug Interface
                "PI": Payload Interface

            The baudrate can be set using the baudrate param. By default,
            it is configured to 115200b/s.
        -->
        <Connect port="0" name="SDI" baudrate="115200"/>
       <!--<Connect port="1" name="PI"  baudrate="115200"/> -->
       <!-- <Connect port="2" name="SOL"  baudrate="115200"/> -->
         <RedirectSDItoSOL/>

    </SerialInterfaces>

	<PowerManagement>

		<PowerONSeq>
			<step>PSQ_ENABLE_SIGNAL(CFG_PAYLOAD_DCDC_EN_SIGNAL)</step>
			<step>PSQ_END</step>
		</PowerONSeq>

		<PowerOFFSeq>
			<step>PSQ_DISABLE_SIGNAL(CFG_PAYLOAD_DCDC_EN_SIGNAL)</step>
			<step>PSQ_END</step>
		</PowerOFFSeq>

	</PowerManagement>

	<LANConfig>

		<MACAddr>0A:0A:0A:0A:0A:86</MACAddr>
		<NetMask>255.255.255.0</NetMask>
		<GatewayIP>192.138.1.3</GatewayIP>

        <!-- <EnableDHCP /> -->

		<IPAddrList> <!-- Default IP Addresses (used if DHCP is not active) -->
			<IPAddr slot_addr="default">192.168.1.35</IPAddr>
			<IPAddr slot_addr="0x41">192.168.1.20</IPAddr>
			<IPAddr slot_addr="0x42">192.168.1.21</IPAddr>
			<IPAddr slot_addr="0x43">192.168.1.22</IPAddr>
			<IPAddr slot_addr="0x44">192.168.1.23</IPAddr>
			<IPAddr slot_addr="0x45">192.168.1.24</IPAddr>
			<IPAddr slot_addr="0x46">192.168.1.25</IPAddr>
			<IPAddr slot_addr="0x47">192.168.1.26</IPAddr>
			<IPAddr slot_addr="0x48">192.168.1.27</IPAddr>
			<IPAddr slot_addr="0x49">192.168.1.28</IPAddr>
			<IPAddr slot_addr="0x4a">192.168.1.29</IPAddr>
			<IPAddr slot_addr="0x4b">192.168.1.30</IPAddr>
			<IPAddr slot_addr="0x4c">192.168.1.31</IPAddr>
			<IPAddr slot_addr="0x4d">192.168.1.32</IPAddr>
			<IPAddr slot_addr="0x4e">192.168.1.33</IPAddr>
			<IPAddr slot_addr="0x4f">192.168.1.34</IPAddr>
			<IPAddr slot_addr="0x50">192.168.1.35</IPAddr>
		</IPAddrList>

	</LANConfig>



<AMCSlots>

 
		<AMC site="1">
			<PhysicalPort>1</PhysicalPort>
			<MaxCurrent>6</MaxCurrent>
			<PowerGoodTimeout>3000</PowerGoodTimeout>
			<DCDCEfficiency>85</DCDCEfficiency>
				<Invert>
				<Pin>MPEN</Pin>
				<Pin>PWREN</Pin>
				<Pin>PWRGOOD</Pin>
				<Pin>MPGOOD</Pin>
			</Invert>	
		</AMC>

		<AMC site="2">
			<PhysicalPort>2</PhysicalPort>
			<MaxCurrent>6</MaxCurrent>
			<PowerGoodTimeout>3000</PowerGoodTimeout>
			<DCDCEfficiency>85</DCDCEfficiency>
				<Invert>
				<Pin>MPEN</Pin>
				<Pin>PWREN</Pin>
				<Pin>PWRGOOD</Pin>
				<Pin>MPGOOD</Pin>
			</Invert>	
		</AMC>

		<AMC site="3">
			<PhysicalPort>3</PhysicalPort>
			<MaxCurrent>6</MaxCurrent>
			<PowerGoodTimeout>3000</PowerGoodTimeout>
			<DCDCEfficiency>85</DCDCEfficiency>
				<Invert>
				<Pin>MPEN</Pin>
				<Pin>PWREN</Pin>
				<Pin>PWRGOOD</Pin>
				<Pin>MPGOOD</Pin>
			</Invert>	
		</AMC>


		<AMC site="4"> 
			<PhysicalPort>4</PhysicalPort>  
			<MaxCurrent>6</MaxCurrent>
			<PowerGoodTimeout>3000</PowerGoodTimeout>
			<DCDCEfficiency>85</DCDCEfficiency>

			<Invert>
				<Pin>MPEN</Pin>
				<Pin>PWREN</Pin>
				<Pin>PWRGOOD</Pin>
				<Pin>MPGOOD</Pin>
			</Invert>	

		</AMC>

	</AMCSlots>


	<iRTMSlot>
		<PhysicalPort>0</PhysicalPort>
		<MaxCurrent>6.0</MaxCurrent>
		<Address>0xea</Address>
		<PowerGoodTimeout>3000</PowerGoodTimeout>
		<DCDCEfficiency>85</DCDCEfficiency>

		<Invert>
				<Pin>MPEN</Pin>
				<Pin>PWREN</Pin>
				<Pin>PWRGOOD</Pin>
				<Pin>MPGOOD</Pin>
			</Invert>	
	</iRTMSlot>

 
	<SensorList>

		<Sensors type="raw" global_define="CFG_SENSOR_MCP9808" function_name="SENSOR_MCP9808" rawType="MCP9808"> 
			 
			<Sensor> 
				<Name>MCP9808_U7</Name> 				
				<Type>Temperature</Type> 
				<Units>degrees C</Units> 
				
				<NominalReading>25</NominalReading>
				<NormalMaximum>60</NormalMaximum>
				<NormalMinimum>-10</NormalMinimum>
				
				<Point id="0" x="0" y="0" />
				<Point id="1" x="5" y="5" />

				<Thresholds>
					<UpperNonRecovery>100</UpperNonRecovery>
					<UpperCritical>80</UpperCritical>
					<UpperNonCritical>50</UpperNonCritical>
					<LowerNonRecovery>-20</LowerNonRecovery>
					<LowerCritical>-10</LowerCritical>
					<LowerNonCritical>0</LowerNonCritical>
				</Thresholds>

				<Params> 
					<p type="record_id"></p> <!-- mandatory -->
					<p type="user">0x230</p> <!--unsigned short i2cAddr-->
					<p type="user">UCGH | LCGL</p> 
				</Params> 
		
				<AssertEvMask>0x0A80</AssertEvMask>
				<DeassertEvMask>0x7A80</DeassertEvMask>
				<DiscreteRdMask>0x3838</DiscreteRdMask>
				<AnalogDataFmt>2S_COMPL</AnalogDataFmt>
				<PosHysteresis>2</PosHysteresis>
				<NegHysteresis>2</NegHysteresis>
				<MaxReading>127</MaxReading>
				<MinReading>-128</MinReading>		
			</Sensor> 

			<Sensor> 
				<Name>MCP9808_U48</Name> 				
				<Type>Temperature</Type> 
				<Units>degrees C</Units> 
				
				<NominalReading>25</NominalReading>
				<NormalMaximum>60</NormalMaximum>
				<NormalMinimum>-10</NormalMinimum>
				
				<Point id="0" x="0" y="0" />
				<Point id="1" x="5" y="5" />

				<Thresholds>
					<UpperNonRecovery>100</UpperNonRecovery>
					<UpperCritical>80</UpperCritical>
					<UpperNonCritical>50</UpperNonCritical>
					<LowerNonRecovery>-20</LowerNonRecovery>
					<LowerCritical>-10</LowerCritical>
					<LowerNonCritical>0</LowerNonCritical>
				</Thresholds>

				<Params> 
					<p type="record_id"></p> <!-- mandatory -->
					<p type="user">0x232</p> <!--unsigned short i2cAddr-->
					<p type="user">UCGH | LCGL</p> 
				</Params> 
		
				<AssertEvMask>0x0A80</AssertEvMask>
				<DeassertEvMask>0x7A80</DeassertEvMask>
				<DiscreteRdMask>0x3838</DiscreteRdMask>
				<AnalogDataFmt>2S_COMPL</AnalogDataFmt>
				<PosHysteresis>2</PosHysteresis>
				<NegHysteresis>2</NegHysteresis>
				<MaxReading>127</MaxReading>
				<MinReading>-128</MinReading>		
			</Sensor> 

			<Sensor> 
				<Name>MCP9808_U39</Name> 				
				<Type>Temperature</Type> 
				<Units>degrees C</Units> 
				
				<NominalReading>25</NominalReading>
				<NormalMaximum>60</NormalMaximum>
				<NormalMinimum>-10</NormalMinimum>
				
				<Point id="0" x="0" y="0" />
				<Point id="1" x="5" y="5" />

				<Thresholds>
					<UpperNonRecovery>100</UpperNonRecovery>
					<UpperCritical>80</UpperCritical>
					<UpperNonCritical>50</UpperNonCritical>
					<LowerNonRecovery>-20</LowerNonRecovery>
					<LowerCritical>-10</LowerCritical>
					<LowerNonCritical>0</LowerNonCritical>
				</Thresholds>

				<Params> 
					<p type="record_id"></p> <!-- mandatory -->
					<p type="user">0x238</p> <!--unsigned short i2cAddr-->
					<p type="user">UCGH | LCGL</p> 
				</Params> 
		
				<AssertEvMask>0x0A80</AssertEvMask>
				<DeassertEvMask>0x7A80</DeassertEvMask>
				<DiscreteRdMask>0x3838</DiscreteRdMask>
				<AnalogDataFmt>2S_COMPL</AnalogDataFmt>
				<PosHysteresis>2</PosHysteresis>
				<NegHysteresis>2</NegHysteresis>
				<MaxReading>127</MaxReading>
				<MinReading>-128</MinReading>		
			</Sensor> 

			<Sensor> 
				<Name>MCP9808_U53</Name> 				
				<Type>Temperature</Type> 
				<Units>degrees C</Units>

				<AutoEnable>yes</AutoEnable>
				
				<NominalReading>25</NominalReading>
				<NormalMaximum>60</NormalMaximum>
				<NormalMinimum>-10</NormalMinimum>
				
				<Point id="0" x="0" y="0" />
				<Point id="1" x="5" y="5" />

				<Thresholds>
					<UpperNonRecovery>100</UpperNonRecovery>
					<UpperCritical>80</UpperCritical>
					<UpperNonCritical>50</UpperNonCritical>
					<LowerNonRecovery>-20</LowerNonRecovery>
					<LowerCritical>-10</LowerCritical>
					<LowerNonCritical>0</LowerNonCritical>
				</Thresholds>

				<Params> 
					<p type="record_id">1</p> <!-- mandatory -->
					<p type="user">0x234</p> <!--unsigned short i2cAddr-->
					<p type="user">UCGH | LCGL</p> 
				</Params> 
		
				<AssertEvMask>0x0A80</AssertEvMask>
				<DeassertEvMask>0x7A80</DeassertEvMask>
				<DiscreteRdMask>0x3838</DiscreteRdMask>
				<AnalogDataFmt>2S_COMPL</AnalogDataFmt>
				<PosHysteresis>2</PosHysteresis>
				<NegHysteresis>2</NegHysteresis>
				<MaxReading>127</MaxReading>
				<MinReading>-128</MinReading>		
			</Sensor> 

			<Sensor> 
				<Name>MCP9808_U26</Name> 				
				<Type>Temperature</Type> 
				<Units>degrees C</Units> 
				
				<NominalReading>25</NominalReading>
				<NormalMaximum>60</NormalMaximum>
				<NormalMinimum>-10</NormalMinimum>
				
				<Point id="0" x="0" y="0" />
				<Point id="1" x="5" y="5" />

				<Thresholds>
					<UpperNonRecovery>100</UpperNonRecovery>
					<UpperCritical>80</UpperCritical>
					<UpperNonCritical>50</UpperNonCritical>
					<LowerNonRecovery>-20</LowerNonRecovery>
					<LowerCritical>-10</LowerCritical>
					<LowerNonCritical>0</LowerNonCritical>
				</Thresholds>

				<Params> 
					<p type="record_id">A</p> <!-- mandatory -->
					<p type="user">0x236</p> <!--unsigned short i2cAddr-->
					<p type="user">UCGH | LCGL</p> 
				</Params> 
		
				<AssertEvMask>0x0A80</AssertEvMask>
				<DeassertEvMask>0x7A80</DeassertEvMask>
				<DiscreteRdMask>0x3838</DiscreteRdMask>
				<AnalogDataFmt>2S_COMPL</AnalogDataFmt>
				<PosHysteresis>2</PosHysteresis>
				<NegHysteresis>2</NegHysteresis>
				<MaxReading>127</MaxReading>
				<MinReading>-128</MinReading>		
			</Sensor>
		</Sensors>

		<Sensors type="raw" global_define="CFG_SENSOR_INA220" function_name="SENSOR_INA220" rawType="INA220"> 			 
			<Sensor> 
				<Name>INA220_U6</Name> 

				<Type>Current</Type> 
				<Units>Amps</Units>
								
				<NominalReading>0.3</NominalReading>
				<NormalMaximum>0.3</NormalMaximum>
				<NormalMinimum>0</NormalMinimum>
				
				<Point id="0" x="0" y="0" />
				<Point id="1" x="1" y="0.03" /> <!-- Resolucion 0.03A -->

				<Thresholds>
					<UpperNonRecovery>7.65</UpperNonRecovery>
					<UpperCritical>6</UpperCritical>
					<UpperNonCritical>5</UpperNonCritical>
					<LowerNonRecovery>0</LowerNonRecovery>
					<LowerCritical>0</LowerCritical>
					<LowerNonCritical>0</LowerNonCritical>
				</Thresholds>
				
				<Params> 
					<p type="record_id"></p>  <!-- mandatory --> 
					<p type="user">0x282</p> <!--unsigned short i2cAddr-->
					<p type="user">1</p> <!--unsigned char mode (1: Current; 2: Vbus; 3: Power)-->
					<p type="user">UCGH | LCGL</p> 
				</Params> 

				<AssertEvMask>0xFFFF</AssertEvMask>
				<DeassertEvMask>0xFFFF</DeassertEvMask>
				<DiscreteRdMask>0xFFFF</DiscreteRdMask>
				<AnalogDataFmt>UNSIGNED</AnalogDataFmt>
				<PosHysteresis>0.1</PosHysteresis>
				<NegHysteresis>0.1</NegHysteresis>
				<MaxReading>7.65</MaxReading>
				<MinReading>0</MinReading>				
			</Sensor> 

			<Sensor>
				<Name>INA220_U13</Name> 

				<Type>Current</Type> 
				<Units>Amps</Units>
								
				<NominalReading>0.3</NominalReading>
				<NormalMaximum>0.3</NormalMaximum>
				<NormalMinimum>0</NormalMinimum>
				
				<Point id="0" x="0" y="0" />
				<Point id="1" x="1" y="0.03" /> <!-- Resolucion 0.03A -->

				<Thresholds>
					<UpperNonRecovery>7.65</UpperNonRecovery>
					<UpperCritical>6</UpperCritical>
					<UpperNonCritical>5</UpperNonCritical>
					<LowerNonRecovery>0</LowerNonRecovery>
					<LowerCritical>0</LowerCritical>
					<LowerNonCritical>0</LowerNonCritical>
				</Thresholds>
				
				<Params> 
					<p type="record_id"></p>  <!-- mandatory --> 
					<p type="user">0x284</p> <!--unsigned short i2cAddr-->
					<p type="user">1</p> <!--unsigned char mode (1: Current; 2: Vbus; 3: Power)-->
					<p type="user">UCGH | LCGL</p> 
				</Params> 

				<AssertEvMask>0xFFFF</AssertEvMask>
				<DeassertEvMask>0xFFFF</DeassertEvMask>
				<DiscreteRdMask>0xFFFF</DiscreteRdMask>
				<AnalogDataFmt>UNSIGNED</AnalogDataFmt>
				<PosHysteresis>0.1</PosHysteresis>
				<NegHysteresis>0.1</NegHysteresis>
				<MaxReading>7.65</MaxReading>
				<MinReading>0</MinReading>				
			</Sensor> 			
					
			<Sensor>
				<Name>INA220_U22</Name>
				
				<Type>Current</Type> 
				<Units>Amps</Units>

				<NominalReading>0.3</NominalReading>
				<NormalMaximum>0.3</NormalMaximum>
				<NormalMinimum>0</NormalMinimum>
				
				<Point id="0" x="0" y="0" />
				<Point id="1" x="1" y="0.03" /> <!-- Resolucion 0.03A -->

				<Thresholds>
					<UpperNonRecovery>7.65</UpperNonRecovery>
					<UpperCritical>6</UpperCritical>
					<UpperNonCritical>5</UpperNonCritical>
					<LowerNonRecovery>0</LowerNonRecovery>
					<LowerCritical>0</LowerCritical>
					<LowerNonCritical>0</LowerNonCritical>
				</Thresholds>
				
				<Params> 
					<p type="record_id"></p>  <!-- mandatory --> 
					<p type="user">0x286</p> <!--unsigned short i2cAddr-->
					<p type="user">1</p> <!--unsigned char mode (1: Current; 2: Vbus; 3: Power)-->
					<p type="user">UCGH | LCGL</p> 
				</Params> 

				<AssertEvMask>0xFFFF</AssertEvMask>
				<DeassertEvMask>0xFFFF</DeassertEvMask>
				<DiscreteRdMask>0xFFFF</DiscreteRdMask>
				<AnalogDataFmt>UNSIGNED</AnalogDataFmt>
				<PosHysteresis>0.1</PosHysteresis>
				<NegHysteresis>0.1</NegHysteresis>
				<MaxReading>7.65</MaxReading>
				<MinReading>0</MinReading>				
			</Sensor> 			

			<Sensor>
				<Name>INA220_U29</Name>
				
				<Type>Current</Type> 
				<Units>Amps</Units> 
				
				<NominalReading>0.3</NominalReading>
				<NormalMaximum>0.3</NormalMaximum>
				<NormalMinimum>0</NormalMinimum>
				
				<Point id="0" x="0" y="0" />
				<Point id="1" x="1" y="0.03" /> <!-- Resolucion 0.03A -->

				<Thresholds>
					<UpperNonRecovery>7.65</UpperNonRecovery>
					<UpperCritical>6</UpperCritical>
					<UpperNonCritical>5</UpperNonCritical>
					<LowerNonRecovery>0</LowerNonRecovery>
					<LowerCritical>0</LowerCritical>
					<LowerNonCritical>0</LowerNonCritical>
				</Thresholds>
				
				<Params> 
					<p type="record_id"></p>  <!-- mandatory --> 
					<p type="user">0x288</p> <!--unsigned short i2cAddr-->
					<p type="user">1</p> <!--unsigned char mode (1: Current; 2: Vbus; 3: Power)-->
					<p type="user">UCGH | LCGL</p> 
				</Params> 

				<AssertEvMask>0xFFFF</AssertEvMask>
				<DeassertEvMask>0xFFFF</DeassertEvMask>
				<DiscreteRdMask>0xFFFF</DiscreteRdMask>
				<AnalogDataFmt>UNSIGNED</AnalogDataFmt>
				<PosHysteresis>0.1</PosHysteresis>
				<NegHysteresis>0.1</NegHysteresis>
				<MaxReading>7.65</MaxReading>
				<MinReading>0</MinReading>				
			</Sensor> 

			<Sensor>
				<Name>INA220_U31</Name>
				
				<Type>Current</Type> 
				<Units>Amps</Units> 
				
				<NominalReading>0.3</NominalReading>
				<NormalMaximum>0.3</NormalMaximum>
				<NormalMinimum>0</NormalMinimum>
				
				<Point id="0" x="0" y="0" />
				<Point id="1" x="1" y="0.03" /> <!-- Resolucion 0.03A -->

				<Thresholds>
					<UpperNonRecovery>7.65</UpperNonRecovery>
					<UpperCritical>6</UpperCritical>
					<UpperNonCritical>5</UpperNonCritical>
					<LowerNonRecovery>0</LowerNonRecovery>
					<LowerCritical>0</LowerCritical>
					<LowerNonCritical>0</LowerNonCritical>
				</Thresholds>
				
				<Params> 
					<p type="record_id"></p>  <!-- mandatory --> 
					<p type="user">0x280</p> <!--unsigned short i2cAddr-->
					<p type="user">1</p> <!--unsigned char mode (1: Current; 2: Vbus; 3: Power)-->
					<p type="user">UCGH | LCGL</p> 
				</Params> 

				<AssertEvMask>0xFFFF</AssertEvMask>
				<DeassertEvMask>0xFFFF</DeassertEvMask>
				<DiscreteRdMask>0xFFFF</DiscreteRdMask>
				<AnalogDataFmt>UNSIGNED</AnalogDataFmt>
				<PosHysteresis>0.1</PosHysteresis>
				<NegHysteresis>0.1</NegHysteresis>
				<MaxReading>7.65</MaxReading>
				<MinReading>0</MinReading>				
			</Sensor>

			<Sensor>
				<Name>INA220_U31_Vb</Name>
				
				<Type>Voltage</Type> 
				<Units>Volts</Units> 
				
				<NominalReading>0.3</NominalReading>
				<NormalMaximum>12.1</NormalMaximum>
				<NormalMinimum>11.9</NormalMinimum>
				
				<Point id="0" x="0" y="0" />
				<Point id="1" x="1" y="0.06" /> <!-- Resolucion 60mV -->

				<Thresholds>
					<UpperNonRecovery>14</UpperNonRecovery>
					<UpperCritical>13</UpperCritical>
					<UpperNonCritical>12.5</UpperNonCritical>
					<LowerNonRecovery>11</LowerNonRecovery>
					<LowerCritical>9</LowerCritical>
					<LowerNonCritical>0</LowerNonCritical>
				</Thresholds>
				
				<Params> 
					<p type="record_id"></p>  <!-- mandatory --> 
					<p type="user">0x280</p> <!--unsigned short i2cAddr-->
					<p type="user">2</p> <!--unsigned char mode (1: Current; 2: Vbus; 3: Power)-->
					<p type="user">UCGH | LCGL</p> 
				</Params> 

				<AssertEvMask>0xFFFF</AssertEvMask>
				<DeassertEvMask>0xFFFF</DeassertEvMask>
				<DiscreteRdMask>0xFFFF</DiscreteRdMask>
				<AnalogDataFmt>UNSIGNED</AnalogDataFmt>
				<PosHysteresis>0.1</PosHysteresis>
				<NegHysteresis>0.1</NegHysteresis>
				<MaxReading>15.3</MaxReading>
				<MinReading>0</MinReading>				
			</Sensor>
		</Sensors>
	</SensorList>
</IPMC>

Hello Maximilian,

thank you, indeed the XML attachment did not go through before. Could you please also share the output of the IPMC debug UART (SDI)? Also, do you have any custom sensors drivers or user code (e.g.g OEM commands, etc) running on the IPMC?

cheers,

Stefan