Introduction: HOW TO FIX ANET BRICKED BOARD USING AN ARDUINO UNO
After years of printing yesterday my Anet A8 printer is dead, due to a failed firmware upload.
So my board was bricked, means that doens't accept anymore a firmware and the display was blank, as in the picture.
After a long search, I collected this instructions to fix this problem, all you need is an Arduino Uno board, a 10 uF capacitor and some wires.
Step 1: DOWNLOAD ANET BOARD DEFINITION FOR ANET
1. See this great github resource: https://github.com/SkyNet3D/anet-board
a. Basically, Clone and download as ZIP file the git resource
b. Unzip the Anet folder to your Arduino installation “hardware” folder: C:\Program Files\Arduino\hardware
c. Open Arduino IDE, ANET V1.0 and ANET V1.0 (Optiboot) are now available into Tools – Board menù
Step 2: PREPARE ARDUINO UNO AS ISP PROGRAMMER
1. Upload ArduinoISP sketch to Arduino Uno board (File -> Esempi)
2. Select from Arduino Tools menù:
a. Board:Arduino Uno
b. Port: COM X where your Arduino is connected
c. Programmer: AVRISP mkll
3. Upload Sketch
Arduino now is ready to act as ISP Programmer
Step 3: CONNECT ARDUINO UNO TO ANET J3 CONNECTOR
1. Use some breadboard wires to connect Arduino to Anet as shown in the picture
2. Connect also RESET and GND pins in on Arduino using a 10uF capacitor
Step 4: FLASH BOOTLOADER
1. Select from Arduino Tools menù:
a. Board:Anet V1.0 (Optiboot)
b. Port: COM X where your Arduino is connected
c. Programmer: Arduino as ISP
2. Tools -> Write Bootloader
Step 5: UPLOAD FIRMWARE
1. Select from Arduino Tools menù:
a. Board:Anet V1.0 (Optiboot)
b. Port: COM X where your Arduino is connected
c. Programmer: AVRISP mkll
2. Open Marlin firmware as usual
3. Upload sketch
30 Comments
7 weeks ago
Thanks a bunch for this. I had a really hard time upgrading to Marlin 2.1.2. My USBasp wasnt working at all and i really didnt want to replace the USBasp, or the whole board because it got bricked. I didnt use the Capacitor, and I was confused about what to plug into when uploading the firmware[ISP, or Board USB] but after turning the printer on and plugging it in to upload the firmware i was happy to see the marlin screen again!
Question 1 year ago
I did not understand where the code came from?
Question 2 years ago on Step 3
Hello, Thank you for this instructable I am hoping to fix my anet A8 board that I managed to break yesterday while attempting to fl;ash it with Marlin 2.0. My question is can I use a 10pin to 6 pin converter to connect my arduino to the Anet as I feel it might be safer for me at my age (76) and with a shaking disability than attempting to connect jumper leads. I can buy a AVR ISP 10pin to 6 pin adaptor from Jaycars here in Australia for $4.95 and am hoping that might work.
Hope you are still monitoring this great instructable.
2 years ago
I get to step 4 and i get a invalid device signature I have checked all the pins are correct places I'm using a 10uf capasitor I have selected to anet v1 and my com port and nothing same msg everytime
Tip 2 years ago on Step 2
Great instructions, thanks! Worked for me!
In step 2 above, for anyone trying to find it, the ISP sketch is in Arduino > File > Examples > ArduinoISP.
After step 4, you'll get a blank screen on the A8 (two bars on it) which is normal. You'll need to complete step 5.
In step 5 above, if you're not sure how to make Marlin firmware i.e. producing "Marlin.ino.sanguino.hex" for the Anet A8, see https://www.youtube.com/watch?v=5xeo9G3kXEQ and https://marlinfw.org/docs/basics/install.html
3 years ago on Step 5
Worked like a charm. Thanks
Question 3 years ago on Step 4
Your program works great. thanks. i want to change the 220mm bed size to 800. when i do this is the mess i get... can anyone help my clueless ass? it appears somehow i messed up the screen default. other than that is get this weird error . as i said i want the x and y axis to be 800. any ideas?
Arduino: 1.8.10 (Windows 10), Board: "Anet V1.0"
In file included from sketch\endstops.cpp:35:0:
sketch\endstop_interrupts.h: In function 'void setup_endstop_interrupts()':
endstop_interrupts.h:121:7: error: non-constant condition for static assertion
static_assert(digitalPinToPCICR(X_MIN_PIN) != NULL, "X_MIN_PIN is not interrupt-capable");
^~~~~~~~~~~~~
In file included from C:\Users\bgjim\Desktop\arduino-1.8.10\hardware\arduino\avr\cores\arduino/Arduino.h:257:0,
from sketch\HAL.h:36,
from sketch\MarlinConfig.h:39,
from sketch\Marlin.h:35,
from sketch\endstops.cpp:27:
C:\Users\bgjim\Documents\Arduino\hardware\anet\avr\variants\sanguino/pins_arduino.h:117:66: error: reinterpret_cast from integer to pointer
#define digitalPinToPCICR(p) ( (((p) >= 0) && ((p) <= 31)) ? (&PCICR) : ((uint8_t *)0) )
~^~~~~~~
sketch\endstop_interrupts.h:121:21: note: in expansion of macro 'digitalPinToPCICR'
static_assert(digitalPinToPCICR(X_MIN_PIN) != NULL, "X_MIN_PIN is not interrupt-capable");
^~~~~~~~~~~~~~~~~
In file included from sketch\endstops.cpp:35:0:
endstop_interrupts.h:141:7: error: non-constant condition for static assertion
static_assert(digitalPinToPCICR(Y_MIN_PIN) != NULL, "Y_MIN_PIN is not interrupt-capable");
^~~~~~~~~~~~~
In file included from C:\Users\bgjim\Desktop\arduino-1.8.10\hardware\arduino\avr\cores\arduino/Arduino.h:257:0,
from sketch\HAL.h:36,
from sketch\MarlinConfig.h:39,
from sketch\Marlin.h:35,
from sketch\endstops.cpp:27:
C:\Users\bgjim\Documents\Arduino\hardware\anet\avr\variants\sanguino/pins_arduino.h:117:66: error: reinterpret_cast from integer to pointer
#define digitalPinToPCICR(p) ( (((p) >= 0) && ((p) <= 31)) ? (&PCICR) : ((uint8_t *)0) )
~^~~~~~~
sketch\endstop_interrupts.h:141:21: note: in expansion of macro 'digitalPinToPCICR'
static_assert(digitalPinToPCICR(Y_MIN_PIN) != NULL, "Y_MIN_PIN is not interrupt-capable");
^~~~~~~~~~~~~~~~~
In file included from sketch\endstops.cpp:35:0:
endstop_interrupts.h:161:7: error: non-constant condition for static assertion
static_assert(digitalPinToPCICR(Z_MIN_PIN) != NULL, "Z_MIN_PIN is not interrupt-capable");
^~~~~~~~~~~~~
In file included from C:\Users\bgjim\Desktop\arduino-1.8.10\hardware\arduino\avr\cores\arduino/Arduino.h:257:0,
from sketch\HAL.h:36,
from sketch\MarlinConfig.h:39,
from sketch\Marlin.h:35,
from sketch\endstops.cpp:27:
C:\Users\bgjim\Documents\Arduino\hardware\anet\avr\variants\sanguino/pins_arduino.h:117:66: error: reinterpret_cast from integer to pointer
#define digitalPinToPCICR(p) ( (((p) >= 0) && ((p) <= 31)) ? (&PCICR) : ((uint8_t *)0) )
~^~~~~~~
sketch\endstop_interrupts.h:161:21: note: in expansion of macro 'digitalPinToPCICR'
static_assert(digitalPinToPCICR(Z_MIN_PIN) != NULL, "Z_MIN_PIN is not interrupt-capable");
^~~~~~~~~~~~~~~~~
Multiple libraries were found for "LiquidCrystal.h"
Used: C:\Users\bgjim\Desktop\arduino-1.8.10\libraries\LiquidCrystal
exit status 1
non-constant condition for static assertion
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
3 years ago
Thank your very much, this helped me a lot....
This works 100% at Arduino Uno R3 with 1.8.9.-IDE and Anet A8 V1.0.
Elco: Between Reset (+) and GND (- at Cap) at the Arduino-Board
Pin10 is the Reset of the Anet A8-Board and not at Arduino!!
You need only 6 wires for all and one capacitor!
I did it directly with the orginal 10pin cable of J3 and a breadboard.
Question 3 years ago
cao a tutti sto cercando di riprogrammare il bootloader della mia scheda anet ver.1.7 riesco a configurare arduino come progrmmatore ma quando tento di aricarlo sull'anet mi da questo errore cosa vuol dire?
Arduino:1.8.9 (Windows 10), Scheda:"Anet V1.0"
C:\Program Files\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega1284p -carduinoisp -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xDA:m -Ulfuse:w:0xD6:m
avrdude: Version 6.3-20171130
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "C:\Program Files\Arduino\hardware\tools\avr/etc/avrdude.conf"
Using Port : usb
Errore durante la scrittura del bootloader
Using Programmer : arduinoisp
avrdude: Error: Could not find USBtiny device (0x2341/0x49)
avrdude done. Thank you.
3 years ago
Arduino: 1.8.9 (Windows Store 1.8.21.0) (Windows 10), Board: "Anet V1.0 (Optiboot)"
In file included from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:257:0,
from sketch\Marlin.ino.cpp:1:
C:\Users\josec\Documents\Arduino\hardware\anet\avr\variants\sanguino/pins_arduino.h:43:0: warning: "TIMER2" redefined
#define TIMER2 5
^
In file included from sketch\Marlin.ino.cpp:1:0:
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:210:0: note: this is the location of the previous definition
#define TIMER2 6
^
In file included from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:257:0,
from sketch\Marlin.ino.cpp:1:
C:\Users\josec\Documents\Arduino\hardware\anet\avr\variants\sanguino/pins_arduino.h:44:0: warning: "TIMER2A" redefined
#define TIMER2A 6
^
In file included from sketch\Marlin.ino.cpp:1:0:
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:211:0: note: this is the location of the previous definition
#define TIMER2A 7
^
In file included from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:257:0,
from sketch\Marlin.ino.cpp:1:
C:\Users\josec\Documents\Arduino\hardware\anet\avr\variants\sanguino/pins_arduino.h:45:0: warning: "TIMER2B" redefined
#define TIMER2B 7
^
In file included from sketch\Marlin.ino.cpp:1:0:
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:212:0: note: this is the location of the previous definition
#define TIMER2B 8
^
In file included from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:257:0,
from sketch\Marlin.ino.cpp:1:
C:\Users\josec\Documents\Arduino\hardware\anet\avr\variants\sanguino/pins_arduino.h:47:0: warning: "TIMER3A" redefined
#define TIMER3A 8
^
In file included from sketch\Marlin.ino.cpp:1:0:
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:214:0: note: this is the location of the previous definition
#define TIMER3A 9
^
In file included from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:257:0,
from sketch\Marlin.ino.cpp:1:
C:\Users\josec\Documents\Arduino\hardware\anet\avr\variants\sanguino/pins_arduino.h:48:0: warning: "TIMER3B" redefined
#define TIMER3B 9
^
In file included from sketch\Marlin.ino.cpp:1:0:
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:215:0: note: this is the location of the previous definition
#define TIMER3B 10
^
In file included from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:257:0,
from sketch\Marlin.ino.cpp:1:
C:\Users\josec\Documents\Arduino\hardware\anet\avr\variants\sanguino/pins_arduino.h:49:0: warning: "TIMER3C" redefined
#define TIMER3C 10
^
In file included from sketch\Marlin.ino.cpp:1:0:
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:216:0: note: this is the location of the previous definition
#define TIMER3C 11
^
In file included from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:257:0,
from sketch\Marlin.ino.cpp:1:
C:\Users\josec\Documents\Arduino\hardware\anet\avr\variants\sanguino/pins_arduino.h:50:0: warning: "TIMER4A" redefined
#define TIMER4A 11
^
In file included from sketch\Marlin.ino.cpp:1:0:
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:217:0: note: this is the location of the previous definition
#define TIMER4A 12
^
In file included from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:257:0,
from sketch\Marlin.ino.cpp:1:
C:\Users\josec\Documents\Arduino\hardware\anet\avr\variants\sanguino/pins_arduino.h:51:0: warning: "TIMER4B" redefined
#define TIMER4B 12
^
In file included from sketch\Marlin.ino.cpp:1:0:
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:218:0: note: this is the location of the previous definition
#define TIMER4B 13
^
In file included from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:257:0,
from sketch\Marlin.ino.cpp:1:
C:\Users\josec\Documents\Arduino\hardware\anet\avr\variants\sanguino/pins_arduino.h:52:0: warning: "TIMER4C" redefined
#define TIMER4C 13
^
In file included from sketch\Marlin.ino.cpp:1:0:
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:219:0: note: this is the location of the previous definition
#define TIMER4C 14
^
In file included from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:257:0,
from sketch\Marlin.ino.cpp:1:
C:\Users\josec\Documents\Arduino\hardware\anet\avr\variants\sanguino/pins_arduino.h:53:0: warning: "TIMER5A" redefined
#define TIMER5A 14
^
In file included from sketch\Marlin.ino.cpp:1:0:
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:221:0: note: this is the location of the previous definition
#define TIMER5A 16
^
In file included from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:257:0,
from sketch\Marlin.ino.cpp:1:
C:\Users\josec\Documents\Arduino\hardware\anet\avr\variants\sanguino/pins_arduino.h:54:0: warning: "TIMER5B" redefined
#define TIMER5B 15
^
In file included from sketch\Marlin.ino.cpp:1:0:
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:222:0: note: this is the location of the previous definition
#define TIMER5B 17
^
In file included from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:257:0,
from sketch\Marlin.ino.cpp:1:
C:\Users\josec\Documents\Arduino\hardware\anet\avr\variants\sanguino/pins_arduino.h:55:0: warning: "TIMER5C" redefined
#define TIMER5C 16
^
In file included from sketch\Marlin.ino.cpp:1:0:
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:223:0: note: this is the location of the previous definition
#define TIMER5C 18
^
Sketch uses 104096 bytes (80%) of program storage space. Maximum is 130048 bytes.
Global variables use 4083 bytes of dynamic memory.
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xbe
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xe0
Problem uploading to board. See http://www.arduino.cc/en/Guide/Troubleshooting#upload for suggestions.
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
Reply 3 years ago
I keep getting this error
3 years ago
Thank you for this "How To". With the optiboot I can now add the M600 command when I run out of filament on my Anet A8. (without, there were not enough memory)
3 years ago
Recommendation / guide from the github README and from the Arduino official ArduinoISP page as well is to reconnect the Arduino from the Anet board after burning the bootloader and connect Arduino IDE (Computer) directly with the Anet board via USB before upgrading FW. This could be a useful step/hint inserted into the description. Which is indeed extremly useful. Thanks! Also very useful are the comments, especially the one about the capacitor. (I also have only 1uF at hand and no chance to get another during the weekend.) I will give it a try soon. Thanks to all - again.
4 years ago
I have performed all the steps above and received the following error my help helps me;
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x1c
Reply 4 years ago
I had the same problem. The fix, for me, was extremely simple. What the instructions don't tell you is to unplug the usb from the uno and plug it straight into the Anet board. Use all of the settings described, and it worked like a champ on mine. Maybe this will be your fix or at least give you an idea. This does work. I "bricked" mine trying to upload better firmware and this brought it back. I didn't need/use the capacitors though.
Question 4 years ago on Step 5
Hi, I followed your instructions on flashing the bootloader, that worked OK but when I try to upload the marlin firmware I get this error message, I'm still connected through the Uno board
Arduino: 1.8.5 (Linux), Board: "Anet V1.0 (Optiboot)"
Build options changed, rebuilding all
Sketch uses 118898 bytes (91%) of program storage space. Maximum is 130048 bytes.
Global variables use 4367 bytes of dynamic memory.
avrdude: Expected signature for ATmega1284P is 1E 97 05
Double check chip, or use -F to override this check.
Wrong microcontroller found. Did you select the right board from the Tools > Board menu?
thanks for any help
Eric
edit: I disconnected Uno and reconnected directly into Anet board, uploaded Marlin firmware successfully.... thanks for the instructions, you may want to add this step.
Eric
Question 4 years ago
I tried this. But i have the following error:
...../hardware/tools/avr/etc/avrdude.conf -q -q -patmega1284p -cstk500v1 -PCOM6 -b9600 -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xDE:m -Ulfuse:w:0xD6:m
avrdude: stk500_getsync(): not in sync: resp=0xff
I Tried this because i can't flash my Anet A6 3D printer.
So they told me to burn a Bootloader first!
Answer 4 years ago
UPDATE: I was able to burn a Bootloader with a Arduino Uno r3!!!! I made a new connector, with new wiring. Now i could burn the bootloader, WITHOUT any errors.... :D
Now i'm going to try to install the Repetier Firmware.
Thanks for helping me!!
4 years ago
Thanks a lot. This was a great help. Now, it looks like a thunderstorm has broken my board's USB capability. Do you maybe know how to fix that, too?
Question 5 years ago on Step 2
Step 2 doesn't work. Whatever I try, I always get an error when trying to upload the sketch. And I don't have a 10 uF capacitor, just 100 nF, 100 uF & 100pF, which one to use?