I received a JG Aurora A5 to review. Unfortunately, there were a few issues. Fortunately, however, they were issues I was fairly sure would be resolved by the community-provided Marlin Firmware.
So I went to update the firmware … and got the dreaded AVRDude Timeout Error.
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
9/10 if it is connected correctly, the correct board and port is selected, then this tells us that the Arduino-based MKS 3d printer board did not have the bootloader installed.
Heres how to fix that if you find yourself in the same situation!
Before you do any of this just give everything a look-over to ensure the problem really is the firmware!
Programming an Arduino Board with an Arduino as “ISP”
If you don’t have a dedicated programmer device then you can do what most of us do, and that is to use a clean Arduino to program your 3D printer board. It’s easy, you just need that spare Arduino and some breadboard jumper cables. Kits usually include both.
In this example, I use an Arduino Mega because that is what I use on 3D printers, but an Uno is fine, and much as I like to support the creators, clones are perfectly ok. No need to spend extra to buy an original Arduino for this.
You will also need the Arduino desktop software, if you don’t have it already.
Arduino ISP Software
On the spare Arduino, install the “Arduino As ISP” sketch (it should be included in the Examples files). Just load the example, set the port and board to that of your spare Arduino, and compile+upload. Follow the animated gif here:
Next, find the ICSP port connections on both boards. Usually they will actually be labeled as such, but otherwise, they will look like this.
You need to connect like-for-like across both boards, with one exception that the target 3D printer board needs the reset pin connected to the data pin (Pin 10, by default) on the Arduino programmer board:
Now you can use the Arduino as the ISP (In-System Programming) device, and select to upload Bootloader to the 3D Printer board (or any Arduino).
Finally, you can burn the bootloader!
When you reconnect the 3D Printer board and upload the firmware you should see something like this 🙂