intel_fw

Crates.iointel_fw
lib.rsintel_fw
version0.1.2
created_at2025-11-28 10:41:25.285035+00
updated_at2025-12-01 00:44:49.874677+00
descriptionParsing and editing library for Intel firmware images
homepagehttps://platform-system-interface.github.io/intel_fw/
repositoryhttps://github.com/platform-system-interface/intel_fw
max_upload_size
id1955107
size447,468
Daniel Maslowski (orangecms)

documentation

README

Modern Intel Firmware Tool ✨

This is a new utility to analyze and edit firmware images for Intel platforms.

Based on knowledge from other projects, such as me_cleaner, coreboot's ifdtool, ME Analyzer and related research, intel_fw is written from scratch in Rust, allowing for integration with other projects, including a flexible API.

The architecture and design is based on experience.

To test this tool, you will need sample firmware images. For convenience, take a look at the scripts used for development.

Commands

me

The me command lets you print, edit and check the (CS)ME firmware. The me clean command is compatible with me_cleaner, with minor differences:

  • The --whitelist and --blacklist flags do not cause deletion of partitions when multiple partitions refer to the same range, but at least one of them is to be retained. This is considered a bug fix.
  • The --check flag checks all directory partitions as well as the presence of the FTPR. Analysis details are printed unconditionally.
  • The --truncuate option may result in smaller ME images than me_cleaner.

Development

To run the CLI via cargo directly, remember to add arguments after an extra --; i.e., to print the general help, invoke cargo run --relase -- -h, or, for a subcommand, e.g. cargo run --relase -- me clean -h.

Milestones

  • bootstrap a new, general CLI, intel_fw, with an me subcommand
    • mimic the me_cleaner CLI, using similar+same arguments and switches for compatibility
  • port the logic to Rust, using me_cleaner-edited images as test fixtures
    • NOTE: committing the test fixtures would be big and a potential license issue; instead, add notes on how to reproduce them, via public vendor images and extraction utilities (e.g. from Lenovo)
    • step 1: port core logic to produce the same output as me_cleaner for Lenovo ThinkPad X230 + X270
    • step 2: full feature parity with me_cleaner
  • expand the documentation
    • higher-level view on Intel platform boot flows
    • how the Intel data structures work, in prose
    • adding support for more platforms and variants
  • work out a reusable library, i.e., a Rust crate for https://crates.io/
    • turn all unwrap()s into Option/Result; add lint rule
    • add bounds checks
    • publish the crate
  • sync up; https://github.com/corna/me_cleaner has another patch that coreboot is missing, doing rework and adding ME Gen 1 support
Commit count: 0

cargo fmt