FRU Tool
########
FRU Tool is a command-line utility for generating and converting IPMI FRU binary data files.
Description
===========
Every modern component of a computer or electronic equipment,
commonly referred to as a Field Replaceable Unit or FRU,
contains a memory block that stores the inventory information of that component.
This includes the manufacturer's name, product name, manufacture date, serial numbers
and other details that help identify the component.
The Intel FRU Information Storage for `IPMI specification`_ defines the standard format
that devices are expected to conform to within their FRU areas.
Each component vendor populates the FRU area during their manufacturing process
and all FRU areas are easily accessible via IPMI.
The OEM FRU storage feature of Dell EMC PowerEdge servers is an additional FRU area that allows OEM customers,
who use Dell EMC servers as a component of their solution,
to include their own tracking information in the FRU storage area.
This can be loaded into the server during factory deployment
and can be accessed when the information is required during troubleshooting or support.
This allows the OEM customers to store their own part numbers and inventory information within the server,
enabling them to track their solutions in their internal management systems.
This is similar to the way Dell EMC servers use the standard FRU areas to store tracking information
such as service tags and manufacture date
and use that information when having to identify and support those systems once in the field.
Considering that the FRU area is a binary payload,
it is not trivial to build the content structure by hand.
To simplify the effort for OEM customers,
this Python tool is provided to speed up the process of creating the payload.
While FRU Tool was specifically authored to support this OEM use case,
it conforms to Intel's specification and can be used to build the FRU structure for any device.
Prerequisites
=============
FRU Tool is tested with Python 3.8 and higher.
In order to write, read, or edit the OEM FRU storage area on the target server,
the open source `IPMItool`_ utility or equivalent is required.
This utility can be installed on Linux distributions by using the built-in package manager such as yum or apt-get.
Dell EMC provides a Windows version which can be found in the *Driver and Downloads* section for any PowerEdge server
on `Dell EMC Support`_ under the *Systems Management* section.
It is contained in the package named *Dell OpenManage BMC Utility* which can also be found on Google by searching for the package by name.
For documentation on IPMItool, search for 'man ipmitool' on Google.
Installation
============
Installation is as simple as running ``python -m pip install fru``.
Usage Instructions
==================
FRU Tool includes a CLI named ``frutool``.
It can be run using either of these methods, depending on how your paths are configured:
.. code-block::
frutool
python -m fru
These are equivalent commands.
For convenience, the commands below run as ``frutool``.
Generate a sample text file
To create a complete -- but empty -- text file, run the ``frutool sample`` command:
.. code-block::
frutool sample EDITABLE.txt
(Change ``EDITABLE.txt`` to whatever filename matches your needs.)
You can then open the text file in any editor and edit its contents.
Note that the file format is TOML;
basic format instructions are included as comments at the top of the sample file.
Convert a binary FRU file to text
---------------------------------
To convert a binary FRU file to an editable text file, run the ``frutool dump`` command:
.. code-block::
frutool dump FRU.bin EDITABLE.txt
(Change ``FRU.bin`` and ``EDITABLE.txt`` to whatever filenames match your needs.)
You can then review and edit the text file.
Convert a text file to a binary FRU file
----------------------------------------
To convert a text file to binary FRU file, run the ``frutool generate`` command:
.. code-block::
frutool generate EDITABLE.txt FRU.bin
(Change ``EDITABLE.txt`` and ``FRU.bin`` to whatever filenames match your needs.)
You can then write the binary FRU file to the hardware system using ``ipmitool``:
.. code-block::
ipmitool -I lanplus -H $IP_ADDRESS -U root -P password fru write FRU.bin
Detailed usage information and use cases for the OEM FRU feature
can be found in the `Dell OEM FRU Whitepaper`_.
Contribution
============
In order to contribute, feel free to fork the project and submit a pull request with all your changes and a description on what was added or removed and why.
If approved, the project owners will merge it.
Licensing
=========
FRU Tool is freely distributed under the MIT License.
Support
=======
Please file bugs and issues on the GitHub issues page for this project.
The code and documentation are released with no warranties or SLAs
and are intended to be supported through a community driven process.
.. Links
.. -----
..
.. _IPMI specification: https://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/ipmi-platform-mgt-fru-info-storage-def-v1-0-rev-1-3-spec-update.pdf
.. _IPMItool: https://codeberg.org/IPMITool/ipmitool
.. _Dell EMC Support: https://support.dell.com
.. _Dell OEM FRU Whitepaper: https://downloads.dell.com/solutions/general-solution-resources/White%20Papers/OEM%20FRU%20Technical%20Whitepaper.pdf
Raw data
{
"_id": null,
"home_page": "https://github.com/genotrance/fru-tool/",
"name": "fru",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "fru, ipmi",
"author": "Kurt McKee",
"author_email": "contactme@kurtmckee.org",
"download_url": "https://files.pythonhosted.org/packages/30/5b/42b9ab0c73a2c5c0425c032c51dc6dc85992e7814834ee7d3354c4423f08/fru-4.1.0.tar.gz",
"platform": null,
"description": "FRU Tool\n########\n\nFRU Tool is a command-line utility for generating and converting IPMI FRU binary data files.\n\n\nDescription\n===========\n\nEvery modern component of a computer or electronic equipment,\ncommonly referred to as a Field Replaceable Unit or FRU,\ncontains a memory block that stores the inventory information of that component.\nThis includes the manufacturer's name, product name, manufacture date, serial numbers\nand other details that help identify the component.\n\nThe Intel FRU Information Storage for `IPMI specification`_ defines the standard format\nthat devices are expected to conform to within their FRU areas.\nEach component vendor populates the FRU area during their manufacturing process\nand all FRU areas are easily accessible via IPMI.\n\nThe OEM FRU storage feature of Dell EMC PowerEdge servers is an additional FRU area that allows OEM customers,\nwho use Dell EMC servers as a component of their solution,\nto include their own tracking information in the FRU storage area.\nThis can be loaded into the server during factory deployment\nand can be accessed when the information is required during troubleshooting or support.\nThis allows the OEM customers to store their own part numbers and inventory information within the server,\nenabling them to track their solutions in their internal management systems.\nThis is similar to the way Dell EMC servers use the standard FRU areas to store tracking information\nsuch as service tags and manufacture date\nand use that information when having to identify and support those systems once in the field.\n\nConsidering that the FRU area is a binary payload,\nit is not trivial to build the content structure by hand.\nTo simplify the effort for OEM customers,\nthis Python tool is provided to speed up the process of creating the payload.\n\nWhile FRU Tool was specifically authored to support this OEM use case,\nit conforms to Intel's specification and can be used to build the FRU structure for any device.\n\n\nPrerequisites\n=============\n\nFRU Tool is tested with Python 3.8 and higher.\n\nIn order to write, read, or edit the OEM FRU storage area on the target server,\nthe open source `IPMItool`_ utility or equivalent is required.\nThis utility can be installed on Linux distributions by using the built-in package manager such as yum or apt-get.\nDell EMC provides a Windows version which can be found in the *Driver and Downloads* section for any PowerEdge server\non `Dell EMC Support`_ under the *Systems Management* section.\nIt is contained in the package named *Dell OpenManage BMC Utility* which can also be found on Google by searching for the package by name.\nFor documentation on IPMItool, search for 'man ipmitool' on Google.\n\n\nInstallation\n============\n\nInstallation is as simple as running ``python -m pip install fru``.\n\n\nUsage Instructions\n==================\n\nFRU Tool includes a CLI named ``frutool``.\nIt can be run using either of these methods, depending on how your paths are configured:\n\n.. code-block::\n\n frutool\n\n python -m fru\n\nThese are equivalent commands.\nFor convenience, the commands below run as ``frutool``.\n\n\nGenerate a sample text file\n\n\nTo create a complete -- but empty -- text file, run the ``frutool sample`` command:\n\n.. code-block::\n\n frutool sample EDITABLE.txt\n\n\n(Change ``EDITABLE.txt`` to whatever filename matches your needs.)\n\nYou can then open the text file in any editor and edit its contents.\nNote that the file format is TOML;\nbasic format instructions are included as comments at the top of the sample file.\n\n\nConvert a binary FRU file to text\n---------------------------------\n\nTo convert a binary FRU file to an editable text file, run the ``frutool dump`` command:\n\n.. code-block::\n\n frutool dump FRU.bin EDITABLE.txt\n\n\n(Change ``FRU.bin`` and ``EDITABLE.txt`` to whatever filenames match your needs.)\n\nYou can then review and edit the text file.\n\n\nConvert a text file to a binary FRU file\n----------------------------------------\n\nTo convert a text file to binary FRU file, run the ``frutool generate`` command:\n\n.. code-block::\n\n frutool generate EDITABLE.txt FRU.bin\n\n\n(Change ``EDITABLE.txt`` and ``FRU.bin`` to whatever filenames match your needs.)\n\nYou can then write the binary FRU file to the hardware system using ``ipmitool``:\n\n.. code-block::\n\n ipmitool -I lanplus -H $IP_ADDRESS -U root -P password fru write FRU.bin\n\n\nDetailed usage information and use cases for the OEM FRU feature\ncan be found in the `Dell OEM FRU Whitepaper`_.\n\n\nContribution\n============\n\nIn order to contribute, feel free to fork the project and submit a pull request with all your changes and a description on what was added or removed and why.\nIf approved, the project owners will merge it.\n\n\nLicensing\n=========\n\nFRU Tool is freely distributed under the MIT License.\n\n\nSupport\n=======\n\nPlease file bugs and issues on the GitHub issues page for this project.\nThe code and documentation are released with no warranties or SLAs\nand are intended to be supported through a community driven process.\n\n\n.. Links\n.. -----\n..\n.. _IPMI specification: https://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/ipmi-platform-mgt-fru-info-storage-def-v1-0-rev-1-3-spec-update.pdf\n.. _IPMItool: https://codeberg.org/IPMITool/ipmitool\n.. _Dell EMC Support: https://support.dell.com\n.. _Dell OEM FRU Whitepaper: https://downloads.dell.com/solutions/general-solution-resources/White%20Papers/OEM%20FRU%20Technical%20Whitepaper.pdf\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Read and write binary FRU files",
"version": "4.1.0",
"project_urls": {
"Homepage": "https://github.com/genotrance/fru-tool/",
"Repository": "https://github.com/genotrance/fru-tool/"
},
"split_keywords": [
"fru",
" ipmi"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "0835b8695e7119f55a3ff1cee345f3af537000ecc95774394a8e9d8026750f07",
"md5": "e74ec1da576a990f2f4b2cc54d0fde0a",
"sha256": "2241b0e30e61144afe2d1da5e15017dd62fa2f0b89cb1c73cfc5c0db8c67e2ec"
},
"downloads": -1,
"filename": "fru-4.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e74ec1da576a990f2f4b2cc54d0fde0a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 14863,
"upload_time": "2024-09-27T00:27:26",
"upload_time_iso_8601": "2024-09-27T00:27:26.196274Z",
"url": "https://files.pythonhosted.org/packages/08/35/b8695e7119f55a3ff1cee345f3af537000ecc95774394a8e9d8026750f07/fru-4.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "305b42b9ab0c73a2c5c0425c032c51dc6dc85992e7814834ee7d3354c4423f08",
"md5": "d219e532a6831186e594a6f2989e7e55",
"sha256": "62a6e823fb444e5d3c047c1be7ee537e7aedfe5981f073b6c03d3ad4137e2156"
},
"downloads": -1,
"filename": "fru-4.1.0.tar.gz",
"has_sig": false,
"md5_digest": "d219e532a6831186e594a6f2989e7e55",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 14076,
"upload_time": "2024-09-27T00:27:27",
"upload_time_iso_8601": "2024-09-27T00:27:27.570218Z",
"url": "https://files.pythonhosted.org/packages/30/5b/42b9ab0c73a2c5c0425c032c51dc6dc85992e7814834ee7d3354c4423f08/fru-4.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-09-27 00:27:27",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "genotrance",
"github_project": "fru-tool",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"tox": true,
"lcname": "fru"
}