-
Notifications
You must be signed in to change notification settings - Fork 5
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 : noneUsing 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
DoneNow we can use frugy to convert from a binary file to a human readable format.
$ frugy -r fru_old.binThis 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.5We 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.ymlThis 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 bytesThe 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.