diff --git a/README.org b/README.org new file mode 100644 index 0000000..10ed6b0 --- /dev/null +++ b/README.org @@ -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