Ender 3 v2 board 4.2.2, not able to flash Klipper firmware

Basic Information:

Printer Model: Creality Ender 3 V2
MCU / Printerboard: STM32F103 RET6
Host / SBC Samsung S10
klippy.log

Describe your issue:

I’ve been trying to flash Klipper firmware on my printer, which uses a Creality 4.2.2 board, but I haven’t had any success using the settings shown in the image:

I’m using an 8GB Kingston SD card formatted to FAT32 with the SD Card Formatter tool. This same card has successfully flashed Marlin firmware before.

For Klipper, I renamed the klipper.bin file to something different than the previous firmware (to avoid booting issues), but the board still doesn’t flash. I’ve also tried different bootloader offsets (8KiB and 64KiB) during formatting with no luck.

The compiled .bin file is about 35KB — not sure if that’s expected or if something’s going wrong during compilation. I’m running out of ideas at this point.

If someone could help by compiling the firmware for me (just to rule out any issues on my end), I’d really appreciate it.

Does ls /dev/serial/by-id/* give any output when your printer is connected?

Also, here is a firmware file to try. I used it earlier today.
klipper12.bin.zip (25.7 KB)

You should try flashing the original firmware first.

I successfully flashed the original firmware, and I noticed that the printer doesn’t rename the .bin file to .cur or delete it afterward. Based on that, I decided to try flashing Klipper again (with the file given).

After flashing, I ran the following command to check available serial devices:
:/data/data/com.termux/files/home # ls /dev/serial/by-id/*

Here’s the output:

ls: /dev/serial/by-id/*: No such file or directory

and also ran:

ls -l /dev/tty*

Here’s the output:

:/data/data/com.termux/files/home # ls -l /dev/tty*
crw-rw-rw- 1 root root 5, 0 2025-07-08 21:23 /dev/tty
crw-rw---- 1 system system 10, 86 2025-07-08 21:23 /dev/ttyBCM
crw-rw---- 1 system system 241, 0 2025-07-08 21:24 /dev/ttyGS0
crw-rw---- 1 system system 241, 1 2025-07-08 21:23 /dev/ttyGS1
crw-rw---- 1 system system 241, 3 2025-07-08 21:23 /dev/ttyGS3
crw-rw---- 1 root radio 204, 64 2025-07-08 21:24 /dev/ttySAC0
crw-rw---- 1 bluetooth bluetooth 204, 65 2025-07-09 19:40 /dev/ttySAC1

I appreciate your help

If you’re not getting a .cur file, then you haven’t flashed new firmware into the MCU. Sorry.

What are the parameters that you’re using when you format your SD Card? It should be FAT32 with 4k allocation block size. You should also not do a quick format - you have a fairly small SD Card so the full format shouldn’t take that long.

Also note that the “filename” in filename.bin can’t be any longer than 8 characters - I always use “firmware.bin” just to keep everything simple.

I would recommend that you figure out what you’re doing wrong by trying to format the Creality images that @BoguesUser provided the link to.

Once you are getting .cur files on the SD Card, then try Klipper again with what you’ve learned.

Where did you get your make menuconfig parameters? Along with that, do you have a schematic diagram of the board?

I’m asking about the schematics so we can turn on an LED to provide a positive visual indication that you are Flashing Klipper onto the MCU.

Thanks for the detailed response — really appreciate it.

Just to clarify: I did successfully flash the original Creality firmware — the screen booted properly, and I was able to interact with the printer normally after the flash. That’s why I was surprised that the .bin file wasn’t renamed to .cur or deleted. I understand that’s supposed to be the normal behavior, so I figured something might be off, but it did boot the new firmware.

Regarding the SD card:

  • It’s an 8GB Kingston card.
  • I formatted it to FAT32 using the official SD Card Formatter tool.
  • I’ve tried both 4KB and 8KB allocation sizes, and I’ve also done full (not quick) formats.
  • The filename used was always firmware.bin — kept it under 8 characters to avoid any issues.

After the original firmware flash and seeing it boot correctly, I moved on to Klipper, but that’s where things seem to get stuck — no visible change, no USB device in /dev/serial/by-id/, and no definitive indication of the flash working.

As for make menuconfig, I selected:

  • STM32F103
  • 28KiB bootloader (I also tried 8KiB to be sure)
  • USB (on PA11/PA12) for communication

I don’t have a full schematic of the 4.2.2 board, if it help I could send a picture of the full board, I’d be very interested in your suggestion about toggling an onboard LED to verify Klipper is running. If you can guide me on how to configure that in the firmware, I’m happy to give it a shot.

Thanks again — I’m learning a lot through this process, still new and I appreciate everyone’s patience and help.

On my Ender 3 V2, it didn’t rename to a .cur.

There was no indication of a successful flash except for serial communication being available (once I found a working micro usb cable)

Do you get the same output when you run the command with the original firmware installed?

If so, your USB cable is either bad or you cannot communicate over the usb for some other reason. I had to test several cables until something worked in for me

Also, the settings you posted originally are what I used on my end.

Sorry, I’m not familiar with Creality products.

I see conflicting firmware update guides for Creality products. Some say a .cur file will be produced while other do not say they will be produced.

Actually, I see a lot of conflicting information regarding Creality products. I think the correct schematics can be found here:

Anyway, could you follow the instructions found here:

That seems to be a good quality one and has been recently updated with a newer printer.cfg.


I’m not familiar with the “Samsung S10” that you listed as your host - when I do a search on it, it comes up as a smartphone. Is this what you want to use as your host? Is this what you’re trying to connect to?

If it is, could I suggest that you look at something like a Raspberry Pi 4B as your host? It works very well with Klipper and most of the Klipper documentation and examples use it for reference.

I couldn’t find a guide to running Klipper on an S10 - so for feces and giggles I tried ChatGPT and it starts with:

I’m not sure you want to root your phone on the recommendation of an AI.


I’m thinking that maybe you didn’t have any issues with building and Flashing Klipper onto your Ender 3 4.2.2 board - it’s just that your phone wasn’t set up properly to access the USB connection.

I highly recommend that you buy yourself a Raspberry Pi and go through the Klipper set up for the Ender 3 as is given in the link above.

As suggested, I reflashed the stock Marlin firmware and confirmed the printer boots properly. I then ran ls -l /dev/tty*again, and the output was the same as before — no new serial device appears.

For testing, I tried multiple setups:

  • With the screen attached (I read that detaching it may affect the USB/OTG connection, so I wanted to try both ways).
  • Using several known-good data cables, but through a USB adapter.
  • Also tried one direct cable (no adapter) — although I’m not fully certain this cable supports data transfer.

Still, no sign of a new /dev/tty* or /dev/serial/by-id/ device showing up after flashing.

At this point, I’m starting to wonder — could it be a faulty USB OTG connection on the Ender board itself? If anyone has seen similar behavior or has tips to confirm that, I’d appreciate the insight.

Thanks again for the continued help.

Do you have a computer that you could plug the printer into? This would isolate any issues with the smartphone itself.

I no longer use windows so I’m not sure how to check if the machine is detected. This may help though. https://superuser.com/questions/835848/how-to-view-serial-com-ports-but-not-through-device-manager

Also, make sure your cables actually transfer data, not just power. I’ve had a few that lost data transfer but not power transfer.

Hi everyone,

I wanted to share an update after making some major changes. I switched from using a Samsung host to a Raspberry Pi Zero 2W, and I used KIAUH to simplify the setup.

When I run:

ls -l /dev/serial/by-id/

I get:

total 0
lrwxrwxrwx 1 root root 13 Aug 6 19:30 usb-1a86_USB_Serial-if00-port0 → ../../ttyUSB0

and for:

ls -l /dev/ttyUSB0

get:

crw-rw---- 1 root dialout 188, 0 Aug 6 20:20 /dev/ttyUSB0

I have updated my printer.cfg file to use the new MCU serial port path accordingly.

However, when I open Mainsail, I get the following error:

mcu ‘mcu’: Unable to connect
Once the underlying issue is corrected, use the
“FIRMWARE_RESTART” command to reset the firmware, reload the
config, and restart the host software.
Error configuring printer

Any suggest how to resolve it?

Thanks in advance!

Post your latest klippy.log

Here it is

klippy.log (98.2 KB)

thanks

[mcu]
serial = /dev/serial/by-id/<your-mcu-id>

Umm, seriously?

1 Like

that’s why I´m asking for help, sorry if my situations sounds stupid I’m a newbie,

this is my printer.cfg file and the mcu serial is correct

Sineos: deleted

Please!
When you upload code, use the Preformatted Text feature of the forum editor. Code is better readable then and has no faults due to mis-formatting.
Format

1 Like
  • Your config file is expected to be in /home/mayologutierrez/printer_data/config/printer.cfg
  • Always refer to the klippy.log to check what config is in place. It is the only source of truth
  • Follow some guides, step by step, e.g. Installing Klipper with KIAUH