Custom firmware for JGAurora A5S & A1: A 32-bit 3D printer with Marlin 2.0 support!

For those interested in trying the new (beta) community Marlin 2.0 firmware, please see this post on the JGAurora forum here.

As I previously posted, the JGAurora A5S and JGAurora A1 come with an entirely new motherboard, that uses a new 32-bit processor, using the ST Micro STM32F103ZET6 CPU. While this means we have a lot more processing power available, it introduced a complete break in terms of compatibility with the common Marlin firmware.

The supplied firmware lacked some of the useful features like mesh bed leveling, and babystepping, so there was a few motivations to create a custom firmware. With a range of firmware platforms out there, over on the JGAurora forum we first discussed some of the possible options and approaches for a new 32 bit firmware.

Now, the Marlin firmware is by far the most popular firmware used on 3D printers, so most people have some familiarity with that. Work has been underway to support 32-bit 3D printers for a year or two now, and significant progress has been made, especially quite recently with the STM32F1 based HAL that we needed for this project. Unfortunately, the interface for controlling Marlin only officially supports character LCD and basic black and white graphic LCD’s, alongside physical buttons. The colour LCD and touch interface on the A5S and A1 were looking like they would be likely incompatible.

However, with the printer able to be completely controlled via Octoprint over USB, losing the front interface would not be a complete loss. A “headless” Marlin firmware could still be of some value, and this looked like a good first goal to shoot for.

I broke out the multimeter, and reverse engineered the complete pinout of the CPU on the A5S/A1 motherboard. We soon managed to get the board successfully talking to the computer, and some progress with Marlin was made!

However, the biggest surprise was discovering that the JGAurora board was very very similar in it’s architecture to the MKS Robin board, which someone had already made significant progress on. They had also already done phenomenal work creating a patch to enable the classic marlin display to show on the colour TFT, as well as creating on-screen buttons to emulate a rotary dial on the printer, and I migrated all of this work over to our new firmware.

Unfortunately for me, on the A1 I was using for development, I was running into issues with screen corruption:

It took a few days of hair-pulling troubleshooting before I found that this seemed to be an interference problem. I discovered that by improving the LCD shielding, this problem was also able to be overcome. Things are looking good now!

At this stage, we have most of the marlin features successfully working, and I found out how to use the original boot-loader to enable the firmware to be installed the same way as the factory firmware, making it dead easy to switch between different firmware.

I hope this work helps people with the A5S and A1 get the most out of their machines – I’m very excited as this is one of the first stock 32-bit 3D printers in the world to have full support for Marlin 2.0! I don’t think it is the first ever, but it would be one of the first to not require any additional hardware to install and flash the firmware. Please let me know if you know of another 32-bit printer that works with Marlin 2.0 out of the box!

This has been an exciting project to work on – I’m proud of the work I contributed, It’s certainly been a lot more time consuming than I expected, and I’ve lost a lot of sleep tracking down obscure bugs. But the feeling of seeing it working is pretty great. If you want to say thanks – I’ve put a link in the sidebar where you can buy me a much-needed coffee. 😉☕️

I’m especially grateful to the Marlin dev team (@thinkyhead especially) for their creation that powers so many printers worldwide. Three cheers for open source!

Useful Links:




Leave a Reply

Your email address will not be published. Required fields are marked *