Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
162 changes: 162 additions & 0 deletions README.org
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
#+title: Awesome Open Source Firmware

This is a curated list of links, tools and resources that aid in the development / help one run (free) and open source firmware.

* Introductory Material

This should get you started

- [[https://en.wikipedia.org/wiki/Firmware][Wikipedia on Firmware]]


* Software

** Tools

- [[https://github.com/chipsec/chipsec][chipsec]] -- platform security assesment framework
- [[https://github.com/coreboot/chrome-ec/blob/main/README.md][chrome-ec]] -- The Chromium OS project includes open source software for embedded controllers (EC) used in recent ARM and x86 based Chromebooks. This software includes a lightweight, multitasking OS with modules for power sequencing, keyboard control, thermal control, battery charging, and verified boot.
- [[https://review.sourcearcade.org/flashprog][flashprog]] -- fork of flashrom that tries to avoid bricking your hardware
- [[https://github.com/flashrom/flashrom][flashrom]] -- flasher+reader utility to write/dump firmware
- [[https://fiedka.app/][fiedka]] -- graphical firmware editor app
- [[https://github.com/LongSoft/UEFITool][UEFITool]] -- UEFI (PI) firmware viewer and editor
- [[https://github.com/fiedka/me_fs_rs][me_fs_rs]] -- This is a work in progress parser for Intel (CS)ME firmware images. Most of this work is based on other implementations and public research. References are within the code.
- [[https://github.com/fiedka/romulan][romulan]] -- Rust library for parsing a number of firmware images
- [[https://chromium.googlesource.com/chromiumos/platform/vboot_reference][vboot]] -- Google's Verified Boot reference implementation (versions 1.x & 2.x) and helper tools

** Libs

- [[https://github.com/coreboot/coreboot/blob/main/payloads/libpayload/README][libpayload]] -- what coreboot payloads are made with

** SDK

** Exploits
- [[https://www.binarly.io/logofail][LogoFAIL]] -- image parsing done wrong
- [[https://codeberg.org/libreboot/deguard][deguard]] -- disabling Intel BootGuard on MEv11 platforms

* Firmware

** Platform

*** [[https://review.coreboot.org][coreboot]] -- follow the white rabbit
**** Utils

utilities that apply to coreboot mostly/only.

**** Distros

assembled builds of the coreboot project.
If you're hungry but not in a mood to cook you can choose from these meals that should get you going.

- [[https://doc.coreboot.org/distributions.html][coreboot distributions]] -- hit this one first if you've no idea what the matter is
- [[https://github.com/Dasharo/meta-dts/releases][dasharo]] -- 3mdeb's distro of coreboot
- [[https://libreboot.org/download.html][libreboot]] -- pre-assembled coreboot distro that eases friction
- [[https://docs.mrchromebox.tech/][MrChromeBox]] -- If your devices says "Chrome" on the outside you'll probably want to go with this
- [[https://www.gnu.org/software/gnuboot/web/manual/gnuboot.html][gnuboot]] -- if your requirements dictate so and you're loving OLD hardware go here.
- [[https://github.com/linuxboot/heads][heads]] -- A minimal Linux that runs as a coreboot or LinuxBoot ROM payload to provide a secure, flexible boot environment for laptops, workstations and servers.
- [[https://github.com/merge/skulls][skulls]] -- not quite HEADS


*** [[https://github.com/u-boot/u-boot][u-boot]] -- bootloader for embedded based boards

** Device Level

- [[https://www.zephyrproject.org/][zephyr]] -- a proven RTOS ecosystem by devs for devs

** Manageability

- [[https://github.com/u-root/u-bmc][u-bmc]] -- OpemBMC but with u-boot
- [[https://github.com/facebook/openbmc][openbmc (FB)]] -- Facebook's OpenBMC implemenation
- [[https://www.openbmc.org/][openbmc (LF)]] -- LinuxFoundation's OpenBMC implemenation

* Hardware

** Devices

Info about what you should (not) buy

- [[https://docs.chrultrabook.com/docs/firmware/supported-devices.html][chrultrabook]] -- supported devices list
- [[https://doc.coreboot.org/mainboard/index.html][coreboot]] -- (outdated+incomplete) list of supported mainboards
- [[https://openwrt.org/toh/start][OpenWRT]] -- Table of Hardware
- [[https://wiki.gentoo.org/wiki/Coreboot][Gentoo Wiki]] -- Coreboot Supported Devices

** Boards/ SoCs

Useful utilities that help you do firmware stuff.

*** Flasher / Programmer

- [[https://www.onetransistor.eu/2017/08/ch341a-mini-programmer-schematic.html][ch341a]] -- affordable but does its job
- [[https://github.com/9elements/picoprog][picoprog]] -- Picoprog is a firmware for the Raspberry Pi Pico that provides a USB-to-serial and USB-to-SPI bridge. It allows you to communicate with UART and SPI peripherals via USB.
- [[https://github.com/stacksmashing/pico-serprog][pico-serprog]] -- This is a basic flashrom/serprog compatible SPI flash reader/writer for the Raspberry Pi Pico.

** ISA

* Resources

** Guides

** Documentation

Good reads

- [[https://3mdeb.com/products-documentation/][3mdeb]]
- [[https://www.barebox.org/doc/latest/index.html][barebox]]
- [[https://doc.coreboot.org/][coreboot]]
- [[https://github.com/linuxboot/fiano/blob/main/pkg/intel/metadata/README.md][fiano]]
- [[https://osresearch.net/][HEADS wiki]]
- [[https://libreboot.org/docs/][libreboot]]
- [[https://book.linuxboot.org/][LinuxBoot -- Book]]
- [[https://www.linuxboot.org/page/faq/][LinuxBoot -- FAQ]]
- [[https://seabios.org/Developer_Documentation][SeaBIOS]]
- [[https://docs.u-boot.org/en/latest/index.html][uboot]]

** Data Sheets

** Videos

*** Talks

- [[https://www.osfc.io/archive/2024/][OSFC Recordings Archive]]

*** Tutorials
*** Courses

** Blog posts

- [[https://blog.3mdeb.com/][3mdeb's Blog]]
- [[https://9esec.io/blog/][9elements' Blog]]
- [[https://libreboot.org/news/][LibreBoot's Blog]]
- [[https://trmm.net/][Trammell Hudson's Blog]]

** Literature

* Social

Get in touch with firmware folks



* Conferences

- [[https://www.osfc.io/][OSFC]] -- Open Source Firmware Conference (annually around October)

* Companies

** The good

These companies actively contribute to open source firmware and might help you implement it to your needs.

- [[https://3mdeb.com/][3mdeb]] (PL) -- firmware company doing consulting, research, development and attestation
- [[https://9elements.com/][9elements]] (DE) -- firmware company doing consulting, research, development and attestation
- [[https://system76.com/][System76]] (US) -- hardware vendor, supports coreboot devices
- [[https://novacustom.com/][NovaCustom]] (NL) -- Laptop/PC retailer that endorses coreboot-supported hardware

** The bad

These companies do propietary firmware.

- +[[https://www.ami.com/][American Megatrends Inc.]]+
- +[[https://www.insyde.com/][insyde]]+
- +[[https://www.phoenix.com/client-firmware/][phoenix technologies]]+

** The ugly