Scroll to navigation

FRUGEN(1) User Commands FRUGEN(1)

NAME

frugen - Universal, full-featured IPMI FRU Information generator

SYNOPSIS

frugen [options] <filename>

DESCRIPTION

FRU Generator v3.0 (C) 2016-2025, Alexander Amelkin <alexander@amelkin.msk.ru>

OPTIONS

-d <argument>, --board-date <argument>

Set board manufacturing date/time, use "DD/MM/YYYY HH:MM" format. By default, if the date is neithers specified by this option, nor is given in the input template, the resulting output depends on the output format and presence of '-u' option as follows:
| -u specified | -u not specified
-------|----------------------|------------------------- binary | set to 'unspecified' | current system date/time json | not included | "auto" text | "Unspecified" | "Unspecified (auto)" -------|----------------------|-------------------------.

-g <argument>, --debug <argument>

fver - Ignore wrong version in FRU header aver - Ignore wrong version in area headers rver - Ignore wrong record version in multirecord area asum - Ignore wrong area checksum (for standard areas) rhsum - Ignore wrong record header checksum (for multirecord) rdsum - Ignore wrong record data checksum (for multirecord) rdlen - Ignore wrong record data size (for multirecord) aeof - Ignore missing end-of-field in info areas, try to decode till the end reol - Ignore missing EOL record, use any found records.

-h[<argument>], --help[=<argument>]

Display this help. Use any option name as an argument to show help for a single option.
frugen -h # Show full program help frugen -hhelp # Help for long option '--help' frugen -hh # Help for short option '-h'.

-j <argument>, --json <argument>

Load FRU information from a JSON file, use '-' for stdin.

-o <argument>, --out-format <argument>

Output format, one of: binary - Default format when writing to a file.
if 'binary' is explicitly specified:
- Default when writing to stdout.
- Plain text format, no decoding of MR area records.

-r <argument>, --raw <argument>

Load FRU information from a raw binary file, use '-' for stdin.

-s <argument>, --set <argument>

Set a text field in an area to the given value, use given encoding Requires an argument in form [<encoding>:]<area>.<field>=<value> If an encoding is not specified at all, frugen will attempt to preserve the encoding specified in the template or will use 'auto' if none is set there. To force 'auto' encoding you may either specify it explicitly or use a bare ':' without any preceding text.
auto - Autodetect encoding based on the used characters.
among the following.
6bitascii - 6-bit ASCII, available characters:
!"#$%^&'()*+,-./
1234567890:;<=>?
@ABCDEFGHIJKLMNO PQRSTUVWXYZ[\]^_
- BCD+, available characters:
01234567890 -.
text - Plain text (Latin alphabet only).
binary - Binary data represented as a hex string.
Characters: 0123456789ABCDEFabcdef
For area and field names, please refer to example.json
You may specify field name 'custom' to add a new custom field. Alternatively, you may specify field name 'custom.[+]<N>' to replace the value of the custom field number N given in the input template file. A plus sign before <N> indicates that you wish the new field to inserted before the existing entry at rather than replace it.
You may also specify either H/S/F or T/E/L letter for <N> to respectively indicate that you want the entry to be _inserted_ at the head/start/first position in the list, or added at the tail/end/last position.
Examples:
# (encode board.pname as text)
# (preserve original encoding type if possible)
# (auto-encode board.pname as 6-bit ASCII)
# (add a new binary-encoded custom field to board, at the end of list)
# (add a new binary-encoded custom field to board, at the head of list)
# (replace custom field 2 in board with new value)
# (insert a custom field at position 2 in board, old 2 becomes 3).

-t <argument>, --chassis-type <argument>

Set chassis type (hex). Defaults to 0x02 ('Unknown').

-u, --board-date-unspec

Don't use current system date/time for board mfg. date, use 'Unspecified'.

-U <argument>, --mr-uuid <argument>

Add/update a System Unique ID (UUID/GUID) record in MR area.

-v, --verbose

Increase program verbosity (debug) level.

-V, --version

Show the program version.

Example (encode from scratch):

frugen -s board.mfg="Biggest International Corp." \
--set board.pname="Some Cool Product" \ --set text:board.pn="BRD-PN-123" \ --board-date "10/1/2017 12:58:00" \ --set board.serial="01171234" \ --set board.file="Command Line" \ --set binary:board.custom="01020304FEAD1E" \ fru.bin

Example (decode to json, output to stdout):

frugen --raw fru.bin -o json -

Example (modify binary file):

frugen --raw fru.bin \
--set text:board.serial=123456789 \ --set text:board.custom.1="My custom field" \ fru.bin
August 2025 frugen 3.0