Skip to content

Changing FRU Current Requirements

Jan Marjanovic edited this page Oct 29, 2021 · 7 revisions

Each FRU in MicroTCA system needs to declare its power consumption with Module Current Requirements Record. MCH uses this value to budget the power available from the power modules.

In some cases the requested power from FRUs exceeds the available power from the power modules. Usually this is "only" a management issue, the real power consumption of the card can be much lower. A difference between the declared power consumption and actual power consumption is especially pronounced for boards where user can change the application, e.g. FMC carriers.

This guide describes how to reduce the "advertised" current requirement to match the actual application.

Inspecting the situation

Using show_fru (on NAT MCH, list_frus_present on Vadatech) we list all the FRUs in the system. In our example we will change the Module Current Requirement record of the DAMC-FMC25 in slot AMC3.

nat> show_fru

FRU Information:
----------------
 FRU  Device   State  Name
==========================================
  0   MCH       M4    NAT-MCH-CM
  3   mcmc1     M4    NAT-MCH-MCMC
  5   AMC1      M4    CCT AM 902/411
  7   AMC3      M1    DAMC-FMC25_D
  9   AMC5      M4    DAMC-DS812ZUP
 40   CU1       M4    Schroff uTCA CU
 50   PM1       M4    NAT-PM-AC1000
 60   Clock1    M4    MCH-Clock
 61   HubMod1   M4    MCH-PCIe
==========================================

Listing the existing FRU information

We can use the show_fruinfo command (on NAT MCHs) to display the information about an individual board. Here we see that the board currently requests 6.5 amps.

nat> show_fruinfo 7
---------------------------------------
FRU Info for device 7:
---------------------------------------
Common Header    : 0x01 0x00 0x00 0x01 0x06 0x0c 0x00 0xec 
---------------------------------------
[...]

Record(0): Type ID=0xc0, PICMG Record ID=0x16, offset=0x000, len=11
Module Current Requirements Record:
    Current Draw: 6.5 A

[...]

By observing the actual current consumption from the sensors of the Power Module, we can determine that the board actually consumes 1.25 A. If we know that the payload application will not significantly change, we can assume that the current consumption will also not significantly change. It is therefore safe to reduce the requested current consumption from 6.5 A, to e.g. 4.0 A.

nat> show_sensorinfo 50
Sensor Information for FRU 50 / PM1
==================================================================
  #   SDRType  Sensor Entity Inst  Value   State    Name
------------------------------------------------------------------
  -   MDevLoc          0x0a  0x61                    NAT-PM-AC1000

[...]
 18   Compact  Current 0x0a  0x61  1.25 A     ok     I_CH07
[...]
------------------------------------------------------------------

Downloading (reading) the FRU from the board

We use the ipmitool .. fru command to download the FRU from the board with the following command:

$ ipmitool -H <HOSTNAME> -P "" -B 0 -b 7 -T 0x82 -t <IPMB_ADDR> fru

<HOSTNAME> should be replaced with the hostname (or IP address) of the MCH, and

<IPMB_ADDR> should be replaced with the IPMB address of the board, e.g. 0x72, 0x74, ...

Example:

$ ipmitool -H mch-example.local -P "" -B 0 -b 7 -T 0x82 -t 0x76 fru
FRU Device Description : Builtin FRU Device (ID 0)
 Board Mfg Date        : Mon Jan  1 01:00:00 1996
 Board Mfg             : DESY
 Board Product         : DAMC-FMC25
 Board Serial          : 0000
 Board Part Number     : 0000
 Product Manufacturer  : DESY
 Product Name          : DAMC-FMC25
 Product Part Number   : 0000
 Product Version       : 0000
 Product Serial        : 0000
 Product Asset Tag     : none

Using only fru command just prints the content of the FRU to the screen, to download the FRU to a file we want to use fru read command:

$ ipmitool -H mch-example.local -P "" -B 0 -b 7 -T 0x82 -t 0x76 fru read 0 fru_old.bin
Fru Size         : 256 bytes
Done

Parsing the FRU with frugy

Now we can use frugy to convert from a binary file to a human readable format.

$ frugy -r fru_old.bin

This will create a file called fru_old.yml with the content of the FRU in YAML format.

Changing the FRU

First we create a copy of the old YAML file.

cp fru_old.yml fru_new.yml

Then we open the new YAML file in a text editor and find the lines

- type: ModuleCurrentRequirements
  current_draw: 6.5

We change this to

- type: ModuleCurrentRequirements
  current_draw: 4.0 

Converting the YAML back to binary

We use frugy again, this time in the other direction, to create a .bin file from our newly-modified YAML:

$ frugy -w fru_new.yml

This will create a fru_new.bin which can be now uploaded to the board with the ipmitool.

Uploading (writing) the FRU to the board

We use fru write command to

$ ipmitool -H mch-example.local -P "" -B 0 -b 7 -T 0x82 -t 0x76 fru write 0 fru_new.bin
Fru Size         : 256 bytes
Size to Write    : 202 bytes

Reseting the board

The FRU is now updated, we now only have to reset the board for the new values to take effect.

This can be done either by completely removing the board from the crate, or by issuing the hard_reset command:

nat> hard_reset 7      
pm_mmcHardReset: reset FRU 7 time to restart 5 s
pm_shutDownChan(50,7): -PP-E-MP
.AMC3(7): INFO - AMC removed in state M0
clk_disableFCLK(60): disabling FCLK-A for AMC3
LSHM: FRU 7 sensor 136 LUN 0 'Hot Swap' hotswap M0->M0
AMC3(7): stop management task 'AM76' for i2c 0x76
....nat> LSHM: CM sensor 254 LUN 2 <unknown> hotswap M0->M1

Final result

We can now use show_fruinfo to check the updated value of the FRU on the board.

nat> show_fruinfo 7
---------------------------------------
FRU Info for device 7:
---------------------------------------
Common Header    : 0x01 0x00 0x00 0x01 0x06 0x0c 0x00 0xec 
---------------------------------------
[...]

Record(0): Type ID=0xc0, PICMG Record ID=0x16, offset=0x000, len=11
Module Current Requirements Record:
    Current Draw: 4.0 A

Conclusion

This guide demonstrates how to use frugy to change a field in FRU, in this case the module current requirement.

Join us on our training courses to learn more about ipmitool and other details of MicroTCA systems.