-
Notifications
You must be signed in to change notification settings - Fork 4
Changing FRU Current Requirements
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.
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
==========================================
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
[...]
------------------------------------------------------------------
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
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.
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
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
.
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
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
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
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.