# Utilities

## List of utils

Scripts and programs found in the coreboot `./util` directory

- abuild - coreboot autobuild script builds coreboot images for all available targets. `bash`

- acpi - Walk through all ACPI tables with their addresses. `bash`

- amdfwtool - Create AMD Firmware combination `C`

- amdtools Various tools for AMD processors

  - update_efs_spi_speed - Change SPI speed in binary. `Bash`

  - Tools to compare extended K8 memory settings.

  - k8-compare-pci-space.pl - Shows differences between values in PCI space and the default value. `Perl`

  - k8-interpret-extended-memory-settings.pl - Shows differences between memory controller values and the default value. `Perl`

  - k8-read-mem-settings.sh - Makes data files understood by the k8-interpret-extended-memory-settings script. `Bash`

  - parse-bkdg.pl - Make bkdg.data file used by above scripts. `Perl`

  - example_input - Sample input for the above scripts. `Text`

- apcb - AMD PSP Control Block tools

  - apcb_edit.py - This tool allows patching an existing APCB binary with specific SPDs and GPIO selection pins. `Python3`

  - apcb_v3_edit.py - This tool allows patching an existing APCB v3 binary with up to 16 specific SPDs. `Python3`

- archive - Concatenate files and create an archive `C`

- autoport - Automated porting coreboot to Sandy Bridge/Ivy Bridge/Haswell platforms `Go`

- bincfg - Compiler/Decompiler for data blobs with specs `Lex` `Yacc`

- board_status - Tools to collect logs and upload them to the board status repository `Bash` `Go`

- bucts - A tool to manipulate the BUC.TS bit on Intel targets. `C`

- cavium - Devicetree_convert Tool to convert a DTB to a static C file `Python`

- cbfstool

  - cbfstool - For manipulating CBFS file `C`

  - fmaptool - Converts plaintext fmd files into fmap blobs `C`

  - rmodtool - Creates rmodules `C`

  - ifwitool - For manipulating IFWI `C`

- cbmem - CBMEM parser to read e.g. timestamps and console log `C`

- chromeos - These scripts can be used to access ChromeOS resources, for example to extract System Agent reference code and other blobs (e.g. mrc.bin, refcode, VGA option roms) from a ChromeOS recovery image. `C`

- crossgcc - A cross toolchain builder for -elf toolchains (ie. no libc support) `Bash`

- docker - Dockerfiles for coreboot-sdk, coreboot-jenkins-node, coreboot.org-status and docs.coreboot.org `Make`

- dtd_parser - DTD structure parser `Python2`

- ectool - Dumps the RAM of a laptop’s Embedded/Environmental Controller (EC). `C`

- exynos - Computes and fills Exynos ROM checksum (for BL1 or BL2). `Python3`

- find_usbdebug - Help find USB debug ports `Bash`

- futility - Firmware utility for signing ChromeOS images `Make`

- fuzz-tests - Create test cases that crash the jpeg code. `C`

- genbuild_h - Generate build system definitions `Shell`

- gitconfig - Initialize git repository submodules install git hooks `Bash`

- hda-decoder - Dumps decoded HDA default configuration registers into a format which can be used in coreboot’s verb table `Go`

- ifdtool - Extract and dump Intel Firmware Descriptor information `C`

- intelmetool - Dump interesting things about Management Engine even if hidden `C`

- intelp2m - Convert the inteltool register dump to gpio.h with GPIO configuration for porting coreboot to your motherboard. `Go`

- inteltool - Provides information about the Intel CPU/chipset hardware configuration (register contents, MSRs, etc). `C`

- intelvbttool - Parse VBT from VGA BIOS `C`

- kbc1126 - Tools used to dump the two blobs from the factory firmware of many HP laptops with 8051-based SMSC KBC1098/KBC1126 embedded controller and insert them to the firmware image. `C`

- kconfig - Build system `Make`

- lint - Source linter and linting rules `Shell`

- nixos - A script and NixOS configuration files to create an ISO image for testing purposes and for working on firmware. `Bash`

- mainboard - mainboard specific scripts

  - google - Directory for google mainboard specific scripts

- marvell - Add U-Boot boot loader for Marvell ARMADA38X `C`

- me_cleaner - Tool for partial deblobbing of Intel ME/TXE firmware images `Python`

- mediatek

  - check-pi-img.py - Check `PI_IMG` firmware. `Python3`

  - gen-bl-img.py - Generate MediaTek bootloader header. `Python3`

- mma - Memory Margin Analysis automation tests `Bash`

- msrtool - Dumps chipset-specific MSR registers. `C`

- nvidia - nvidia blob parsers

- nvramtool - Reads and writes coreboot parameters and displaying information from the coreboot table in CMOS/NVRAM. `C`

- pmh7tool - Dumps, reads and writes PMH7 registers on Lenovo ThinkPads. PMH7 is used for switching on and off the power of some devices on the board such as dGPU. `C`

- post - Userspace utility that can be used to test POST cards. `C`

- qemu - Makefile & comprehensive default config for QEMU Q35 emulation `Make`

- qualcomm - cmm

  - CMM script to debug Qualcomm coreboot environments. `CMM` ipqheader

  - createxbl.py - Concatenates XBL segments into one ELF image `Python`

  - ipqheader.py - Returns a packed MBN header image with the specified base and size `Python`

  - mbncat.py - Generate ipq8064 uber SBL `Python`

  - mbn_tools.py - Contains all MBN Utilities for image generation `Python`

- release - Generate coreboot release `Bash`

- riscv

  - make-spike-elf.sh - Converts a flat file into an ELF, that can be passed to SPIKE, the RISC-V reference emulator.`Bash`

  - sifive-gpt.py - Wraps the bootblock in a GPT partition for SiFive’s bootrom. `Python3`

- rockchip - Generate Rockchip idblock bootloader. `Python3`

- sconfig - coreboot device tree compiler `Lex` `Yacc`

- scripts

  - capture_commands.sh - Write all commands from the build to a file. `Shell`

  - config - Manipulate options in a .config file from the command line `Bash`

  - cross-repo-cherrypick - Pull in patches from another tree from a gerrit repository. `Shell`

  - decode_spd.sh - Decodes Serial Presence Detect (SPD) files into various human readable formats. `Bash`

  - dts-to-fmd.sh -Converts a depthcharge fmap.dts into an fmaptool compatible .fmd format `Bash`

  - find_new_user_commits.sh - Finds new gerrit committers `Bash`

  - find-unused-kconfig-symbols.sh - Points out Kconfig variables that may be unused. There are some false positives, but it serves as a starting point `Shell`

  - gerrit-rebase - Applies all commits that from-branch has over to-branch, based on a common ancestor and gerrit meta-data `Bash`

  - get_maintainer.pl - Print selected MAINTAINERS information for the files modified in a patch or for a file `Perl`

  - maintainers.go - Build subsystem Maintainers `Go`

  - no-fsf-addresses.sh - Removes various FSF addresses from license headers `Shell`

  - parse-maintainers.pl - Script to alphabetize MAINTAINERS file `Perl`

  - rm_unused_code - Remove all code not used for a platform from the local git repository for auditing or release `Bash`

  - show_platforms.sh - Makes a list of platforms in the tree. Does not show variants. `Shell`

  - ucode_h_to_bin.sh - Microcode conversion tool `Bash`

  - update_submodules - Check all submodules for updates `Bash`

- smmstoretool - Offline SMMSTORE variable modification tool `C`

- spdtool - Dumps SPD ROMs from a given blob to separate files using known patterns and reserved bits. Useful for analysing firmware that holds SPDs on boards that have soldered down DRAM. `python`

- spkmodem_recv - Decode spkmodem signals `C`

- superiotool - A user-space utility to detect Super I/O of a mainboard and provide detailed information about the register contents of the Super I/O. `C`

- supermicro - Tools for supermicro platforms

  - smcbiosinfo - Generates SMC biosinfo for BMC BIOS updates `C`

- testing - coreboot test targets `Make`

- uio_usbdebug - Debug coreboot’s usbdebug driver inside a running operating system (only Linux at this time). `C`

- util_readme - Creates README.md of description files in `./util` subdirectories `Bash`

- vboot_list - Tools to generate a list of vboot enabled devices to the documentation `Bash`

- vgabios - emulated vga driver for qemu `C`

- x86 - Generates 32-bit PAE page tables based on a CSV input file. `Go`

- xcompile - Cross compile setup `Bash`

## In depth documentation

- abuild
- cbfstool
- ifdtool
- intelp2m
- smmstoretool

## Generated documentation

*Please do not edit the markdown file in the documentation directory directly.

This file was generated by running util_readme.sh. Please make sure it is rerun when new tools are added or when documentation is updated.

To update, edit the markdown files in the util directory, then re-generate this file by running `util/util_readme/util_readme.sh`