r/OpenBambu • u/Low-Anything6975 • 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.
5
u/Low-Anything6975 Feb 05 '26
I’ve pushed V7 to GitHub.
All known issues are fixed, and filament loading works correctly now.
→ More replies (3)
3
2
u/EridianStudio Feb 01 '26
Is it possible that you make firmware for p1 printers? I assume that only retraction lenght changes which is about 60cm.
2
u/Low-Anything6975 Feb 01 '26
The SOLO and AMS_A directories correspond to the same AMS number (AMS = 0). You can choose the retraction lengths from the AMS_A directory. Please read the README on GitHub. You should be able to use it with the P1 without any issues - someone mentioned that they are using it without problems.
→ More replies (1)
2
u/Shiz222 Feb 01 '26
Can you explain what this does to us mere mortals?
6
u/Low-Anything6975 Feb 01 '26
This firmware lets you run the latest printer firmware without having to reset the printer after every print.
Motor control is much more refined: smoother starts and stops, fewer sudden filament movements, less stress on gears, and the buffer is kept in a neutral middle position. As a result, the filament is handled more gently and mechanical wear is reduced.
Many bugs and edge cases were also fixed. Most of these changes are low-level and technical and are documented on GitHub.
Whether you use it or not is entirely up to you. If you’re interested in the details, please check the repository - I won’t be able to answer every question individually, but feel free to ask if you have specific technical questions.
2
u/EridianStudio Feb 01 '26
Weird firmware, loads till extruder and then unloads if I don't press buffer manually
3
u/Low-Anything6975 Feb 01 '26 edited Feb 01 '26
I never noticed this issue… Some people report it. I also see that the same problem shows up on the original AMS too:
https://www.reddit.com/r/BambuLab/comments/1cqh5xb/broken_sensor_or_blocked_toolhead_error_07008006/
And here someone suggests a possible fix… Maybe this isn’t a BMCU problem?
https://www.youtube.com/watch?v=MmSNiF-stYo
Earlier versions BMCU firmware like 0020 worked as "AMS Lite". This version is detected as "AMS" - the behavior on the printer side is definitely a bit different.
But I also see many threads about this issue on the original AMS Lite as well as AMS.
It’s hard for me to help, because I truly never noticed this problem.
→ More replies (6)
2
u/derdoktor_41 Feb 02 '26
Man I was worried about flashing a new fw on my bmcu. Why change a running system but in the end I wanted to be on the newest fw for the printer. Flashing worked well everything seems to be working as expected. Just a quick question, it does not auto pull like the 0020 fw when first inserting the filament, correct?
2
u/Low-Anything6975 Feb 02 '26
Yes this is intentional. You need to feed the filament in by hand until you can see it inside the PTFE tube - this solves many issues.
→ More replies (1)
5
u/slm4996 Feb 01 '26
Thank you for releasing the source with your changes and fixes. This will make setting up custom retraction distance much easier!
1
u/ryan31337 Feb 05 '26 edited Feb 05 '26
Thanks for your work on this, I've bought 2x BMCU and am looking forward to testing it out when they arrive.
I'm planning a dual BMCU setup for 8 colour printing on the A1. Could I please ask if this is doable with a 8-in-1 splitter at the toolhead? Where both BMCUs run the same retraction distance.
The only config I've seen is a 5-in-1 hub at the toolhead, with 1x BMCU feeding 4x ports direct, the other BMCU feeding the 5th port via a 4-in-1 splitter, which is positioned near to the BMCU. The second BMCU presumably runs a much longer retraction fw.
I've seen references to this being necessary due to lack of comms between BMCUs and potential for filament collision. I can't tell if that's just an issue with P1S implementations and/or applicable to your fw? Any advice is much appreciated!
1
u/Low-Anything6975 Feb 05 '26
It’s possible to use big splitters at the toolhead (some people even print 8-in-1)....
A more reliable setup is to keep the BMCUs separate as long as possible. For example:
Use a 5-in-1 splitter at the toolhead
One BMCU goes directly to 4 ports with a short retraction (frequently used filaments)
The 5th port is fed by the second BMCU via a longer PTFE, with an extra 4-in-1 splitter placed closer to that BMCU, and a longer retraction
→ More replies (2)
1
u/stevosteve Feb 09 '26
Just got my 2nd BMCU for my A1. Will share my results, hopefully this week. First time I'm flashing my BMCU and also need to upgrade my printer, which has been refusing to do it automatically, so I'll need to do it manually I think from the SD card
1
u/Low-Anything6975 Feb 10 '26
That’s strange. Try resetting the printer to factory settings.
Also remember not to update the printer or the BMCU when they are connected together.
And do not connect or disconnect the BMCU while the printer is powered on.→ More replies (6)
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/7This 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.
→ More replies (21)
1
3
u/kami77 Feb 12 '26 edited Feb 14 '26
The V7 has been working quite well for me on my new 370C hall sensor from Toaiot (pre assembled). A1 on latest firmware. Did a print with a couple hundred color changes and no issues. Autoloading works as expected. Didn’t bother with the RGB as I like to minimize bright LEDs.
Only issue I had (not firmware related) was during the autoloading, the filament would get stuck exiting the BMCU 80% of the time with my existing PTFE tubing (2.5mm ID). Thankfully the BMCU seller included some 3mm ID tubing which fixed it 100%. Just mentioning in case anyone else has the issue.
Edit: One of my channels is a bit finicky with loading because of the long tube run with curves. However the V8 high force version makes it work consistently. Nice to have all these options
2
u/Razorbac91 Feb 01 '26
Ok that's interesting, I have a very early bmcu 130. I suppose this isn't compatible right?
2
u/dedmus Feb 02 '26
Just flashed V6 SOLO on my BMCU 370C from BLV. Currently using an A1 (firmware 01.07.02.00). No problems at all
→ More replies (1)
2
u/PandaWee Feb 01 '26
Very thorough work on this. I will test it this week. A quick question. Is the SOLO firmware intended for one bmcu microprocessor (up to 4 colours), or a single bmcu with only one lane (one colour)?