Anet A8 Plus with Marlin 2.0

It’s a pain searching for Anet A8 Plus, but I got my Anet A8 Plus equipped with the latest Marlin firmware the bugfix-2.0.x version to be precise.

  1. Download the latest Arduino IDE
  2. Download the Anet A8 board definition
  3. Follow the readme (i.e. place it in My Documents\Arduino\hardware)
  4. Download the latest Marlin 2.0 firmware
  5. Extract the downloaded archive
  6. Navigate to \config\examples\Anet\A8plus
  7. Copy both files to \Marlin
  8. Open \Marlin\Marlin.ino
  9. Go to Tools > Board: “…” > Select Anet V1.0 (Optiboot) if this doesn’t show restart Arduino IDE.
  10. Click “Verify/Build” (you might see some warnings)
  11. If this throws an error like:
    u8glib.h: No such file or directory
    1. Sketch > Include Library > Manage libraries
    2. Wait for download to finish
    3. In the “Filter your search” box, type “u8glib”.
    4. Scroll down until you see “U8glib by oliver”. Click on it.
    5. Click “Install”
    6. Wait for installation to finish
    7. Click “Close”
    8. Click “Verify/Build” again to retry
  12. Connect the Anet A8 Plus to your computer
  13. Click “Upload”
  14. Voila your Anet A8 Plus is now equipped with Marlin 2.0

58 thoughts on “Anet A8 Plus with Marlin 2.0”

  1. When I try to verify before upload on Anet A8 Plus in Marlin 2.0 bugfix, I get an error fail to compile for Anet A8 Version 1.0 board.
    What programmer should be used (AVR ISP MkII) or something else. Do I need to use the Optiboot 1.0 board version.

  2. Hey Tom i got allways erros like missing libary by token and if i put // behind the if there is coming other erros.. i get frustrating about the config files

    1. Hey Celil, do you have some console output of the error? I’m going to record a video on how to compile and upload Marlin soon might be of help too

  3. i had to disable a few things to get it on the board due to lack of memory but seems to work well now

    1. Hey Steve that’s quite strange since I didn’t have to disable anything and still had quite some space left, looking into adding an auto bed leveling sensor soon which I reckon will still fit within the Anet 1.7 board, as it also fit on the older revision on my classic Anet A8.

  4. Hi Tom:
    After you home all axis, where does your X axis sit at, mine sits at -26. That isn’t anywhere near being over the bed before the Z axis comes down to the bed. Why would this be.

    1. To prevent smashing into the glass bed I think, and to keep oozing of the nozzle off too the side and not somewhere on the build plate.

      You could adjust it, but I rather like the feature.

  5. Hey Tom,

    I have been having issues with my Anet A8 Plus (not been modified with any hardware or firmware). When I try to set the temperature of the nozzel to i.e 30C it increases dramatically to 40C. I have replaced my thermostat 3 times, still same issue. I have had prints before but after 2 weeks it started to have this issue. I figured the thermostat is functioning correctly so I tried to upgrade the firmware since lots of people have found that helpful. I just upgraded to 2.0 Marlin and I still have the same issue, any thoughts? If you can help me get this straightened out, I will pay you my man. Thank you.

    1. Hey Hussein,

      Does it overshoot (i.e. eventually comes back to 30C) or keep increasing beyond 40C? Does the display show the target temp as 30C and the current temp as 40C?
      Do you have Octoprint running? If not try so and check the temperature graph, I’m interested to see how the temperature develops.

    2. Hey Tom,

      Sorry I have not replied in a while. Tom my printer will enventually come back to its set temperature, but it takes a couple of minutes to do so. The current temperature is higher than the set temperature.
      I was able to update the 1.7 board with Marlin, still nothing. So I looked into other discussions online and I saw that the MOFSET might have been the issue. So I brought a new board to replace the on board MOFSET. I then installed Marlin again on the new board, and still showing the same issue. I am not sure what the Octoprint is nor how to check the temperature graph. Much appreciated.

    1. Yes, goto and download the stock firmware setup. It will be called “A8plus20190319_update”. Install the software and set it up just like the image included. This will put it back to stock firmware.

  6. Hello again Tom, and thank you for your last response. Im wondering if I install marlin on my anet A8 plus , following your tutorial , I can get the manual leveling feature, like in this video:

    It is because it’s a nightmare to calibrate the bed , because the 8mm rods bends. Or probably my bed is bended, I don’t know.
    Thanks in advance , and thanks for your great post about this printer , regards

  7. in arduino , I have to choose board “anet 1.0” or “anet 1.0 (optiboot) ??

    I dont have a programmer , I want to upload firmware just connected via USB to printer.

    A video doing all process sure will help to many users , If you can do I will be very thanksfull

  8. Hi Tom,
    I want to upgrade my Anet A8 Plus with Marlin 2.0. as you desribed here. But as I understand I need to burn the new bootloader first for the Optiboot option? If so, that’s a “big” extra step to consider and it’s not mentionned in your opening post, so I’m a bit confused. Can you clear this out?
    Thanx and cheers,

  9. oops, I figured it out myself. I just followed your steps without burning the optiboot bootloader. But in the Arduino IDE I just choose: /tools/boards/Anet V1 (optiboot)
    Everything seems OK now, I see “Marlin bugfix 2.0” in the startup screen on the LCD of my printer.
    The confusion comes from the readme file from the “Anet Board Master folder”. It says that the optiboot function is recommended but you can only use it by burning the optiboot bootloader.

    1. I forgot to say that the bootloader size has to be subtracted from the 128k. I don’t remember what it is, it is between 2 & 4 k max

  10. Hi Tom, after succesfull installed marlin 2.0 in my anet A8 plus, i do some modifications to get extra features and now its it imposible to comunicate with board. Can you help me ? I follow the same exact steps but dont work. here its the errors:

    Arduino:1.8.9 (Windows 10), Tarjeta:”Anet V1.0 (Optiboot)”

    El Sketch usa 123706 bytes (95%) del espacio de almacenamiento de programa. El máximo es 130048 bytes.
    Variables globales usan 5250 bytes de memoria dinamica.
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x60
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x60
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x60
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x60
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x60
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x60
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x60
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x60
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x60
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x60

    1. I’m not sure but I’ve switched to a shorter USB cable since I occasionally ran into getsync() errors, a 10 out of 10 failure would suggest something else but I’m not quite sure what.

    2. This is because the board has only 128k of flash memry and the extra features take additional space going beyond this limit. The solution is to try to drop some features that you don’t really need like bootscreen,….

    3. This is true as well as the bootloader size being part of the total available space, check de Verify results in Arduino IDE before trying to upload it! Save you a lot of head aches!

  11. Once marlin is installed I can get communication with board anymore , do I need an Arduino and flash bootloader for make changes in marlin 2.0 and upload again ? Is the process of your post actually delete boot loader ?

    1. No there’s no removing or burning of bootloader part of the process I described, does Marlin boot on your printer?

    1. mine after that is bricked, no image on display…do I have to order a new board ?

    1. all its ok, is the same cable and options that I used the first time I do the process succesful , but this time I want to reflash again with advanced pause activated

  12. Hello friends, I restored bootloader with an USBASP and all goes well, my board can boot again, and then I did a little modification to marlin acording to my needs: like change filament feature, adjust acceleration and jerks, preheating temperatures, change language, etc etc , If you like I can upload files for other users. Thanks for your information Tom.

    1. That’s great to hear, can you provide the steps for restoring a broken bootloader? I hope to never need it but it would be great as reference!

  13. I flashed the bootloader using an USBASP programmer , selected in programmer section, and choose anet optiboot in board. then press burn bootloader. thats all. After that you can upload marlin as usual.

    For the USBASP you need an adapter from 10 pin to 6 pin, and connect to board in J3 port, the red section of the cable un lower part, and you have to leave free 2 pins up and two pins down, so the connector was plugged centered.

    look at picture:

    also I upload my marlin configured with advanced pause feature an some changes. just put this files into your marlin folder, if ask for overwritte press yes.


  14. Thank you for the steps, but a see that you wrote:
    ” I’m sorry I missed that step, yes I used the Anet V1.0 (Optiboot) from

    HAve you corrected the steps in order to flash the firmware in the anet 8 plus?
    I am ready to do it and wanted to be sure evrything was right.
    Tahnk you very much in advance.

  15. hello i did compile this firmware and uploaded it to my anet a8 plus
    but the option to prepare is gone , i cannot even unload filament.

    1. Hey Trey, yes I should actually mention this since a lot of people will use the unload/change filament feature. The prepare feature should be included by default albeit under a different menu than stock.

      Check out some mods/changes you can do to Marlin, see filament change here

  16. Thanks Tom for you answer,
    but i did search the whole menu of marlin 2 but there is no prepare option also not under an other menu or so.
    maybe there is something wrong with my build/upload ?

  17. Hi Tom
    I was trying to follow your tutorial, but got some issues.

    I started with the mostly recommended and already installed Arduion 1.8.5, and proceeded as you told.
    But the compile stopped with this error

    In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\main.cpp:20:0:
    C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:223:0: note: this is the location of the previous definition
    #define TIMER5C 18
    fork/exec C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-gcc.exe: The filename or extension is too long.
    Error compiling for board Anet V1.0.

    I also tried the optiboot board option, but I got the same error, so time for google.

    Google told me some possible fixes, but neither copying the Marlin directory directly to C:\Marlin, nor changing the system variables did work. Most recommended fix was to upgrade to a newer Arduino IDE, so I uninstalled 1.8.5 and installed latest 1.8.10.

    Still, the compile stops:

    C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:223:0: note: this is the location of the previous definition
    #define TIMER5C 18
    Multiple libraries were found for “LiquidCrystal.h”
    Used: C:\Program
    exit status 1
    Error compiling for board Anet V1.0 (Optiboot).

    This error appears for both boards also.
    I tried to delete the library, but this resulted in an error “library missing”
    Alternatively, Google recommended Arduino 1.9beta, so i gave it a shot:

    C:\Users\HBJ2ABT\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) )
    ~^~~~~~~(pointer to & of &PCICR)
    c:\users\hbj2abt\appdata\local\temp\arduino_build_11766\sketch\src\hal\hal_avr\endstop_interrupts.h:162:21: note: in expansion of macro 'digitalPinToPCICR'
    static_assert(digitalPinToPCICR(Z_MIN_PIN), "Z_MIN_PIN is not interrupt-capable");
    ^~~~~~~~~~~~~~~~~(pointer to d of digital)
    exit status 1
    Error compiling for board Anet V1.0.

    Tried with optiboot:

    C:\Users\HBJ2ABT\Desktop\arduino-PR-beta1.9-BUILD-113\hardware\arduino\avr\cores\arduino/Arduino.h:223:0: note: this is the location of the previous definition
    #define TIMER5C 18
    exit status 1
    Error compiling for board Anet V1.0 (Optiboot).

    Googling the anet v1.0 board error brought me absolutely nothing, just 1 thread without answers and a github thread which I am not advanced enough in programming to understand, also with another user running into this error so definitely not solved for standard users.

    The optiboot error tells me basically nothing either.

    Do you have an idea whats wrong?

  18. Hello Tom, thanks for the firmware. This makes entry much easier. With Arduino IDE 1.8.8, AnetA8 (Optiboot) and Marlin-bugfix-2.0.x the first print worked right away. Keep it up. I think that’s great. Thanks.

  19. i still got errors compile the marlin 2.0 code.
    i have some lines here that goes wrong .
    its just an part of the errors i got when compile.
    i dont know what to do with these errors.

    In file included from sketch\MarlinConfig.h:29:0,

    from sketch\G26_Mesh_Validation_Tool.cpp:27:

    Configuration.h:218:11: error: missing binary operator before token “(”



    Configuration.h:267:8: error: missing binary operator before token “(”



    In file included from sketch\MarlinConfig.h:29:0,

    from sketch\G26_Mesh_Validation_Tool.cpp:27:

    Configuration.h:1088:11: error: missing binary operator before token “(”



  20. Hi Tom, thanks for your very helpful write-up !

    Unfortunately I’ve run into a problem with compiling – I’ve followed all the steps exactly, was prompted to add the u8glib library as predicted, but after I did that, I get the following error:

    Multiple libraries were found for “U8glib.h”
    Used: C:\Users\stupey\Documents\Printer3D\firmware\libraries\U8glib
    exit status 1
    Error compiling for board Anet V1.0 (Optiboot).

    Googling elsewhere suggested this may be due to old copies of the library elsewhere, or due to the version of the Arduino IDE, but I did a complete ground-up removal of all arduino, marlin, u8glib etc on my pc (there were lots of arduinos), and have tried it with the stable Arduino 1.8.x build and with the 1.9.0-beta build, but same problem both times. I’m on Windows 10.

    Any ideas what I can try ?



  21. tried it with Arduino 1.0.5 but I can’t figure out a way to add a non-Arduino board definition, guess it doesn’t allow it

  22. Following this guide I’m getting the following error on verification.

    exit status 1
    missing binary operator before token “(”

    Any ideas on how to fix this?

  23. I was getting that missing binary operator error when I was trying to use the stable build of Marlin instead of the 2.0 bugfix, but then the config files for A8 included with that stable version aren’t right – has to be the bugfix 2.0 with A8+ config files.

    But then that still leaves me with the multiple libraries error, looks like a bug in the IDE ? I’ve tried every variant of the IDE now, and tried it on a Mac too (boy that was hard, stupid OS !) but same thing.

    I might try killing the include line, and instead bring the library stuff straight into code chunk by chunk until it compiles. …and then brick my board.

  24. Boom, fixed it ! My error was nothing to do with multiple u8glib libraries, it was to do with the very verbose warnings that preceded it.

    From the Marlin Github forum:
    “The update and consolidation of TMC support into the TMCStepper the library has made the ENDSTOP_INTERRUPTS feature incompatible with TMC drivers, until a workaround can be found.”

    So in the Configuration.h tab in your Arduino window, find the line that says:
    and comment it out by putting two slashes in front of it, like this:
    //#define ENDSTOP_INTERRUPTS_FEATURE //undefined, SG

    Then try and compile:

    Sketch uses 117266 bytes (90%) of program storage space. Maximum is 130048 bytes.
    Global variables use 4721 bytes of dynamic memory.

    Success !

    Mind you, haven’t actually flashed it yet, will report back tomorrow when it (hopefully) works.

    1. I have same problem, but commenting //#define ENDSTOP_INTERRUPTS_FEATURE does not seem to have any effect.

      Any other ideas?

  25. hmm, mixed success – it flashed, and works. The motors seem to be better powered than they were with the stock firmware, if that makes sense, and I just printed a pretty decent Benchy, which is impressive since this is the first print since I built it. Dimensions, rates etc all look good, all motors, endstops, fans, heaters, thermistors working.

    However what’s not working is the LCD screen – I can kind of see what the display is supposed to look like, and can occasionally read words, but there’s a lot of glitching on it all the time, and you certainly can’t read it well enough to use it as a control. I need to investigate this more.

    I’m not convinced it’s recognising the SD Card slot either, but can’t really tell with the display. I printed from Repetier.

  26. I’ve got mine working 100% now. The ANET_FULL_GRAPHICS_LCD wasn’t working for me, glitchy display, but by trial and error, I found the CR10_STOCKDISPLAY does.

    Find the line in Configuration.h that says:
    and comment it out by putting two slashes in front:

    Then find the line just above that says:
    //#define CR10_STOCKDISPLAY
    and uncomment it by removing the two slashes

    There are lots of other interesting settings in the two config files too.

    The short of it though is that I’d say the Marlin 2.0 betas are changing fast, and possibly the A8+ hardware that ships too, so what’s working for me now might not work when you try. If you’re not 100% happy with what you’re doing, you might want to wait, at least until there’s a stable Marlin 2.0 official release.

  27. Just got mine done. Instructions unclear, six days and several other tutorials and youtubes later; u8glib, cr10 display and CH340 driver. Best video from an older build: (without this I would have never known what the heck I was looking for in the first stop code I came to. Thanks to Stuart Goodwin for the display. Print quality does not seem to have changed but many options are still disabled. New bearing and octopi are next.

  28. Hi !

    Trying to install Marlin for Anet A8 Plus, with no no no. success, what to do ?

    Can´t make the ANET V1.0 visible as an option on Arduino TOOLS/Board and so on..

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.