{"slug": "esp-idf", "name": "ESP-IDF", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 6, "commenters": 17, "warners": 0, "score": 8.059, "rising": -0.64, "first": "2025-11-11", "latest": "2026-10-30", "why": "the ESP-IDF, which is a pretty good C-style interface", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 6, "neutral": 10, "compare": 2, "warn": 0}, "spark": [2, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1], "listed": true, "loved": [], "caveat": "", "short_quote": "the ESP-IDF, which is a pretty good C-style interface", "kind": "", "icon": true, "domain": "espressif.com", "github_repo": null, "official_url": "https://www.espressif.com/en/products/sdks/esp-idf", "pricing": "", "aliases": ["ESP-IDF"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 804532976, "item_id": 50283311, "url": "https://news.ycombinator.com/item?id=50283311", "by": "everforward", "date": "2026-10-29", "version": null, "stance": "recommend", "quote": "Mostly works fine.", "excerpt": "That\u2019s why esp-idf has components. I have a bunch of components that are basically \u201ccompile if this SDK config is set, otherwise pretend you\u2019re an empty file\u201d using macros. Then I just pull in all my components. The ones I use will get compiled, the ones I don\u2019t won\u2019t. Mostly works fine. Eventually you will run out of NVRAM to save binaries on, but another esp-32 is like $3.", "context": "embedded hobbyist/developer", "use_case": "ESP32 firmware components", "switched_from": "", "story": "Raspberry Pi Zero 3W and Pi 4 Model A spotted in device trees"}, {"id": 783858384, "item_id": 48991149, "url": "https://news.ycombinator.com/item?id=48991149", "by": "Joel_Mckay", "date": "2026-07-21", "version": null, "stance": "recommend", "quote": "The Esp FreeRTOS projects are a great little ecosystem, and will offer quite a bit more insight than Arduino", "excerpt": "The Esp FreeRTOS projects are a great little ecosystem, and will offer quite a bit more insight than Arduino pseudo-C++ silent-polled architecture. In general, it depends what you want out of the ecosystems. For quickly setting up a proof of concept, an Arduino used to be good for the exhaustive documentation, examples, community, and labs. The modern Arduino integrated product line is now similar to other locked eco", "context": "", "use_case": "embedded firmware learning", "switched_from": "", "story": "Arduino Launches Plug-and-Play Modules for Long-Range Sensor Projects"}, {"id": 761994208, "item_id": 47624638, "url": "https://news.ycombinator.com/item?id=47624638", "by": "elcritch", "date": "2026-04-03", "version": null, "stance": "recommend", "quote": "ESP-IDF supports it well", "excerpt": "Nah, ESP32's have had ethernet capability for a while and ESP-IDF supports it well. I've been using one I built for 5+ years now. Unfortunately RMII (ethernet phy) interface takes up a lot of the GPIO pins. This part looks like it'll remedy that issue. There's two ESP32 boards that have been around for a while with PoE: - https://www.tme.com/us/en-us/details/esp32-poe/development-kits-for-data-transmission/olimex/ - ", "context": "", "use_case": "", "switched_from": "", "story": "ESP32-S31: 320MHz 2C RV32IMAFCP+CLIC, 512KB SRAM, GbE, 802.11ax, 61 GPIO"}, {"id": 736129345, "item_id": 46008084, "url": "https://news.ycombinator.com/item?id=46008084", "by": "cptskippy", "date": "2025-11-21", "version": null, "stance": "recommend", "quote": "Well you can use PlatformIO/VSCode and the ESP-IDF.", "excerpt": "> But I've only programmed Esp32s using the arduino dev environment. Well you can use PlatformIO/VSCode and the ESP-IDF. If you're ok with the Arduino 2 framework, then you can use PlatformIO as well. Unfortunately Arduino 3 support isn't there yet so a lot of libraries like HomeSpan won't work on PlatformIO at the moment. https://github.com/platformio/platform-espressif32/issues/1225", "context": "", "use_case": "", "switched_from": "", "story": "Arduino published updated terms and conditions: no longer an open commons"}, {"id": 735764352, "item_id": 45985272, "url": "https://news.ycombinator.com/item?id=45985272", "by": "mort96", "date": "2025-11-19", "version": null, "stance": "recommend", "quote": "the ESP-IDF, which is a pretty good C-style interface", "excerpt": "Espressif has a pretty good Arduino compatibility layer for the ESP32 series. So you can follow Arduino tutorials and almost everything will \"just work\". This what I use for quick and dirty projects. For more \"serious\" things, you have the ESP-IDF, which is a pretty good C-style interface to all sorts of hardware features. Less newbie friendly than the Arduino interface, but gives you more control. And it can be used", "context": "", "use_case": "", "switched_from": "", "story": "The Death of Arduino?"}]}], "caveats": [], "who": [{"by": "Rochus", "context": "building a bare-metal OS", "url": "https://news.ycombinator.com/item?id=50301831", "date": "2026-10-30"}, {"by": "everforward", "context": "embedded hobbyist/developer", "url": "https://news.ycombinator.com/item?id=50283311", "date": "2026-10-29"}, {"by": "humpf", "context": "Data engineer", "url": "https://news.ycombinator.com/item?id=49557123", "date": "2026-09-03"}], "tags": [], "use_cases": ["esp32 firmware", "studying reference", "esp32 firmware components", "embedded firmware learning", "e-reader firmware framework", "ethernet support on esp32"], "compared": [{"slug": "arduino", "name": "Arduino", "co": 5, "switched_from": 0, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=47561678", "title": "ESP32-S31: 320MHz 2C RV32IMAFCP+CLIC, 512KB SRAM, GbE, 802.11ax, 61 GPIO", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=50295868", "title": "Sylphide OS: a general-purpose OS for microcontroller-based computers", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=50085553", "title": "AI-assisted PCB design for KiCad 10", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=50265594", "title": "Raspberry Pi Zero 3W and Pi 4 Model A spotted in device trees", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=49986862", "title": "ESP32-C3 Adblock", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=49522896", "title": "Ask HN: Who wants to be hired? (September 2026)", "mentions": 1}], "sentiment_by_month": {"2025-11": {"neutral": 2, "recommend": 2}, "2025-12": {}, "2026-01": {"neutral": 2}, "2026-02": {"neutral": 2}, "2026-03": {}, "2026-04": {"recommend": 2}, "2026-05": {}, "2026-06": {}, "2026-07": {"compare": 1, "recommend": 1}, "2026-08": {"neutral": 1}, "2026-09": {"neutral": 1}, "2026-10": {"compare": 1, "recommend": 1, "neutral": 2}}, "versions": [], "version_unnamed": 0, "family_ref": null, "runs_on": null, "lines": [], "quotes": [{"id": 804829296, "item_id": 50301831, "url": "https://news.ycombinator.com/item?id=50301831", "by": "Rochus", "date": "2026-10-30", "version": null, "stance": "neutral", "quote": "no ESP-IDF (though I use it for studying)", "excerpt": "There were dozens of pretty complex challenges, too many to describe here. So just a few examples. First of all, I'm fully bare-metal, with no ESP-IDF (though I use it for studying). A major annoyance is the USB-JTAG flapping which is the same on both board copies and different hosts; so debugging is even more difficult; partly worked around by logging via additional TTL UART connection. It's worse right after power-", "context": "building a bare-metal OS", "use_case": "studying reference", "switched_from": "", "story": "Sylphide OS: a general-purpose OS for microcontroller-based computers"}, {"id": 804789777, "item_id": 50299361, "url": "https://news.ycombinator.com/item?id=50299361", "by": "leptons", "date": "2026-10-30", "version": null, "stance": "neutral", "quote": "`ESP32/` holds an ESP-IDF 4.4 project.", "excerpt": "So it took me more than a week to get around to putting the project together, but I finally did tonight. I just got done soldering the parts today (36 parts total). The only thing that was wrong was one capacitor had the wrong footprint size, but I was able to make it fit on the PCB. I hooked up my serial port ESP32 firmware flasher, got the firmware flashed on the first try. I connected to the ESP32 via wifi, plugge", "context": "", "use_case": "ESP32 firmware", "switched_from": "", "story": "AI-assisted PCB design for KiCad 10"}, {"id": 804532976, "item_id": 50283311, "url": "https://news.ycombinator.com/item?id=50283311", "by": "everforward", "date": "2026-10-29", "version": null, "stance": "recommend", "quote": "Mostly works fine.", "excerpt": "That\u2019s why esp-idf has components. I have a bunch of components that are basically \u201ccompile if this SDK config is set, otherwise pretend you\u2019re an empty file\u201d using macros. Then I just pull in all my components. The ones I use will get compiled, the ones I don\u2019t won\u2019t. Mostly works fine. Eventually you will run out of NVRAM to save binaries on, but another esp-32 is like $3.", "context": "embedded hobbyist/developer", "use_case": "ESP32 firmware components", "switched_from": "", "story": "Raspberry Pi Zero 3W and Pi 4 Model A spotted in device trees"}, {"id": 799858881, "item_id": 49991180, "url": "https://news.ycombinator.com/item?id=49991180", "by": "ricardobeat", "date": "2026-10-07", "version": null, "stance": "compare", "quote": "lighter than ESP-IDF", "excerpt": "I use arduino-cli exclusively, lighter than ESP-IDF and works completely standalone from the IDE.", "context": "", "use_case": "", "switched_from": "", "story": "ESP32-C3 Adblock"}, {"id": 792913971, "item_id": 49557123, "url": "https://news.ycombinator.com/item?id=49557123", "by": "humpf", "date": "2026-09-03", "version": null, "stance": "neutral", "quote": "Technologies: Python, SQL, SQLite, Parquet, pandas, GitHub Actions, ESP-IDF/C,", "excerpt": "Location: Kansas City metro, US Remote: Yes Willing to relocate: Yes Technologies: Python, SQL, SQLite, Parquet, pandas, GitHub Actions, ESP-IDF/C, DSP (RANSAC phase-slope fitting), web scraping, ETL R\u00e9sum\u00e9/CV: https://braedenkeena.pages.dev Email: Braeden@thekeenas.com Data engineer. I build recurring collection pipelines against public sources, and the thing I care most about is the failure mode where a pipeline ke", "context": "Data engineer", "use_case": "ESP32 firmware", "switched_from": "", "story": "Ask HN: Who wants to be hired? (September 2026)"}, {"id": 786507090, "item_id": 49156693, "url": "https://news.ycombinator.com/item?id=49156693", "by": "humpf", "date": "2026-08-03", "version": null, "stance": "neutral", "quote": "custom ESP-IDF firmware", "excerpt": "Location: Kansas City, KS (US Central) Remote: Yes Willing to relocate: No Technologies: Python, web scraping and data extraction, ETL pipelines, Playwright, BeautifulSoup, Tesseract OCR, PostgreSQL, SQLite, pytest, GitHub Actions, Astro, Cloudflare Pages, C / ESP-IDF, NumPy R\u00e9sum\u00e9/CV: https://braedenkeena.pages.dev Email: braeden@thekeenas.com I build data pipelines that know when they're lying to you. GAScout (http", "context": "", "use_case": "", "switched_from": "", "story": "Ask HN: Who wants to be hired? (August 2026)"}, {"id": 783858384, "item_id": 48991149, "url": "https://news.ycombinator.com/item?id=48991149", "by": "Joel_Mckay", "date": "2026-07-21", "version": null, "stance": "recommend", "quote": "The Esp FreeRTOS projects are a great little ecosystem, and will offer quite a bit more insight than Arduino", "excerpt": "The Esp FreeRTOS projects are a great little ecosystem, and will offer quite a bit more insight than Arduino pseudo-C++ silent-polled architecture. In general, it depends what you want out of the ecosystems. For quickly setting up a proof of concept, an Arduino used to be good for the exhaustive documentation, examples, community, and labs. The modern Arduino integrated product line is now similar to other locked eco", "context": "", "use_case": "embedded firmware learning", "switched_from": "", "story": "Arduino Launches Plug-and-Play Modules for Long-Range Sensor Projects"}, {"id": 783307217, "item_id": 48956701, "url": "https://news.ycombinator.com/item?id=48956701", "by": "jackb4040", "date": "2026-07-18", "version": null, "stance": "compare", "quote": "It was surprising to see Arduino vs ESP-IDF even mentioned as a real decision to be made for a market product.", "excerpt": "This is so cool, I love seeing more and more epaper projects! I would love some deeper technical blogs like what Eric Migikovsky is doing at Pebble. It was surprising to see Arduino vs ESP-IDF even mentioned as a real decision to be made for a market product. The battery life would obviously be nowhere near optimal, but I'm surprised if you could even keep a real project of any scale manageable within the Arduino fra", "context": "", "use_case": "e-reader firmware framework", "switched_from": "", "story": "Open Book Touch: open-source e-reader"}, {"id": 762062624, "item_id": 47628914, "url": "https://news.ycombinator.com/item?id=47628914", "by": "toast0", "date": "2026-04-03", "version": null, "stance": "recommend", "quote": "", "excerpt": "> I'm more hopeful for single-pair ethernet to gain momentum though! I keep looking for a reasonably priced 10baseT to 10Base-T1L bridge... everything commercial seems too expensive (for me) and the two hobby designs [1] [2] I've seen are not orderable :( But I'm seeing more commercial options lately, so that's hopeful. [1] http://robruark.com/projects/10BASE-T1L/10BASE-T1L.html [2] https://matthewtran.dev/2024/08/10", "context": "", "use_case": "Ethernet support on ESP32", "switched_from": "", "story": "ESP32-S31: 320MHz 2C RV32IMAFCP+CLIC, 512KB SRAM, GbE, 802.11ax, 61 GPIO"}, {"id": 761994208, "item_id": 47624638, "url": "https://news.ycombinator.com/item?id=47624638", "by": "elcritch", "date": "2026-04-03", "version": null, "stance": "recommend", "quote": "ESP-IDF supports it well", "excerpt": "Nah, ESP32's have had ethernet capability for a while and ESP-IDF supports it well. I've been using one I built for 5+ years now. Unfortunately RMII (ethernet phy) interface takes up a lot of the GPIO pins. This part looks like it'll remedy that issue. There's two ESP32 boards that have been around for a while with PoE: - https://www.tme.com/us/en-us/details/esp32-poe/development-kits-for-data-transmission/olimex/ - ", "context": "", "use_case": "", "switched_from": "", "story": "ESP32-S31: 320MHz 2C RV32IMAFCP+CLIC, 512KB SRAM, GbE, 802.11ax, 61 GPIO"}, {"id": 754025761, "item_id": 47126610, "url": "https://news.ycombinator.com/item?id=47126610", "by": "hathawsh", "date": "2026-02-23", "version": null, "stance": "neutral", "quote": "ESP-IDF is built on C and I can write C code just fine.", "excerpt": "While Rust is excellent, you must acknowledge that Rust has issues with compilation time. It also has a steep learning curve (especially around lifetimes.) It's much too early to say Rust is the \"final\" language, especially since AI is driving a huge shift in thinking right now. I used to think that I would never write C code again, but when I decided recently to build something that would run on ESP32 chips, I reali", "context": "", "use_case": "ESP32 firmware development", "switched_from": "", "story": "Ladybird Browser adopts Rust"}, {"id": 753219122, "item_id": 47076195, "url": "https://news.ycombinator.com/item?id=47076195", "by": "dekhn", "date": "2026-02-19", "version": null, "stance": "neutral", "quote": "It wrote the entire ESP-IDF project", "excerpt": "I am a professional software developer who has been programming for 40 years (C, C++, Python, assembly, any number of other languages). I work in ML (infrastructure, not research) and spent a decade working at Google. In short, I consider Gemini to be a highly capable intern (grad student level) who is smarter and more tenacious than me, but also needs significant guidance to reach a useful goal. I used Gemini to com", "context": "", "use_case": "ESP32 firmware framework", "switched_from": "", "story": "Gemini 3.1 Pro"}, {"id": 748155424, "item_id": 46759714, "url": "https://news.ycombinator.com/item?id=46759714", "by": "thesh4d0w", "date": "2026-01-25", "version": null, "stance": "neutral", "quote": "It gives you a 256bit block to work with", "excerpt": "This is the only way I could come up with that would allow an end user to do a full factory reset, and end up back in a known good secure state afterwards. Storing it in the firmware would mean every user has the same key. Storing it in eeprom means a factory reset will clear it. This allows me to ship hardware with the default key on a sticker on the side, and let's a non technical user reset it back to that if they", "context": "", "use_case": "ESP32 eFuse API", "switched_from": "", "story": "OnePlus update blocks downgrades and custom ROMs by blowing a fuse"}, {"id": 744408082, "item_id": 46525505, "url": "https://news.ycombinator.com/item?id=46525505", "by": "pjmlp", "date": "2026-01-07", "version": null, "stance": "neutral", "quote": "Or even ESP32, https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/cplusplus.html", "excerpt": "Some people have the skills to make C++ work on a GBA, https://github.com/GValiente/butano Arduino, https://docs.arduino.cc/arduino-cloud/guides/arduino-c/ Or even ESP32, https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/cplusplus.html Others do not. As for C does not such thing, strangly there are enough examples from TI, Microchip, Atmel that prove otherwise.", "context": "", "use_case": "", "switched_from": "", "story": "C Is Best"}, {"id": 736129345, "item_id": 46008084, "url": "https://news.ycombinator.com/item?id=46008084", "by": "cptskippy", "date": "2025-11-21", "version": null, "stance": "recommend", "quote": "Well you can use PlatformIO/VSCode and the ESP-IDF.", "excerpt": "> But I've only programmed Esp32s using the arduino dev environment. Well you can use PlatformIO/VSCode and the ESP-IDF. If you're ok with the Arduino 2 framework, then you can use PlatformIO as well. Unfortunately Arduino 3 support isn't there yet so a lot of libraries like HomeSpan won't work on PlatformIO at the moment. https://github.com/platformio/platform-espressif32/issues/1225", "context": "", "use_case": "", "switched_from": "", "story": "Arduino published updated terms and conditions: no longer an open commons"}, {"id": 735764352, "item_id": 45985272, "url": "https://news.ycombinator.com/item?id=45985272", "by": "mort96", "date": "2025-11-19", "version": null, "stance": "recommend", "quote": "the ESP-IDF, which is a pretty good C-style interface", "excerpt": "Espressif has a pretty good Arduino compatibility layer for the ESP32 series. So you can follow Arduino tutorials and almost everything will \"just work\". This what I use for quick and dirty projects. For more \"serious\" things, you have the ESP-IDF, which is a pretty good C-style interface to all sorts of hardware features. Less newbie friendly than the Arduino interface, but gives you more control. And it can be used", "context": "", "use_case": "", "switched_from": "", "story": "The Death of Arduino?"}, {"id": 735325760, "item_id": 45957860, "url": "https://news.ycombinator.com/item?id=45957860", "by": "roger_", "date": "2025-11-17", "version": null, "stance": "neutral", "quote": "Been working on this very idea casually for couple years with ESP-IDF", "excerpt": "Been working on this very idea casually for couple years with ESP-IDF and I could never get the statistical signal processing just right (by my definition). Things I've tried: adapting filtering (LMS, Kalman), kernel methods (NEWMA, MMD), detectors (CUSUM, GLR), dimensionality reduction (random projection, online PCA), whitening, etc. I use a single ESP32 in STA/AP mode which sniffs ACK packets with a specific destin", "context": "", "use_case": "Wi-Fi CSI motion detection", "switched_from": "", "story": "Show HN: ESPectre \u2013 Motion detection based on Wi-Fi spectre analysis"}, {"id": 734325969, "item_id": 45895373, "url": "https://news.ycombinator.com/item?id=45895373", "by": "announcer4614", "date": "2025-11-11", "version": null, "stance": "neutral", "quote": "I set ESPHome to use IDF under the hood", "excerpt": "I was actually pleased with how cheap it ended up: less than $20 USD for the board + assembly + every component. I set ESPHome to use IDF under the hood, you can check out my full ESPHome config for this: https://git.ellis.codes/e/esphome-configs/src/branch/main/vornado.yaml", "context": "", "use_case": "ESP32 framework", "switched_from": "", "story": "My fan worked fine, so I gave it WiFi"}]}