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.

Update July 2020

My old written tutorial has helped many, but the new(er) video below by Daniel will help even more people and it’s up to date!

Original Article

  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

134 thoughts on “Anet A8 Plus with Marlin 2.0”

    1. Hey Wilfred,

      No I currently don’t have a YouTube channel, or well I do but it has no videos.. yet? 😉

      What would you like to see if the channel did have videos?

    1. I would like videos about upgrading specifically Anet A8 plus printer.
      Let me know, if so.

  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.

    3. This may be an old question but my anet A8 plus had the same thing going on with the hotend and it turned out that the heating element was bad once I replace the heating element with the new one it ended up going up the right way and only overshot 1 to 2 degrees and then corrected.

    4. @Christopher, what type of heating element did you get? Isn’t that the same as the hot end because I have replaced the hot end 3 times, still not working. Thank you.

    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

    1. I battled to get my bed calibrated on my A8 plus. Even after updating to Marlin. After 6 months, I decided to check my rods- and one of my Y axis rods were very slightly bend. Just replaced it and my bed is calibrated – not 100% but much closer than before.

      Also, while not exactly like the vid, Simplify3D has a similar manual bed levelling option.

  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

    2. hello friends. Your description helped me a lot so I want to help you too. With my games with arduino IDE I go a few times, I had a problem with the wrong load (and bricked board). Then I uploaded firmware via usbasp and avrdude and board back to life. Brick is happened 1 for 5 times when I upload firmware. I changed the cheap usb cable to a very old but well good made 2m usb cable and the problems are gone. I think the problem is cheap ch340 instead of ftdi. a good cable helps.

    3. I recall similar issues with various USB cables, not sure what the root cause of this is, voltage drop? Signal interference?

  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!

    2. danimod, can you please upload for us? I was successful in uploading Marlin 2.0 to my machine, but now it is unusable. My steppers behave erratically. I can’t get my filament to load, it won’t autohome, etc. I’m hoping I can look at your setup and see where I went wrong. Thanks.

  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.

    1. Hey I’ve added step 9 to clarify that you need to select the Anet V1.0 (Optiboot) board. Good catch! 🙂

  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.

    1. Thank you sir. Kinda flipped out when I saw that happen first, great find!

    2. Buddy, I owe you a beer! Thought I tanked my new toy. Display looks good again!

    3. Hey Rob, you don’t easily brick your printer, but it sometimes feels like you do. Keep calm and keep tinkering! 😀
      Glad to hear it still works!

    4. I did not have luck with the CR10 change…

      Instead, under #define ANET_FULL_GRAPHICS_LCD

      I added:

      #define ST7920_DELAY_1 DELAY_NS(150)
      #define ST7920_DELAY_2 DELAY_NS(150)
      #define ST7920_DELAY_3 DELAY_NS(150)

  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..

      comment #define ANET_FULL_GRAPHICS_LCD
      uncomment #define CR10_STOCKDISPLAY

  29. Hi Tom
    i have an Anet a8 v1.5, i have upgraded the mainboard to the V1.7 but i cant get it to work, ive tried flashing marlin to it do you know where i can get the 1.7 mainboard firmware so i can put it back on

  30. AFTER 3 days: SUCESSSS!!
    I got marlin 2.0 with
    s_curve_acceletion working
    bed_mesh_leveling working (fantastic tool)
    restore eprom working (after G28)

    Almost everything cool BUT I had to coment the lines:
    Name of trhe printer
    And the most umcomrfotable to un-comment: Boot screen logo

    BUT, doing those actions you can have an sketch of 99% .

    When you “on” the printer, nothing seems to happen, you have to wait something like 8 seconds, but: everything is there

    THANK YOU again TOM

    1. no way, was a bad dream, i had to reburn with th3duf. now everything seems to be right

  31. I think the default hot-end temperature PID settings weren’t great, for mine at least, it was oscillating round the target temperature by about +/-5 degrees.

    After doing an auto-PID tune as per the PID tuning article in the RepRap wiki, and then adjusting the P and D parameters as per the “Some Overshoot” set, I now get rock-solid temperatures – it goes to the target and stays there.

  32. Anet with BLTouch.
    After upgrading to Marlin 2 did anyone have issues where it proved off the bed?

    Anet default is
    #define X_MIN_POS -33
    #define Y_MIN_POS -10

    And Marlin 1.x had limit parameters
    Marlin 2 dies not.

    So is it best to remove these numbers?

  33. disaster. the printer didnt want to start normally, 5, 5, 7 attempts and finally….
    I had to burn bootloader and th3duf , without boot screen and now work like charm

  34. I finally got it working. Thanks for your guide you got me on the right track. Hopefully someone will see my reply if they are still having issues in Nov 2019

    After a few days of soft-bricked boards and anguish I finally have a working Anet A8 Plus v1.7 board w/ BL Touch
    Arduino 1.8.10 (latest)
    Skynet board definitions, same as A8 Acrylic (ANET 1.0 Optiboot)
    Marlin 2.0.x bugfix edition
    U8glib from Oliver version 1.19.1
    Arduino Boards Manager AVR by Arduino 1.6.23

    1. Out of the box I ran into issues trying to compile the stock firmware having only replaced the example files in the Marlin folder. I was getting a ton of #define TIMER etc.. Solution was to comment out

    2. One that cleared up I started getting U8glib missing, fixed that with your updated instructions running the 1.19.1 version. Then I got multiple libraries errors, fixed that once I found I had a hidden .appdata folder that I was running another version of Arduino IDE from (with more libraries of course)

    3. Then I had an issue with a ton of errors calling out #define SERVO_PIN 27 (LCD PIN R/S on the Anet 12864 controller) . Since the A8 Plus LCD w/ rotary dial uses that pin you have to get your servo signal from pin 29 as per the Marlin’s Pins_ANET_10.h file. I saw adapters online but I just soldered jumpers to the rear of the boards and used Dupont connectors on the Z-Stop for 5v/GND
    Some people also suggest opening the ribbon cable connector and extending out enough to attach to. I didn’t care for it but it worked to confirm that was the right pin..

    COMMENT THIS SH(T OUT. Sorry, long couple days.
    That thing caused me so much grief trying to compile. It threw a ton of errors and once it was commented out everything played nice. Thanks to whoever found that

    5. “The filename or extension is too long” compile error
    This happened because I had the Marlin folder on my Desktop, at C:\users\joshu\blahb\blhab\blah,…. and it caused errors. I moved it to C:\Marlin and the issue went away

    6. Sketch too big error. The last I had was the sketch was too large for the destination storage. I found someone online say that the easiest way to trim space was to removed //#define SDSUPPORT
    Once that was commented out it compiled fine and began to upload

    7. Then the upload failed. I wasn’t sure about the Anet 1.0 Optiboot as I ready stuff that said you had to have the bootloader but I tried it anyway and it worked. I guess I got one of the 20% or so with a bootloader or maybe they all do. I seem to find mixed info online..

    Either way, it is up and performing auto bed leveling and printing away on Marlin 2.0.x. Thank you to everyone again.

  35. Joshua, Tom, et al.,

    Thanks for this guide! It feels like I cheated as my anet a8 plus is running Marlin and all the fixes mentioned in 1 hour. Really can’t say thank you enough.

  36. Hi Tom,
    Extraordinary help. It results in perfection.
    The next step is to install BLTouch.
    Many thanks

  37. I have followed all steps listed in the Blog. However, I get the following error when trying to verify the build:
    “ccl.exe: error: -fno-fat-lto-objects are supported only with linker plugin”


    “exit status 1
    Error compiling for board Anet V1.0 (Optiboot).”

    Can you help with this? Thank you.

  38. Hi

    it is possible to change the rotary direction (clockwise) while changing in the screen menu

    can i change a value in the arduino software and uplod to motherboard??

    1. Hey Mustafa I guess this should be possible, but you might mount it rotated as well or doesn’t that work for you?

  39. Thanks #TOM

    i found it in marlin 2.0 under a Title


    // This option reverses the encoder direction for navigating LCD menus.
    // If CLOCKWISE normally moves DOWN this makes it go UP.
    // If CLOCKWISE normally moves UP this makes it go DOWN.

    // This option reverses the encoder direction for Select Screen.
    // If CLOCKWISE normally moves LEFT this makes it go RIGHT.
    // If CLOCKWISE normally moves RIGHT this makes it go LEFT.

    incase other users need this just search about ENCODER and will find it

  40. Dear Tom

    what the thing maybe i do with arduino software and marlin and burn my board by mistake ^___^??


    i have other question if you may


    i will check my luck tommorow with marlin 1.1.9

    i belive that i spent more than 30 hours since i decide to upgrade my Anet A8 Plus to marlin 2.0 and had (HEAT BED FAILURE) takes all my time in the past 3 days looking for a way to fix it and finally i think it is the Marlin 2.0 the problem

    i will check the Marlin 1.1.9 maybe i learn something new if not i will ask ^__^

  41. it is possible to do Autotuning from the LCD Screen??

    i can do for Extruder i know

    but what about the bed??

  42. I am in the process of Upgrading to the Anet V1.7 Board. I have found the following:
    1) When the printer is in Power OFF position the LED Display stays ON on when the unit is connected to a USB port.
    2) When printing the Anet 3D Printer stops communicating with the Software on the Host. It Freezes in the middle of a print.
    3) When printing from the SD card only the first file selected print. When selecting another file the previous file start to print. You have to physically switch off the printer to select another file?
    4) When switching on another device such as a light the USB Port would appear to disconnect.
    5) I have two factory boards (Anet V1.7), same problem. The printer and the Host computer is connected via the same power circuit via a UPS.
    6) My Anet V1.5 board is stable, none of this troubles.
    7) I also tried to compile Marlin 2.0 and the bug fix, various versions via the Arduino IDE again various versions of the IDE. No JOY.
    Any advice or assistance would be greatly appreciated.

    1. Hey Ben, the first thing that the board stays on is “normal” mine do this as well and my CNC as well. It’s simply the arduino circuit that is fed 5V and there for starts working. The other things make me think either bad USB cable or try another port/USB host chip on your PC.

  43. Hi Tom, thanks for your prompt response. 🙂
    Tried 3 Different USB cables including a brand new one. Then Also tried 2 different USB ports. Remember the Original V1.5 board does not freeze during prints but the USB display goes dead when the printer is switched off. I am happy with that. I don’t necessary have problem with Arduino board staying on. It is almost like the 24V/12V mod on the new 1.7V boards are not stable. Any Idea what chip is involved?

  44. Hey Tom. Thanks for this great guide. Really helps a lot.
    Can you advice for Velocity (feedrate) settings for A8+ ? I changed to Marlin 2.0.x bugfix and used v6 hotend with titan extruder (clone). I manage all settings except this one. There is big difference between original settings and the one that came with Marlin 2.0.x.
    Thanks for any advice or opinions.

    1. Hey Tibor, I can’t remember the exact value however I halved the “standard” value in Marlin because it seemed quite aggresive on acceleration!

  45. Hi Tom,
    I just need a clarification, I purchased an Anet A8 Plus and I added 4 smooters to x, y and two z axis and external mosfet for the heater bed. Now the default system when it boots, it moves the X axis to the right end and does not stop the motor till I push the endstop on the left. If I understand correctly, I need to invert X Axis in marlin code right ? It came this way and I suspect all users who got the machine has the same issue, btw, I used bigtree smoothers for ender 3 could this have caused it ? I tried to complie marlin firmware.hex to the sd card but it did not updgrade and file was not visibile in sd card through menu.

    TIA & Happy New Year !


    1. Hey Ruben,

      I don’t think this is a common issue but could you check the wiring for your X-axis and compare it with another axis? I think there might be swapped pair of wire. Do be gentle on the clips of the pin connectors when trying to swap them.
      I have no experience with smoothers but many use them.

      Kind regards,

      Tom Hofman

  46. Hello Tom,

    I need to expand printing area of my Anet A8 Plus from 300x300x400 to 300x330x400. I have replaced some hardware to adapt new area but firmware limits the head movement. I have not tried Marlin yet, will it work if I change Y_BED_SIZE to 330 and update the firmware?

    1. Hey Silvester, yes that seems about right, also don’t forget your slicer settings otherwise it won’t allow you to use the new bed length! I think Marlin would make it easier but should be doable with the stock firmware too.

  47. Hi Tom, trying to compile the marlin firmware as per your instructions i still het errors after loading uglylib. If i can get it working I want to use a config.h file that enables the auto bed leveling with a static sensor. hope you can help.

    1. Hey Adrian,

      Are you sure you’ve selected the “U8glib by oliver” library? I can’t recall a uglylib being mention anywhere in the process 😉

  48. hi tom,
    i jus put it in follwoing instructions above, but it fails without it being there also. so I’m lost as what to do or how to continue.

    I am trying to compile without connecting to printer, is that a problem?

    1. what processor is on the v1.5 board, if i selected it woult it then work?

  49. here are the errors I’m getting:-
    In file included from C:\Users\Adrian\AppData\Local\Temp\arduino_build_528857\sketch\src\inc/MarlinConfig.h:38:0,
    from C:\Users\Adrian\AppData\Local\Temp\arduino_build_528857\sketch\src\Marlin.h:24,
    from C:\Users\Adrian\AppData\Local\Temp\arduino_build_528857\sketch\src\Marlin.cpp:31:
    C:\Users\Adrian\AppData\Local\Temp\arduino_build_528857\sketch\src\inc/SanityCheck.h:1232:6: error: #error “Auto Bed Leveling requires one of these: PROBE_MANUALLY, FIX_MOUNTED_PROBE, NOZZLE_AS_PROBE, BLTOUCH, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or a Z Servo.”

    In file included from C:\Users\Adrian\AppData\Local\Temp\arduino_build_528857\sketch\src\lcd/ultralcd.h:40:0,
    from C:\Users\Adrian\AppData\Local\Temp\arduino_build_528857\sketch\src\Marlin.cpp:34:
    c:\users\adrian\appdata\local\temp\arduino_build_528857\sketch\src\marlincore.h: In function ‘bool IsRunning()’:
    c:\users\adrian\appdata\local\temp\arduino_build_528857\sketch\src\marlincore.h:74:13: error: redefinition of ‘bool IsRunning()’
    inline bool IsRunning() { return Running; }

    In file included from C:\Users\Adrian\AppData\Local\Temp\arduino_build_528857\sketch\src\Marlin.cpp:31:0:
    C:\Users\Adrian\AppData\Local\Temp\arduino_build_528857\sketch\src\Marlin.h:331:13: note: ‘bool IsRunning()’ previously defined here
    inline bool IsRunning() { return Running; }
    In file included from C:\Users\Adrian\AppData\Local\Temp\arduino_build_528857\sketch\src\lcd/ultralcd.h:40:0,
    from C:\Users\Adrian\AppData\Local\Temp\arduino_build_528857\sketch\src\Marlin.cpp:34:
    c:\users\adrian\appdata\local\temp\arduino_build_528857\sketch\src\marlincore.h: In function ‘bool IsStopped()’:
    c:\users\adrian\appdata\local\temp\arduino_build_528857\sketch\src\marlincore.h:75:13: error: redefinition of ‘bool IsStopped()’
    inline bool IsStopped() { return !Running; }
    In file included from C:\Users\Adrian\AppData\Local\Temp\arduino_build_528857\sketch\src\Marlin.cpp:31:0:
    C:\Users\Adrian\AppData\Local\Temp\arduino_build_528857\sketch\src\Marlin.h:332:13: note: ‘bool IsStopped()’ previously defined here
    inline bool IsStopped() { return !Running; }

    Using library LiquidCrystal at version 1.0.5 in folder: C:\arduino-1.8.0\libraries\LiquidCrystal
    exit status 1
    Error compiling for board Anet V1.0.

    1. Hi any ideas as to what i should do to compile and upload marlin to this v1.5 board? I an sure there are many others in
      the same predeiiment as me.

  50. It would be much easier if an update through SD Card would be available as well.. is there any chance to proceed the update using any ready firmware available through SD Card?

    1. Hey Erick, don’t pin me on this but the SD-card interface isn’t attached in a way that it could access the EEPROM. However the USB does have access to the EEPROM, but I’m not sure what chip or connection is responsible for this. If you really want to push the possibilities on this attach a Raspberry Pi with OctoPrint aswell and you’ll have firmware update capabilities and a wifi enabled 3D printer 🙂

  51. Hey Tom,
    Did you try adding a BLTouch to your A8P?
    I used your step by step guide to upgrade mine to Marlin, and it works like a charm. I added manual mesh bed leveling, but i wanted to add a blt or 3dt sensor to it.

    Anyways, thanks a lot. Clearest guide i could find tbh.

    1. Thanks! And unfortunately not yet, but I will soon! It should be similar to adding it to the “old” Anet A8 but I’m not sure which wires are unused and/or can be repurposed for automatic bed leveling

  52. Dear friends, I have an ANET A8 PLUS as I received it from the factory, it works perfect, but I would like to know if I can print in two colors, if so, could you tell me how I should proceed to achieve it? Thank you.

  53. Thank you very much for your quick response Tom. The video is very interesting, but it is not applicable in my case because the Anet A8 Plus comes from the factory with automatic filament change, and it cannot be done manually. You have to change the filament from the LCD panel.

  54. Dear Tom, I bother you again, I am trying to install Marlin 2.0 on my Anet A8 Plus by following all your steps, but I get an error compiling it, would you be so kind as to guide me to find a solution? Very thankful.
    Error compilando para la tarjeta Anet V1.0 (Optiboot).

  55. Thank you for a very nice instruction, worked (almost) like a charm.

    One thing I had to do – during uploading of the firmware for the first time I got avrdude: stk500_getsync() attempt 1 of 10: not in sync error. However – when I set the board to Anet V1.0 (not the Optiboot one) the avrdude switched to lower baud rate 57600 (see boards.txt file – anet.upload.speed=57600 for V1.0, 115200 for Optiboot) and in my case it worked just fine, upload successful.

    1. I recall similar problems with a long USB cable, I btw. have an update coming! To counter some aggressive acceleration settings and filament changes

  56. Hello Tom. Another happy user here with your tutorial. Coronavirus made me buy my first printer. I hope everybody is healthy over there. Installed (not tested yet) all correct Stock Anet A8 plus MARLIN configuracion only adding manual bed leveling. As somebody in this conversation, we are interested in change filament feature… Thank for your good help and support!

  57. Thanks for the tutorial it worked flawlessly.
    As the coment beforeme only thing missing is filament change option. Activating advanced_pause_feature fails compilation.

    1. You’re right, and I’m currently working on an updated guide, I will try to get this finished by this weekend!

  58. Took a while, but I finally got Marlin 2.0 on my anet board. The machine is alot quieter now, lovin’ it.

  59. Boa noite Ton,tenho uma anet a8 plus original,nao achei no display dela a opção de salvar alterações feitas direto no display.Se eu atualizar para o marlin 2.0 eu consigo esta opção?,Se sim onde eu encontro ela? obrigado

  60. Hi Tom,

    Excellent page! Lovely and clear unlike a lot of others.

    I have problems in that I have mental health issues and lost 28 years of IT skills. I have bought the Anet A8 printer to kick start me back into IT, so I am finding it all difficult.

    Anyhow, I have purchased the v1.7 motherboard after some advice on another website and a 18mm ABL kit with 3 wires (I assume you can plug straight in without using the optocoupler?!).

    I have not yet fitted the board, but would your update above work on the Anet A8 v1.7 board, and would it improve the functionality of the printer?

    Thank you.

    1. Hey Paul,

      I hope your (mental) health condition is improving, not sure if it’s helpful for IT skills but surely for analytical and tinkering skills!

      Yes the guide should work for the newer revision board as well. However it would not really improve the functionality of the printer that much. It’s more that the Marlin firmware is open-source and provides much more settings to further fine tune your print(er) settings, which otherwise would be very difficult or even impossible.

      However on the subject of the Auto Bed Leveling module I haven’t tested that myself but a lot of other did this once they got the Marlin firmware on there and enabled it in the configuration.


      Tom Hofman

  61. Hi – thanks for such a detailed guide, although I think I must have been doing something wrong. I followed the steps and the controller on my Anet A8 plus is now blank screen?

    Please can you advise?

    I’m trying to upgrade to marlin so I can use the E3D v6 hotend, so I can print at 280 deg c

    Any help would be massively appreciated!

  62. Hi Tom,

    Thanks for your speedy response! I’ll give that a try when I get back 🙂

    I ended up buying a new motherboard which should be here today, just encase I had done something I couldn’t undo, but will try to do as you suggested first.

    I have some Nylon PA6-CF to print, once I get going I’ll send you a link with some images all being well!

  63. Hi,
    I successfully got marlin 2.0 on my anet a8 plus.
    But now I installed a bed level sensor.
    The only thing is that when I start printing the sensor goes off the bed and starts leveling.
    How can I solve this??

    1. Hey Maurice, I’m not quite sure but it sounds like it has a “always bed level” settings turned on. Or you might have a G29 (bed leveling) in your gcode.

  64. your process just comes up with allsorts of errors..

    Arduino: 1.8.13 (Windows 10), Board: “Anet V1.0 (Optiboot)”

    In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:258:0,

    from sketch\Marlin.ino.cpp:1:

    C:\Users\Hp\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 (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:211:0: note: this is the location of the previous definition

    #define TIMER2 6
    etc etc

    1. Hey Tommy that’s unfortunate but have you taken a look at the video from Daniel? It’s way more up to date, my original process is almost 2 years old I just kept it there for people who still prefer/use those versions of the software.

  65. Hello Tom,

    I’ve updated to Marlin 2.0. Now I have an issue with the rotary button. It turns the wrong way. In example when I want to scroll in the menu, i used to turn clockwise to fo down. Now I need to turn CCW.

    Do you have any idea what goes wrong?

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.