# Klipper ESP32 support

**URL:** <https://klipper.discourse.group/t/klipper-esp32-support/25503>\
**Category:** Developers\
**Created:** [January 8, 2026, 9:00pm UTC](https://klipper.discourse.group/t/klipper-esp32-support/25503 "2026-01-08T21:00:40Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![hcet14](https://avatars.discourse-cdn.com/v4/letter/h/ecd19e/32.png) [@hcet14](https://klipper.discourse.group/u/hcet14)\
**Post date:** [January 8, 2026, 9:00pm UTC](https://klipper.discourse.group/t/klipper-esp32-support/25503/1 "2026-01-08T21:00:40Z")

</div>

Hi nefelim4ag and koconnor,  
thanks for your kind replies.

@nefelim4ag

> [@Klipper development goals for 2026](https://klipper.discourse.group/t/klipper-development-goals-for-2026/25494/2):
>
> It is not possible to implement it reliably with an intermediate layer like RTOS (or whatever is here on ESP).

ESP32s run no RTOS, but  
As the name indicates, FreeRTOS [FreeRTOS Overview - ESP32 - — ESP-IDF Programming Guide v5.5.2 documentation](https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/system/freertos.html), [https://www.freertos.org](https://www.freertos.org) is licenced under MIT open source license and might be a solution for us.

@koconnor  
Of course, take your time.

> [@Klipper development goals for 2026](https://klipper.discourse.group/t/klipper-development-goals-for-2026/25494/3):
>
> Other developers are certainly welcome to post their goals.

Sorry I’m no developer. I just can write simple phyton scripts 😢, mechanics and electronics are ok.

The background for my request is…  
I just bought a “cheap” laser engraver/cutter and read a lot about those machines before and after buying. Almost all laser engraver/cutter mainboards use an ESP32. I even found a 3D printer board with ESP32 and 4 drivers [https://www.fysetc.com/en-de/products/fysetc-e4-board-with-built-in-wi-fi-and-bluetooth-4-pcs-tmc2209-240mhz-16m-flash-3d-printer-control-board-based-for-3d-printer?srsltid=AfmBOookmGjTLuN0Bh1wjF6iRKy-pK410GYAEeFzL5FN8EqIQVno2tLe](https://www.fysetc.com/en-de/products/fysetc-e4-board-with-built-in-wi-fi-and-bluetooth-4-pcs-tmc2209-240mhz-16m-flash-3d-printer-control-board-based-for-3d-printer?srsltid=AfmBOookmGjTLuN0Bh1wjF6iRKy-pK410GYAEeFzL5FN8EqIQVno2tLe)  
I hope Klipper supports sometime in the future laser engraver/cutters or CNC machines. Laser engraver/cutters are way less complex compared to an e.g. CNC milling machine. Just two axes plus the laser. These “cheap” machines with diode lasers run with grbl (g-code) [GitHub - grbl/grbl: An open source, embedded, high performance g-code-parser and CNC milling controller written in optimized C that will run on a straight Arduino](https://github.com/grbl/grbl).  
Free software for the laser engraver/cutter is the cool [GitHub - arkypita/LaserGRBL: Laser optimized GUI for GRBL](https://github.com/arkypita/LaserGRBL).  
Klipper is in my eyes an industrial standard and pushes new 3D products. You could trade mark Klipper (unaware if you already did).

---

<div class="post-metadata">

**Author:** ![nefelim4ag](https://yyz2.discourse-cdn.com/free1/user_avatar/klipper.discourse.group/nefelim4ag/32/2387_2.png) [@nefelim4ag](https://klipper.discourse.group/u/nefelim4ag)\
**Post date:** [January 8, 2026, 9:18pm UTC](https://klipper.discourse.group/t/klipper-esp32-support/25503/2 "2026-01-08T21:18:27Z")

</div>

> [@hcet14](#):
>
> FreeRTOS

It is the intermediate layer. So, we can’t really control anything or guarantee anything (Linux MCU is the example).  
The last attempt, that I’m aware of, is:

- [History for src - fermino/klipper-esp32-port · GitHub](https://github.com/fermino/klipper-esp32-port/commits/master/src)
- Kllipper dev discord: [Discord](https://discord.com/channels/431557959978450984/801826273227177984/1443380978927013948)

IIRC, he did some stuff to disable half of the RTOS, to simply guarantee stepper timings.

I guess you can ping him on discord, he will be glad.

So, again, anyone can try, but there will be caveats over RTOS, and I’m not sure it is the right solution overall.  
(Or you have to rewrite half of the firmware so it will play nicely with RTOS).

This is the only repo that I’m able to find with something bare metal: [GitHub - cpq/mdk: A bare metal SDK for the ESP32 & ESP32C3](https://github.com/cpq/mdk)  
So, it is technically possible to do so.

-Timofey

---

<div class="post-metadata">

**Author:** ![hcet14](https://avatars.discourse-cdn.com/v4/letter/h/ecd19e/32.png) [@hcet14](https://klipper.discourse.group/u/hcet14)\
**Post date:** [January 8, 2026, 9:38pm UTC](https://klipper.discourse.group/t/klipper-esp32-support/25503/3 "2026-01-08T21:38:26Z")

</div>

Thanks Timofey,  
well, as stated before “I’m no programmer”. I understand what you wrote, but I’m not able to help.  
Maybe some of those people can help [Features request MCU support for ESP32 · Issue #199 · Klipper3d/klipper · GitHub](https://github.com/Klipper3d/klipper/issues/199).  
megablue, jeffeb3, hg42, mmone, FolkertRA, jakep82, jubjub64, MCTaylor17, IXMAN89, beikeland, chmondkind, marcboivin, mpalpha, cinehorse, Darkstar77, Rmdhn1, rocknstorm, indyjonesnl, shodanx2, andremalenfant, creatormir, Giuseppe499, victorhalla, ulope, chrisalbertson, MR-VENOM, DragarX, nikhil-robinson, creatormir

Don’t know, if these people get a message.

---

<div class="post-metadata">

**Author:** ![mykepredko](https://yyz2.discourse-cdn.com/free1/user_avatar/klipper.discourse.group/mykepredko/32/2085_2.png) [@mykepredko](https://klipper.discourse.group/u/mykepredko)\
**Post date:** [January 9, 2026, 3:07am UTC](https://klipper.discourse.group/t/klipper-esp32-support/25503/4 "2026-01-09T03:07:30Z")

</div>

> [@hcet14](#):
>
> megablue, jeffeb3, hg42, mmone, FolkertRA, jakep82, jubjub64, MCTaylor17, IXMAN89, beikeland, chmondkind, marcboivin, mpalpha, cinehorse, Darkstar77, Rmdhn1, rocknstorm, indyjonesnl, shodanx2, andremalenfant, creatormir, Giuseppe499, victorhalla, ulope, chrisalbertson, MR-VENOM, DragarX, nikhil-robinson, creatormir

Put in an “@” sign before their names, ie: @jeffeb3 , @beikeland , @victorhalla , @ulope 7 @nikhi_robinson and they should get a notification saying that they’re being mentioned - these are the only ones I found with active IDs here.

---

<div class="post-metadata">

**Author:** ![jeffeb3](https://yyz2.discourse-cdn.com/free1/user_avatar/klipper.discourse.group/jeffeb3/32/2821_2.png) [@jeffeb3](https://klipper.discourse.group/u/jeffeb3)\
**Post date:** [January 9, 2026, 3:27am UTC](https://klipper.discourse.group/t/klipper-esp32-support/25503/5 "2026-01-09T03:27:00Z")

</div>

I have been summoned!

Honestly though, I won’t be much help. ESP32 as a target MCU would be epic. The arduino/platformIO version does indeed run on FreeRTOS. In my opinion, it is very close to vxworks, which is pretty awful to deal with if you’re not familiar. I’m not sure if it has to be removed or if that is just because that developer felt more comfortable without it.

There are some very good alternative for esp32 firmware. FluidNC being the main one. Most esp boards have very little IO, but the IO they have is fast and flexible. But even to run a CNC machine, boards like the Jackpot CNC controller need an ISP GPIO expansion, which will make it even more complex. I haven’t ever thought the esp32 was a good fit for 3D printing. It is great for CNC though.

It’s really a chicken and egg problem. If klipper worked on it (and had a good way to add gpio expansion), board manufacturers would almost certainly choose to build boards for 3D printing. But the boards need to exist and someone with the experience and motivation needs to make it.

---

<div class="post-metadata">

**Author:** ![nikhil-robinson](https://yyz2.discourse-cdn.com/free1/user_avatar/klipper.discourse.group/nikhil-robinson/32/21583_2.png) [@nikhil-robinson](https://klipper.discourse.group/u/nikhil-robinson)\
**Post date:** [January 9, 2026, 4:10am UTC](https://klipper.discourse.group/t/klipper-esp32-support/25503/6 "2026-01-09T04:10:38Z")

</div>

Hey, I got it working on the ESP32! Klippy runs on my PC and can control motors using ESP32 boards, I’ve tested it on ESP32, ESP32S3, and ESP32H2. Making the Klippy dict is still a bit of a hack because the ESP-IDF build system is weird. You have to build it twice for the compile\_times text to show up. If anyone has a fix, feel free to open a PR.

Here is the repo : [GitHub - nikhil-robinson/klipper\_esp32: Klipper\_ESP32 is an implementation of the Klipper protocol for Espressif's ESP32 microcontroller set.](https://github.com/nikhil-robinson/klipper_esp32)

---

<div class="post-metadata">

**Author:** ![hcet14](https://avatars.discourse-cdn.com/v4/letter/h/ecd19e/32.png) [@hcet14](https://klipper.discourse.group/u/hcet14)\
**Post date:** [January 9, 2026, 3:11pm UTC](https://klipper.discourse.group/t/klipper-esp32-support/25503/7 "2026-01-09T15:11:18Z")

</div>

Welcome nikhil-robinson,

god bless you, please, Mr. Robinson (I know you heard that one before)! Awsome, thank you.  
I’ll try it with the laser engraver/cutter in the near future. It uses [MKS-DLC32/MKS-ESP32-PRO-main/hardware/LS ESP32 PRO V2.1\_002/LS ESP32 PRO V2.1\_002 SCH.pdf at main · makerbase-mks/MKS-DLC32 · GitHub](https://github.com/makerbase-mks/MKS-DLC32/blob/main/MKS-ESP32-PRO-main/hardware/LS%20ESP32%20PRO%20V2.1_002/LS%20ESP32%20PRO%20V2.1_002%20SCH.pdf). Even if I brick it wouldn’t matter. Those boards are not expensive. You can get the boards for around 20 bucks @ ali.

Is that worth a new Klipper PR?

edit:  
First project with the laser will be a single layer PCB using acid. When successfully completed a two layer PCB.  
Then buying an IR laser and trying it without acid.  
I expect to reach a resolution of 19.685 mils.

hcet14

---

<div class="post-metadata">

**Author:** ![fermino](https://avatars.discourse-cdn.com/v4/letter/f/ecae2f/32.png) [@fermino](https://klipper.discourse.group/u/fermino)\
**Post date:** [February 3, 2026, 10:37pm UTC](https://klipper.discourse.group/t/klipper-esp32-support/25503/8 "2026-02-03T22:37:01Z")

</div>

Hey there! I’ve also been playing with this for a while (out of spite, I have a board and I want it working xD). I initially started tinkering with @nikhil-robinson’s fork and got a bit carried away while trying to get FreeRTOS out of the way.

Things are looking good in that regard, with latencies being predictable (at least in the tests I’ve done).

@nikhil-robinson after fighting cmake for a while I got to a solution that I think is decent enough for the CTR stuff, using ESP-IDF components. There’s a “klipper” component that is built first (but not linked), and then a “[main](https://github.com/fermino/klipper-esp32-port/tree/master/src/esp32/idf_components/main)” component that generates and includes the CTR, that is built and linked against everything else. If you want to take a look [here it is](https://github.com/fermino/klipper-esp32-port/blob/master/src/esp32/CMakeLists.txt), feel free to reuse anything you deem useful.

I haven’t fully integrated it with klipper’s Makefiles yet, but that’s on the list too 😛

I just got back from some vacation time and I’ve been planning to start building an actual printer around it so there’s that, if anyone wants to take a stab at it, feel free to give it a shot! 🙂

---

<div class="post-metadata">

**Author:** ![XiaoK](https://yyz2.discourse-cdn.com/free1/user_avatar/klipper.discourse.group/xiaok/32/1618_2.png) [@XiaoK](https://klipper.discourse.group/u/XiaoK)\
**Post date:** [August 31, 2026, 9:54am UTC](https://klipper.discourse.group/t/klipper-esp32-support/25503/9 "2026-08-31T09:54:40Z")

</div>

I recently implemented Klipper support for ESP32 (non-RTOS version). Those interested can test it.

Currently supports ESP32S3 and ESP32C3; other models have not been tested.

Supported: USB, GPIO, I2C, SPI, PWM, ADC, CAN, UART

CAN on ESP32C3 has not been tested.

USB on the ESP32C3 series only supports the manufacturer’s `serial-jtag cdc` and does not support custom descriptors.

link：[repo](https://github.com/kluoyun/klipper/tree/dev/esp32)
