Firmware upgrade help (Anet A8)

I'd like to upgrade the firmware on my Anet A8 to gain thermal protection, but I have a few questions about the process.

  1. Is Marlin the best option for firmware? Edit: Skynet is a thing too?
  2. Will updating firmware change my tuning or require configuration to be able to print?
  3. What is the best upgrade path?
    I see a huge variety of options when it comes to updating, whether from plugins in Octoprint itself, to commands on the connected pi, to arduino IDEs on a separate windows machine.
    I am not sure which of these is the most straight forward.

What do you all recommend?

1 Like

From the Anet A8 wiki page I see this in the firmware section:

  * Original Anet firmware
  * Marlin 3D printer firmware.
  * Skynet 3D A marlin-based firmware modified for the Anet A8. Code is in Marlin.
  * Script for setting up a build environment for Skynet 3D on Raspberry Pi / Linux
  * Repetier Firmware - On 14. June 2016 the Anet A8 was added to the Repetier-Firmware as Zonestar P802M Clone.
    * Pull Request on
    * Repetier Firmware on
    * Installing Repetier firmware on Anet A8

The Skynet as seen is struck out so it's in Marlin (now... not sure).

Marlin appears to be the most used even though there are some which cling to Repetier.

My general suggestion for the average person is to go with the most mainstream option: Marlin. If you were a coder and using a Raspberry Pi 3 (four cores), then I'd point you toward Klipper.

If someone here has an Anet then they might be the one to ask about your other questions. If not, then the Anet-related forum would be a better place to ask.

Googling: Anet A8 update firmware

...turns up at least three videos. Watch at least one to get some footing with the work involved.

1 Like

I've got two of those beasties here, and I've tried a few times to do the firmware upgrade, and every time I tried I ran into a different brick wall. It needed this or that which I didn't have etc

And every time I failed at the firmware, I did another hardware upgrade instead, so, by now, the hardware should be at a point where it doesn't pose a fire threat

After seeing this post, I went and tried it again last night. I've started experimenting with Arduino's so I've already got the Arduino programme installed, and sort of halfway convinced that I have a partial idea of what I'm doing with it (although still fully convinced that I'm just poking around in the dark)

So I tried it again last night, downloaded the new firmware, made the changes stated in the instructions, and loaded it into the Arduino software. But it wouldn't compile because it claimed that it was lacking a pins.h repository, or library, or whatever it's called. So I went on a hunt for that library, and came up with something called pins_arduino.h, which wasn't the exact name it was looking for, but I was gonna try it anyway, when I saw that there was another pins_arduino.h in another subfolder, so now I'm not sure which one to use, or even if either one of those is right in the first place

I understand that Arduino is only looking for the pins.h because that's what it's calling for in the code, so all I have to do is change the reference to pins_arduino.h and it'll be happy, but again, I don't know which one to use, or if that's the right thing to do

Another stopping point is that neither one of my computers is near either one of my printers, and the instructions want me to upload the firmware thru either avrdudess or arduino, and not thru the octoprint plugin that's made for uploading firmware

I'm willing to experiment on one of my printers, although I'd really hate to screw up all the changes I've made to the things cuz they're printing almost perfectly right now

Now, I DO have a spare Anet motherboard that I can experiment with which I won't mind using as a test bed if anybody wants to offer any suggestions. But, right now I'm kinda at a stopping point

1 Like

The file pins.h is a generic header file that references multiple board specific files depending on definitions from Conditionals.h, Configuration.h, etc.

If you are missing that file, then I'd be suspicious of the integrity of you Marlin download. You can get the latest Marlin from

If you can find a download of the Marlin sources for any Anet A8 firmware version. It should have the machine specific pins file as well as an appropriate starting place for the Conditionals.h, Configuration.h, etc.

My first step would be to take the A8 firmware I downloaded and use the Arduino IDE to compile it. This should help you get the procedure and proper libraries sorted out. Then you can move on to compiling a modified version for the A8.

1 Like

This looks like a nice resource,

1 Like

Mmmkay. I don't really have room for this, with about 12 other projects going. I kinda slid stuff off to the side, and I've got the thing kinda connected.

It wants me to Get Board Info but Octoprint isn't seeing it, and my computer isn't seeing it

I was sure that it was throwing an error cuz I didn't have any thermistors installed, but I threw a couple on there and it still isn't being recognized

I guess I'll just skip the bench test and see about the software

I found the pins.h and a few other files that it wanted but now it wantsSanguino cuz it says pins for this chip not defined in Arduino.h

Now, I found a folder called "Sanguino" with a file in it called pins_arduino.h. I wonder if I'm supposed to rename that one to "arduino.h" ?

I think I will cuz there isn't already one there called 'arduino.h' so, what could it hurt, eh ?

Nope. That didn't do it. Still don't see sanguino or anet on the list of boards and it's still giving me the same error

Ack. This thing is really starting to tick me off

Couldn't we just recommend that people buy a fire extinguisher instead of upgrading the firmware ?

I finally got it to be recognized on the bench, and by Octoprint, and by Arduino, but, I'm still kinda stuck

Does this info from Arduino help anybody who knows how to do this ?

It says to upload a sketch, but I can't cuz I still can't compile it

Maybe you need to (manually) adjust the baudrate somewhere on both sides for things to see each other.

1 Like

Well, there's 3 different pieces of hardware here, 3 pieces of software, and only 2 possible connections

Anet MoBo connected to Rpi
Anet MoBo connected to PC

Now, on the RPi it will only connect at 115.2k. I tried others, to no avail. 9.6k thru 115.2k. I did see some interesting noise at 56k that looked like it might be thinking about considering trying to be somewhere in the neighborhood of something that appeared to be a handshake. But it never quite completed the handshake

As for the PC, well, it seemed happy to talk at everything from 9.6 all the way up thru 115.2. At least, it didn't complain anyway. And the Arduino, well, as long as Windoze was happy, the Arduino seemed happy. I got the same response when I asked about the board during every request from 9.6. to 115.2. And since the response was the same every time, it seemed a logical assumption that the query was properly understood

I think that if I had a properly compiled firmware, I could probably upload it fairly easily either thru RPi/Octo or Windoze/Arduino. All I seem to be lacking at this point is the dratted firmware to be edited (which I think I've done) and compiled (which seems to be my roadblock at this point)

I've only just started using this Arduino, so, I think what we need here is somebody familiar with Arduino to figure out how to compile the script that I have already edited

Honestly, it seems like we're almost there. Once this thing is compiled it should be a matter of two mouse clicks to upload it

Oh, I forgot a possibly relevant piece of information...

When connected to the RPi, I get a readout on the firmware, and the message is this...

FIRMWARE_NAME:ANET_A8_20160525 VERSION:ANET V1.0 MACHINE_TYPE:ANET_A8 EXTRUDER_COUNT:1 , but nothing is said about the hardware other than what's programmed into the EPROM.

And when I'm talking thru Windoze, I only get a readout from the hardware, and nothing about the firmware

I followed the usually steps , but once a while ago failed when directly connecting the Board via USB..which i will never do again ! It overwrote the anet bootloader and the board seemed dead.

I now use a programming adaptor, an arduino UNO( flashed as Programmer ) and connect to the SD connector. There are several tutorials out there. Then you can use ARDUINO as PROGRAMMER and safely upload the newest versions of Marlin.

Hah hah, this is why I was asking for recommendations.

Thank you all!

I don't have a spare Arduino, so I will probably give the honzakasik guide a shot and see where it takes me.

So, am I understanding you correctly ? It seems that you're saying that you compile the Anet firmware on the arduino, and then write it to SD card, then upload the firmware to the Anet from the SD Card ?

What you want is to update the Anet A8 to Marlin 1.1.8, which I have done about a month or so ago. However, if you have any plans on adding an automated bed leveling probe, I would then recommend the EZABL from TH3D Studios (Google them for the web site) as the ABL is already set up in their Unified Firmware that is based upon Marlin and Tim Hoogland works very closely with the authors of Marlin in order to make the upgrade of the firmware very straightforward. All of the thermal protections are enabled and the firmware is DEAD SIMPLE to update.

There are SOME Anet A8 boards that have gotten out into the wild from the manufacturer that were shipped with corrupted boot loaders and if you have one of those you will need to flash the boot loader back onto the board by connecting an Arduino UNO to the Anet A8 board through the use of some jumpers to update the boot loader. You only need to do this one time.

Is there any way to determine whether you have a problem boot loader?

(Additionally, what sensor technology does the EZABL utilize? I assume they are capacitive based on the shape and functionality?)

I believe its trial and error. If flashing succeeds, you don't have a problem. If it fails, you do. I think I read something about a blank LCD screen after flashing.

In this case, 'failure' represents soft-bricking the control board, yes?
And I'd need an arduino on hand to flash a new bootloader or firmware to recover?

I want to be prepared for the worst-case scenario. :neutral_face:

Oh man... I should have photoshopped an Arduino into that.

1 Like

I've seen a few web pages concerning recovering from a bricked anet mobo that all said to use an arduino uno

I kind of flashed past them at the time, but, I guess it's time to actually pay attention

The thing's not bricked yet. Heck, I still can't even compile the thing. I wish somebody would jump in with THAT part so that we could move on with this project

Any luck @Spyder?


1 Like