SaaSHub helps you find the best software and product alternatives Learn more →
Top 23 C Firmware Projects
-
Tasmota
Alternative firmware for ESP8266 and ESP32 based devices with easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX. Full documentation at
Project mention: Xiaomi has provided official support for Home Assistant | news.ycombinator.com | 2024-12-16 -
InfluxDB
InfluxDB – Built for High-Performance Time Series Workloads. InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.
-
Project mention: Unleashed Firmware for Flipper Zero: Unlock Hidden Features and Capabilities | news.ycombinator.com | 2024-08-14
-
It is (but in russian)
Pavel Zhovner (a lead of flipper devices) wrote about Busy status bar 3 months ago in his Telegram channel (https://t.me/zhovner_hub/2073).
At https://flipperzero.one/ you can find habr.com blog link. The first post in Flipper blog was made by Zhovner https://habr.com/ru/users/zhovner/ (who has a link to telegram channel zhovner_hub).
-
-
Project mention: Show HN: iFixit created a new USB-C, repairable soldering system | news.ycombinator.com | 2024-09-12
TS100 here! Take a look at the OSS firmware
https://github.com/Ralim/IronOS
It's a very nice, incremental improvement making the occasional hobbyist soldering a joy.
-
-
Very interesting. I wonder if this a result of some "swiss cheesee" effect due to constraints around UEFI and NVRAM themselves, when updating EFI variables.
NVRAM must maintain atomicity of memory transactions for power failures. Its whole purpose is to store data when you turn your computer off. As a result, when deleteing an EFI variable, you can't manage the individual bytes - you have to delete a whole entry (which can be rather large - based on the EFI specification and the code used for edk2, e.g. https://github.com/tianocore/edk2/blob/83a86f465ccb1a792f5c5...). Deleting these entries might become a problem when you start running against memory constraints and what slots in memory are actually available; hence a possible fragmentation issue.
Additionally, I appreciated how short and specific this blog post was. I enjoy the style of post of someone encountering a problem and solving it.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
-
Project mention: Fwupd 2.0.2 Allows Updating Firmware on Many More Devices | news.ycombinator.com | 2024-11-25
-
esp-homekit-devices
Advanced firmware to add native Apple HomeKit and custom configurations, compatible with any SoC based on ESP32, ESP32-S, ESP32-C and ESP8266 series. (Shelly, Sonoff, Electrodragon, Tuya...)
-
nexmon
The C-based Firmware Patching Framework for Broadcom/Cypress WiFi Chips that enables Monitor Mode, Frame Injection and much more
-
mongoose-os
Mongoose OS - an IoT Firmware Development Framework. Supported microcontrollers: ESP32, ESP8266, CC3220, CC3200, STM32F4, STM32L4, STM32F7. Amazon AWS IoT, Microsoft Azure, Google IoT Core integrated. Code in C or JavaScript.
-
coreboot
Read-only mirror of https://review.coreboot.org/coreboot.git. Synced every hour. We don't handle Pull Requests.
Project mention: Authenticated Boot and Disk Encryption on Linux | news.ycombinator.com | 2024-09-03> Show me a FLOSS implementation of this standard and you will have a point
I've had a point from my first comment and it hasn't changed in validity. It's just taking time to convince you, but I think I'm making progress :)
I referenced several open implementations in my last reply, an a cursory search reveals more [1] [2]. Besides, this still doesn't help you trust the hardware, even if that hardware is entirely open like some sort of RISC chip. Can you verify every step in the supply chain? At every stage of assembly? No? Or, assuming a trusted device, can you be 100% confident something wasn't added, a simple keylogger? Most keyboards can be removed from laptops without leaving a trace, so can screen casings, speakers, batteries, etc. Plenty of places to hide something tiny.
> At the moment, I would have to trust a megacorporation obeying NSA,
That's less likely than the software you use having been compromised, for example by introducing an obfuscated bug, or MitMing as you perform a software update (many software update mechanisms have notoriously weak security, search some defcon talks on the subject).
> Your threat model may vary.
No, what I'm saying applies to all threat models, and I challenge you to name one to disprove that.
Secure boot is an open standard and can be implemented in a trustworthy and secure way, you just need to put in the work to do so. It's entirely possible to do so.
Of course if you are putting in all that work, if you are that at risk, you would need to switch your software stack entirely as well and use something like seL4 as a starting point.
[1] https://github.com/prplfoundation/prpl-secure-boot
[2] https://www.coreboot.org/
-
-
-
-
Project mention: Printer company served you malware for months, called them false positives | news.ycombinator.com | 2025-05-19
That kind of confirmation does exist, it’s called using a hardware wallet, such as those made by Trezor and others.
https://trezor.io/
-
-
Prusa-Firmware-Buddy
Firmware for the Original Prusa MINI, Original Prusa MK4, Original Prusa XL and Prusa CORE One 3D printers by Prusa Research.
Prusa has fallen very much behind. There are open issues about the Mini and the MK4 that have been open for years and still ignored by Prusa. Table stakes like full compatibility with octoprint.
For instance: https://github.com/prusa3d/Prusa-Firmware-Buddy/issues/189 (over 5 years old)
-
-
Project mention: Year old PSP can now connect to WPA2 WiFi Networks | news.ycombinator.com | 2025-02-14
Is there any kind of technical write up of how this was accomplished? Looking at the Git history of the branch that introduced the plugin[1] was a bit rough, but I did find an interesting commit[2]. That commit looks like it patches some other code (apparently some pspnet_apctl.prx module)[3] but maybe all the discussion was in Discord and it's not been written up elsewhere?
It's probably unreasonable to ask for such details without delving into how PSP software images are structured and learning that ecosystem. Also maybe it's obvious for someone with a more low level understanding of the WPA 1 vs. 2 differences. But here I am unreasonably curious. :)
[1] https://github.com/PSP-Archive/ARK-4/commits/rev160/
-
-
stm32-bootloader
Customizable Bootloader for STM32 microcontrollers. This example demonstrates how to perform in-application-programming of a firmware located on an external SD card with FAT32 file system.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
C Firmware discussion
C Firmware related posts
-
Another Crack in the Chain of Trust: Uncovering (Yet Another) Secure Boot Bypass
-
Printer company served you malware for months, called them false positives
-
Fujihack
-
Defragging my old Dell's UEFI NVRAM
-
Year old PSP can now connect to WPA2 WiFi Networks
-
When power cycling your (x86) server isn't enough to recover it
-
Fwupd 2.0.2 Allows Updating Firmware on Many More Devices
-
A note from our sponsor - SaaSHub
www.saashub.com | 22 Jun 2025
Index
What are some of the best open-source Firmware projects in C? This list will help you:
# | Project | Stars |
---|---|---|
1 | Tasmota | 23,355 |
2 | unleashed-firmware | 19,478 |
3 | flipperzero-firmware | 14,359 |
4 | nodemcu-firmware | 7,788 |
5 | IronOS | 7,700 |
6 | asuswrt-merlin.ng | 5,653 |
7 | edk2 | 5,182 |
8 | fwupd | 3,433 |
9 | esp-homekit-devices | 2,878 |
10 | nexmon | 2,597 |
11 | mongoose-os | 2,576 |
12 | DAPLink | 2,515 |
13 | coreboot | 2,371 |
14 | dji-firmware-tools | 1,783 |
15 | asuswrt-merlin.ng | 1,753 |
16 | firmware | 1,528 |
17 | trezor-firmware | 1,515 |
18 | idevicerestore | 1,515 |
19 | Prusa-Firmware-Buddy | 1,328 |
20 | NanoVNA | 1,166 |
21 | ARK-4 | 1,144 |
22 | Picofly | 1,052 |
23 | stm32-bootloader | 945 |