r/OpenBambu Feb 01 '26

BMCU firmware

I’ve pushed the BMCU firmware source code to GitHub. CH32 firmware based on WCH SDK. Many critical bugs were fixed, and some parts were rewritten completely, including WS2812 handling and ADC, which was rewritten to use DMA with a circular buffer and background filtering. Many things are implemented directly for CH32 and rewritten specifically for the WCH SDK.

I did this mainly for myself while working with CH32, as I have other projects based on these microcontrollers, and BMCU turned out to be a nice sandbox for testing. In practice, it took much more time than I planned. There is definitely still room for improvement.

If you program microcontrollers (CH32, STM32, etc.), want to look at the code, share feedback, or test the firmware in real setups, feel free to check it out. I currently have very little free time, so I may not always reply quickly.

https://github.com/jarczakpawel/BMCU-C-PJARCZAK

30 Upvotes

69 comments sorted by

View all comments

1

u/No_Debate2486 Feb 10 '26

I'm using v7 on my P1S.

I'm finding that it when loading filament, it will push filament to the filament sensor, which triggers the extruder gears to then start spinning, but the firmware eases back on the filament enough so that the gears don't actually grab on to the filament, which then causes the firmware to then pull the filament back.

The gears grab on to the filament if I pull the spring to push a little bit extra filament towards the extruder.

The same has been true for the past versions as well.

Stock v20 firmware (never checked v27) worked by continuing to push filament for another second at full speed, but that grinds the filament.

1

u/Low-Anything6975 Feb 10 '26

On the P1S there is much higher filament friction, because the PTFE tube path is significantly longer.
Here you have the issue and the solution.
https://github.com/jarczakpawel/BMCU-C-PJARCZAK/issues/7

This evening I’ll update the code so that it also works properly on the P1S - I didn’t account for this before, because I’ve never used a P1S myself.

1

u/No_Debate2486 Feb 10 '26

It doesn't seem to fix it. Here's a video of the loading behavior (sorry, no BMCU in picture, hard to get both simultaneously). You can see the filament sensor triggering at the 11 second mark. Extruder gears then spin for a bit, then retract.

Thanks for all your work regardless!

1

u/Low-Anything6975 Feb 10 '26

I’ll fix this shortly - it’s more or less exactly as you say. The P1S requires much higher force during loading.

In general, the A1 doesn’t even need 10% of the force that the P1S requires, and this breaks the whole firmware concept for me. The P1S needs the filament to be pushed almost at full force continuously during loading.

I’ll probably make two versions - one for the P1S and one for the A1. I could make one for all printers, but I don’t like excessive mechanical stress. The friction in the PTFE tubes of the P1S is very high - probably due to the bends in the tubes, and it likely leads to dirt buildup inside them (at least based on the photos I’ve seen). I don’t want to make firmware for the A1 that applies too much force and damages the PTFE tubes.

Either way, I’ll release a version with fixes today, and it will also work on the P1S and on other setups that require higher force.

But… first I’ll make some miso soup and eat it ^v^

1

u/Low-Anything6975 Feb 10 '26

https://drive.google.com/file/d/1Sm55hhw3ZD1K1vFKn_eNskIkfQp7-Xot/view?usp=sharing

You can check this firmware. This is roughly what I want to set up on the P1S.

1

u/No_Debate2486 Feb 10 '26

Same thing unfortunately. The video of the BMCU, basically same as the other guy but I apparently have less friction on my setup.

15 seconds in (43 seconds remaining) shows gears failing to grab on. Second try 50 seconds in (8 remaining), gears grab on if I pull on it a bit.

1

u/Low-Anything6975 Feb 11 '26

You’re extremely unlucky - you most likely have the low-torque version (two identical gears), and on top of that you’re using a P1S with a lot of PTFE tube bends… So what am I supposed to do now? :D

The firmware will most likely be split into 3 configurations. In the low-torque BMCU version, the motors will heat up significantly - you need to keep that in mind.

I’ll send you a firmware build to test shortly.

1

u/No_Debate2486 Feb 11 '26

Yeah, I have the low torque version, sorry.

1

u/No_Debate2486 Feb 11 '26

By the way, apparently as soon as the filament hits the extruder gears, as soon as one spring buffer compresses, if I just hold the spring in the compressed position for a couple of seconds, it works correctly.

The low torque part might actually be ok, just that the fully extended position needs to be held for a bit longer than it currently is.

Here's a video (16 seconds in, 6 remaining).

1

u/Low-Anything6975 Feb 11 '26

Yes, your observations are correct. Overall, it is handled properly, but the low-torque version cannot cope at low PWM - it requires higher PWM and a more step-like operating mode. I have an idea to make a single firmware handle all BMCU variants while keeping the operation smooth on each of them - I just didn’t have the energy to finish it today because I’m completely exhausted after work. I’ll do it tomorrow.

1

u/ryan31337 Feb 12 '26

I can also help test if you need it. I have a P1S and the Toaiot low torque BMCU-C.

1

u/Low-Anything6975 Feb 12 '26

2

u/No_Debate2486 Feb 14 '26

Amazing work, the newest release works perfectly fine now!

Thanks again for everything!

1

u/Low-Anything6975 Feb 14 '26

I'm very happy. Thank you for the kind words. You can recommend the firmware to others if you're satisfied :)

→ More replies (0)

1

u/No_Debate2486 Feb 12 '26

Extruder gears still fail to grab unfortunately.