FRUGEN(1)
π NAME π
frugen β the universal, full-featured IPMI FRU Information generator, bestie. She does it all and she does it beautifully. β¨
π¦ SYNOPSIS π¦
frugen [options] <filename>
πΈ DESCRIPTION πΈ
Oh so you're meeting the icon herself, FRU Generator v3.1, (C) 2016-2025, Alexander Amelkin <alexander@amelkin.msk.ru>. Yes she's been serving since 2016 and she has not lost a step. Periodt. π
Ngl it's giving "this is the tool that makes IPMI FRU information and refuses to be messy about it." So like, the manual name situation: this one lives in section 1 of the manual (FRUGEN(1)), under the User Commands category, iykyk. π
β¨ OPTIONS β¨
-d <argument>,--board-date <argument>β Set the board manufacturing date/time, fr fr use the"DD/MM/YYYY HH:MM"format. And here's the tea π΅: by default, if the date is neither specified by this option, nor given in the input template, the resulting output depends on the output format and on whether-uis present, like this:binaryformat:- with
-uspecified β set to'unspecified' - with
-unot specified β current system date/time
- with
jsonformat:- with
-uspecified β not included - with
-unot specified β"auto"
- with
textformat:- with
-uspecified β"Unspecified" - with
-unot specified β"Unspecified (auto)"
- with
-g <argument>,--debug <argument>β Set a debug flag (use it multiple times for multiple flags, stack 'em up π ):fverβ Ignore wrong version in FRU headeraverβ Ignore wrong version in area headersrverβ Ignore wrong record version in multirecord areaasumβ 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 endreolβ Ignore missing EOL record, use any found records.
-h[<argument>],--help[=<argument>]β Display this help. Pass any option name as an argument and she'll show you help for that single option only, so cute. π
Examples:
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, bestie. π«Ά-o <argument>,--out-format <argument>β Output format, one of:binaryβ the default format when writing to a file.
NOTE: When generating a binary FRU using command line options only β that is, without an input template file β please keep in mind that the areas will be put into the output binary file in the order of the given options. Hence, to create a FRU with the default layout, use area-related options in the default order, which is:chassis,board,product,multirecord. π
When using a template, the order of areas will be preserved for the areas defined in the template. Any new areas will be added in the order of options as described above.
For stdout, the following will be used, even if 'binary' is explicitly specified:
jsonβ Default when writing to stdout.textβ 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, using the given encoding. Requires an argument in the form[<encoding>:]<area>.<field>=<value>. If an encoding is not specified at all,frugenwill 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. Slay. π
Supported encodings:
autoβ Autodetect encoding based on the used characters. This will attempt to use the most compact encoding among the following.6bitasciiβ 6-bit ASCII, available characters:
!"#$%^&'()*+,-./
1234567890:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
bcdplusβ BCD+, available characters:
01234567890 -.
textβ Plain text (Latin alphabet only). Characters: Any printable 8-bit ASCII byte.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 be 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. Obsessed with the flexibility, honestly. π¦
Examples:
frugen -r fru-template.bin -s text:board.pname="MY BOARD" out.fru
# (encode board.pname as text)
frugen -r fru-template.bin -s board.pname="MY BOARD" out.fru
# (preserve original encoding type if possible)
frugen -r fru-template.bin -s :board.pname="MY BOARD" out.fru
# (auto-encode board.pname as 6-bit ASCII)
frugen -j fru-template.json -s binary:board.custom=0102DEADBEEF out.fru
# (add a new binary-encoded custom field to board, at the end of list)
frugen -j fru-template.json -s binary:board.custom.h=0102DEADBEEF out.fru
# (add a new binary-encoded custom field to board, at the head of list)
frugen -j fru-template.json -s binary:board.custom.2=0102DEADBEEF out.fru
# (replace custom field 2 in board with new value)
frugen -j fru-template.json -s binary:board.custom.+2=0102DEADBEEF out.fru
# (insert a custom field at position 2 in board, old 2 becomes 3).
-t <argument>,--chassis-type <argument>β Set chassis type (hex). Defaults to0x02('Unknown'). π-u,--board-date-unspecβ Don't use the current system date/time for board mfg. date, use'Unspecified'instead.-U <argument>,--mr-uuid <argument>β Add/update a System Unique ID (UUID/GUID) record in the MR area. Main character energy. π-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
And that's the whole page, bestie β no notes, she ate and left no crumbs. π
Sign-off time: this is the manpage for frugen 3.1, dated May 2026. Go forth and generate some FRU information, you've got this. β¨ππ¦
π¦ where this page comes from
- ubuntu stonking: frugen 3.1-1 Β· GPL-2.0-or-later OR Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms