Category Archives: Software

Notes on Marlin – Auto Bed Levelling

Upon enabling the auto bed levelling feature of the Marlin firmware I learned a thing or two through trial and error and wished it had been better documented so I’ll try and let you know what I’ve learned.

Here are links to some useful information that all helped me get setup:

Firmware setup
Hardware setup
PrintrBoard setup

In the Marlin firmware, where you set the left, right, back and front positions for probing, do not set the left and front positions below 10.  I tried 5 (assuming the bigger the test area the better results you would get) and wondered why moving the nozzle back to X0 Y0 after homing resulted in the nozzle crashing both X & Y in to the min endstops.  I quickly noticed that at the start of the probing both the nozzle did not move in either X or Y so they were both then 5mm out when homing after the probing.  I now use 20 for left and front.

I also found that if you just move X & Y to home before probing and your nozzle is quite high in relation to the bed then the bed probe would stop way before it even touched the bed.  I thought I’d fix this by homing the Z before probing but you need to make sure that the probe is within your bed probing co-ordinates (i.e. the middle of the bed, or at least more than you’ve set for left and front).

So here is my start G-Code* that I’ve put in to Slic3r:

G28 X0 Y0 ;home X & Y
G1 X100 Y100 F5000 ;move nozzle to centre of bed
G28 Z0 ;home Z
G29 ;probe bed
G90; set absolute coordinates
G92 E0; reset extruder distance
G1 Z5 F300 ;move nozzle up 5mm for safe homing
G1 X0 Y0 Z0 F5000; move nozzle to home

*If you’re going to use this code then please set your own bed centre and move velocities appropriate to your printer.

If I discover anything more on this topic then I’ll update this post.

Tagged , ,

Slic3r 1.0.0 RC3

So Slic3r is almost at an official version 1!!

The latest release is less about features and more about but fixes.

As always, a very big thank you goes out to Alessandro Ranellucci and everyone else who has contributed to the application.  Especially in keeping it FREE!

The ONE bug I hope gets fixed before the final version 1 gets released is hole diameters.

It’s quite well documented on the Slic3r forums that the holes generated by Slic3r are smaller than designed.  Fingers crossed for version 1.

Tagged ,

Latest Marlin firmware for PrintrBoard

Recently I had noticed that the version of Marlin I was using on my 3D printer (using a PrintrBoard as the control board) was Marlin v1.0.0 RC2 and looking on GitHub there had been quite a few changes since this version was released.

Although a lot of work making it compatible with a PrintrBoard had already been included I needed to make a few alterations to get it working fully.

Code alterations I’ve made include:

  • change motherboard, temp sensors, endstops not inverting, included SD and LCD support to Configuration.h
  • swapped Y endstop pin to E endstop pin, added LCD, encoder and SD card pins to pins.h

Obvious updates include:

  • X & Y location on LCD home screen
  • Long filenames on SD card support
  • Move Axis by 10mm, 1mm or 0.1mm increments

You can download the version of Marlin I’m using here.  Don’t forget to adjust the calibration figures to your printers requirements.

Tagged , , ,

Repetier Host Mac v0.40 – Update

Another update for Repetier Host for Mac.  Here are the change log notes:

  Now with Slic3r 0.9.3
  Exact positioning in object placement.
  Support for Mach3 flavored output.
  Added flow multiplier in manual controls.
  M117 on Marlin shows no more garbage.
  Homing to X, Y and Z max possible.
  Temperatures are now floating point values.
  More flexible coordinate system for e.g. Rostock delta printer.
  Mark origin with a dot.
  Some minor bug fixes.

Grab your copy HERE!

Tagged , ,

Repetier Host Mac v0.32 – Update

It’s quite easy to miss updates to the software involved with 3D printers so I’ll try and alert you if I hear of an update.

Here is a small update to Repetier Host for Mac to version 0.32 and the change log for this version is:

Added sparkle for automatic updates.
Use variables from slicer in g-code.
Fixed bug crashing on OSX 10.6 and older on start.
Fixed bug in undo/redo.
Some minor bug fixes.

When I first started 3D printing I was using Pronterface then moved on to Repetier.  One of the best features of Repetier is that you can see what the print will look like in 3D and you can spot potential flaws in your print without wasting filament.

Tagged ,

PrintrBoard SD Card & Boot-up fix

I had some trouble using the PrintrBoard’s built in SD card reader using Marlin firmware. I also had an issue with the Y-endstop, which I thought was unrelated, as the board would not boot if the Y-endstop was pressed (ie. if the bed was homed). The only help I found was from Lincomatic’s blog again but this time in a comment from “RustyPaint”, found here.

The issue is that the pin used by the Y-endstop is connected to the SS pin of the processor. So if the Y-endstop is closed it interrupts the SPI bus which the processor uses to talk to the SD card. The conflict also causes the board not to boot if the Y-endstop if pressed.

So the work around is that you disconnect the Y-endstop from the PrintrBoard and plug it in to the free Emergency endstop pins. You must then also configure the firmware to look at the E-stop pins instead of the Y-stop.

In pins.h, within the Marlin firmware, change line 918 from:

#define Y_MIN_PIN 20


#define Y_MIN_PIN 37

This solved the booting problem and now I can print from an SD card.

(Update: Just make sure your file name is a maximum of 8 characters long and the extension is a maximum of 3 characters. For example “Myprint1.g”)

Thanks to Nicolas Vicuña for pushing me to find a fix and help testing it.

NB: This post gets a fair bit of traffic.  If this information helped you at all then please leave a comment.

Tagged , , , , , , , ,

Arduino – PrintrBoard

I had some issues getting my PrintrBoard talking to the Arduino IDE but after digging the depths of the internet I found a few trick to making this work.

Credit for this post goes to Lincomatic. I’m posting my methods and what I did to get my board working. I also think having this information available it good for everyone. So…

I’m working on OSX 10.7.4 with a PrintrBoard Rev. D and here are the files I’m using:

Arduino v1.0.1 – Link

Teensyduino v1.09 – Link

Teensy boards update, courtesy of Lincomatic, modded by me – Link

Marlin Firmware for PrintrBoard, courtesy of Lincomatic – Link

Here are the steps I went through:

  1. Install Arduino IDE.
  2. Install Teensyduino.
  3. Right click on the Arduino application, click “Show package contents”
  4. Navigate to “/Contents/Resources/Java/hardware/teensy/” and place the Teensy boards update files here.  Overwrite any files if you’re asked.  This installs the correct information to connecting to your new Bootloader.
  5. Run Arduino, load the Marlin.PDE file, select “[BootloaderCDC]Teensylu/Printrboard” in the Tools – Board menu.
  6. Click Verify and make sure Marlin compiles correctly.
  7. Load the Arduino IDE, open the Marlin.PDE, select “[BootloaderCDC]/Teensylu/Printrboard” from Tools – Board menu, select the “dev.tty.usbmodem.1d11” (or similar numbers) serial port from Tools – Serial Port menu, click Upload.
  8. If successful, close the Arduino IDE, remove the boot pin jumper, press the reset button, load Pronterface (or whatever printing software you wish to use), select the “dev.tty.usbmodem.12341” serial port (note the different numbers from the bootloader mode) click “Connect” and you should be connected to your PrintrBoard.


Tagged , , , , ,

CDC Bootloader – PrintrBoard

I’d just like to add before I start that messing with the fuses and bootloaders may result in bricking your board, just don’t blame me if it goes wrong!

Credit for this post goes to Lincomatic.  I’m posting my methods and what I did to get my board working.  I also think having this information available it good for everyone. So…

I’m working on OSX 10.7.4 with a PrintrBoard Rev. D and here are the files I’m using :

CDC Bootloader, courtesy of Lincomatic – Link

AVRdude, “how-to install” link

Here are the steps I went through:

      1. Install AVRdude
      2. I bought and built the USBtinyISP kit from
      3. Connect the 6 pin socket on the USBtinyISP to the 6 pin header on the PrintrBoard so the RED wire on the ribbon cable is closest to the SD card socket.
      4. Add a jumper to the boot pins of the PrintrBoard, power it up, then press the reset button.  (For Rev. A, B & C PrintrBoards you remove the boot jumper)
      5. To set up the required space to upload the bootloader and free up some extra pins on the PrintrBoard set the “fuses“.  To do this paste and run the following code into Terminal:

avrdude -c usbtiny -p at90usb1286 -U lfuse:w:0xde:m -U hfuse:w:0xdb:m -U efuse:w:0xf0:m

      1. Then upload the CDC Bootloader, (make sure the path for the hex file is correct*).

avrdude -c usbtiny -p at90usb1286 -U flash:w:BootloaderCDC.hex:i

(note AVRdude will give a verification error, ignore it as the programmer can program but can’t read back large files)

      1. At this point you should power down the PrintrBoard and remove the 6 pin cable.  You’re now ready to upload your firmware.

See the next post for how to configure your computer to upload the Marlin firmware to your PrintrBoard.

*the easiest way to get the right location of the bootloader.hex file is to type the first part “avrdude -c usbtiny -p at90usb1286 -U flash:w:” then drag the file into the terminal window over the text.  This fills in the location for the file, then don’t forget to type “:i” at the end of the line.

Tagged , , , , , ,