Ever since Bambu launched the CyberBrick TimeLapse Kit, I was wondering why that product exists. And it has a few interesting characteristics:
- it connects officially to the RS-485 bus of all the printer models
- it has an MCU with a number of GPIO pins
And that sounds a lot like the (ill-fated and never launched) extension board to me. It even uses the same G-Code (M1004 S5 P1) to take a photo as the extension board does (according to the docs on the wiki).
So I spent a weekend poking around to see if there is anything more to the time lapse kit.
Unlike the extension board (which uses an ARM cortex, according to the photos on the wiki), this uses the CyberBrick module which is an ESP32-C3 (a RISC-V chip). Which is locked pretty tight. Security fuses blown, software encrypted, only the official flashing tool can put software on it. The “open-source” repo is a joke, the “time lapse app” is all of 27 lines of setup code (“bring up the shutter module, bring up bluetooth, start the shutter module, the end”) and everything interesting is hidden in the firmware which is well locked down. Someone with more python knowledge than I have might be able to scrape that off the chip but as this is a python compiler, it is more likely that there is no readable source code but it would require full decompilation.
I use the G-Code commands from the extension board to see if I can wiggle the different GPIO pins (which are documented in the micropython documentation available) but had zero success.
While the command for “take a photo” for the Time Lapse and extension boards are the same, I have not found any other command that the time lapse module might understand.
Which is a shame. The time lapse module is 90% there: it has an optocoupler for switching things (available through the little connector), can drive a servo and has an additional multi-color LED and a switch. It also has all the software and drivers to register with the bambu bus and react on custom G-Code commands (M1004 seems to be the favorite here). Only the pieces don’t connect and everything interesting is hidden away behind a single purpose flash image.
Hey bambu, how about a new image for the Cyberbrick that offers G-Code for the servo, LED, connector and switch (and maybe even the unused GPIO pins for anyone that is adventurous)?
Alternatively, as all the hardware on the time lapse board seems straightforward, it should be possible to put together a piggyback board (I frankensteined one that sits between the time lapse module and the cyberbrick to look at the signals from the pins) that can “emulate” an extension board?
There is not a lot of hardware on the time lapse board: A RS-485 transceiver chip, a neopixel, a switch, an optocoupler and a servo connector. Anyone with more knowledge about circuits than I have, an ohmmeter, and some patience should be able to reverse-engineer that). And there is already some documentation on the bambu bus protocol available. Now that there is (officially sanctioned!) hardware that connects to the bambu bus and there is already G-Code support in the Bambu firmware (because they shipped some extension boards and I am pretty sure that they have not just bricked those), it should be possible to do that.
And the time lapse hardware is dirt cheap (and on sale right now).
Anyone interested?