I’ve used and abused my first 3D printer for about 2 years. It had print quality problems and my recourse was to buy a new cool delta printer. But is there any way I can refresh that 3D printer I just about gave up on? I decided that an updated firmware may be something I wanted to try out.

Safety is an Optional Feature?

I don’t really know if temperature safety protection was available when my printer was originally made but it is now. Some manufacturers still turn that off and that’s insane. What that feature does is have the controller see how long it takes to reach a set temperature. If it takes too long, if the temperature results don’t make sense then the firmware powers off the heating elements and locks up the printer.

Shutting down your printer is a more attractive outcome than burning your house down. This is one reason why you want to buy safe equipment from reputable manufacturers. And even then, some of those manufacturers disable that safety check.

I ran into an issue like this with my 3D printer about 2 years ago. Too much power was going through a cheap connector for the hot end nozzle and the connector on the control board melted. The whole basement filled up with the smell of burnt plastic and I thought the inside of the controller box was on fire. It wasn’t quite that bad but close.

I don’t know if thermal protection would have stopped that melted connector but I do know that after a period of time the printer would safety off when the temperature didn’t make it in the window of time.

The manufacturer sent me a Melzi 3.5 replacement board and I swapped it out. I also added hardware to make the printer safer.

  1. One MOSFET to the rescue. I added it between the printer’s hot end and control board that drew power directly from the power supply. That meant the control board didn’t feed a lot of amperage, it just signaled the MOSFET to draw power separately and send it to the hot end.
  2. The 3D printer’s firmware lacked basic thermal protection that more current models have or should have in 2019.
  3. Leveling the printer bed was ruining my liver. 3D printing relies on getting a good first layer. Everything is literally built upon that. The way you level the bed involves turning the screws on each corner. Sometimes it works but often (for me) it didn’t. I could get part of it to work OK but then “RRAARRR!! WHY WON’T YOU WORK ON THAT PART OF THE BED!!?!”


I really wanted to try an updated firmware so I followed this video very carefully. It’s the exact same process as burning a bootloader onto an Ender 3 but this video matched my hardware. I bought an Arduino UNO R3 from Microcenter and went to work.

This process will put a bootloader on the controller. It will also brick your printer as you are wiping out the existing firmware. For me that was fine as I gave up on the printer and this was just the first step. I skipped the part about burning the Repetier firmware as I wanted straight to Marlin.

I found a pre-made version in this Google Group. It was Marlin 1.1.8 and it just worked. I took the author’s Configuration.h and Configuration_adv.h files and manually edited Marlin 1.1.9 (I wanted to see what I was doing) and now I am running that version.

I also replaced the 3D printer bed surface. It’s a sticker with Buildtak like surface. My old one as looking like the surface of the moon and was frequently failing. This is a re-usable part and is like getting new tires for your car.

Manual Mesh Levelling

This is how I previously leveled my printer’s bed.

  1. Remove the filament from the hot end and clean the nozzle with a metal brush while hot.
  2. Move the printer head to home. That’s the front left corner.
  3. Adjust the front left corner by turning the screw. This moved the corner up or down.
  4. Using a piece of paper, move the bed till there was just a little pressure on the paper. I wanted the paper to move without bunching up but get a little drag.
  5. Move the hot end to the next corner and repeat.

This works sorta, except that moving another corner also moved the level on the other corners so I had to revisit each corner multiple times to make it work. For added benefit, my bed was slightly warped. What was level at the corners wasn’t level at the middle.

I would get around that by using a raft on my prints but I’d prefer to just print reliably on the print surface directly.

Here’s how I do this now. This is using a current feature of the Marlin firmware.

  1. Heat up and clean the hot end nozzle and remove any filament. It’s metal and the wire brush works.
  2. Adjust the 4 corners to close to the homed nozzle and visually level. I just get it close to the nozzle. I don’t worry about how close, it’s within a millimeter or two and that’s fine. I think the firmware has 4 mm of play but I’ve not confirmed that.
  3. Heat the bed and the nozzle. I use PLA so that’s 60C and 205C.
  4. Select level bed on the LCD panel. This homes the nozzle and asks me to to click when ready. It will probe the height of 16 points (4 x 4). I set this in the firmware’s Configuration.h file.
  5. I click and it moves the hot end to the first point. Using the LCD knob, I raise or lower the nozzle (not the bed corners) till it’s just dragging on the paper underneath. When it’s just right I click to let it know.
  6. I repeat this for the next 15 points on the print bed.
  7. Save the settings when done.

This is what the mesh points look like.

Send: G29 S0
 Recv: State: Off
 Recv: Num X,Y: 4,4
 Recv: Z offset: 0.00000
 Recv: Measured points:
 Recv:         0        1        2        3
 Recv:  0 -1.07500 -1.02500 -1.02500 -1.07500
 Recv:  1 -0.80000 -0.75000 -0.75000 -0.82500
 Recv:  2 -0.55000 -0.52500 -0.55000 -0.62500
 Recv:  3 -0.40000 -0.42500 -0.50000 -0.60000
 Recv: 

The bed goes from a -0.4 mm to -1.075 mm adjustment. See the second line? The edges are slightly higher than the middle. It’s imperceptible to a person but for a machine that’s laying down a layer of filament 0.25 mm thick it counts.

To enabled this feature, right after my print’s G28 code, I need to add “M420 S1” and that tells the printer to use the mesh I manually probed. I updated my slicer’s profile and started a test print and waited.

Great Shark Monkeys. That worked.

Test print on the 3D printer bed

I haven’t been able to get a good first layer like that in ages. I would get one side leveled but between the too low or high on the other side. And the low sections in the middle was awful. Now the printer gets the geometry from the mesh level I set and poof! A good first level is accomplished on the whole bed. Sweet.

I did the firmware upgrade mostly as a “Why not?” and to see if I could get those safety features baked in. The manual mesh leveling is an added bonus and I now have a fully functional 3D printer which I had written off months ago.