Awesome
Reverse engineering the Anycubic Photon Mono 4K
This documents the reversing of the Mono 4K, which helps in writing the open-source firmware Turbo Resin.
Table of content
- Part 1: Discovery of the hardware and firmware extraction
- Part 2: Planning the read of the external flash
- Part 3: Creating a Rust development environment
- Part 4: Dumping content of the external flash
- Part 5: Graphics extraction from the external ROM
- Part 6: Taking control of the user-facing LCD display
- Part 7: Detecting touches on the display and improving on the original firmware
- Part 8: Driving the Z-axis stepper motor
- Part 9: Driving the LCD Panel, and displaying a print layer from the USB stick
- Part 10: Elegoo Saturn: display images from USB to the LCD panel
Introduction
The Anycubic Mono 4K is my first 3D printer. It's been quite a steep learning curve to print with resin, but it's really satisfying to make objects once the workflow is ironed out.
Here's the printer.
Here's an example of a printed object.
There are visible lines due to the lack of anti-aliasing support on the printer.
Its LCD screen outputs only fully transparent, or fully opaque pixels, no gray-scale.
Apparently, we have to wait for a firmware update, but I'd rather not wait.
Update: The original firmware handles anti-aliasing just fine.
Reverse engineering the printer will guide our implementation of a new firmware, Turbo Resin, so we can add the features that we want.
Resources
- Datasheets: datasheet folder
- Original firmware: firmware folder
- UI images: /firmware/ui folder
- PCB photos: pcb folder
- Pin config: print_ports_config.py and port_config.txt
- Turbo Resin firmware: (https://github.com/nviennot/turbo-resin)
- Our discord channel: https://discord.gg/9HSMNYxPAM