Octoprint and the Ultimaker 2

Having finally concluded that the whole fiddling with an SD card to get my Ultimaker 2 printing was growing long in the tooth, I roped in a spare Raspberry Pi to act as a 3D print server.

Finding the info required to do this in one place is still quite tricky, so I figured I would write it all down while I still remembered.

First of all, octopi was installed on the raspberry. Of course I was too tired to realise that the image was downloaded as a zip, and I wrote the zip file to the SD card using dd several times until the light dawned, and I cursed roundly at my foolishness. One unzip later, 3.3Gb of data transferred smoothly. The raspberry pi was wired up to the printer and a handy ethernet cable and breathed into life.

Instructions listed here were slavishly followed, and then it was time to give things a whirl.

Firstly, the baudrate in the connection section has to be configured for 250000. Very important. After that there was really not much to do. I decided to install every plugin on a whim, which proved quite useful since there is no “go faster” button, and the custom control plugin allowed me to add one with little fuss (the g-code is M220, e.g. M220 S120 for 120% printing speed). As my benighted offspring might say: “Well wikkid”.

The next big change takes place in Cura, where the UltiGCode has to be switched out for RepRap(Marlin/Sprinter) in the machine settings dialog.

After that, things change a little in Cura, most importantly is the Start/End-GCode tab that appears. This will have to be modified in order to get the results you expect, such as having the head travel to the front of the table and dribble sufficient quantities of expensive filament to no end other than to prime the nozzle, and drop the bed after printing.

So, here be the code:

Err, not quite. Just a quick note, and then the code. M117 appears to do absolutely nothing at all. Nada. Nichts.

Ok, here really is the code.

Start code

;Sliced at: {day} {date} {time}
;Basic settings: Layer height: {layer_height} Walls: {wall_thickness} Fill: {fill_density}
;Print time: {print_time}
;Filament used: {filament_amount}m {filament_weight}g
;Filament cost: {filament_cost}
;M190 S{print_bed_temperature} ;Uncomment to add your own bed temperature line
;M109 S{print_temperature} ;Uncomment to add your own temperature line
G21 ;metric values
G90 ;absolute positioning
M82 ;set extruder to absolute mode
M107 ;start with the fan off
G28 X0 Y0 ;move X/Y to min endstops
G28 Z0 ;move Z to min endstops
G1 F12000 X5 Y10 ;move hotend to front left
G1 Z15.0 F{travel_speed} ;move the platform down 15mm
G92 E0 ;zero the extruded length
G1 F200 E5 ;extrude 5mm of feed stock quickly
G1 F50 E15 ;extrude 15mm of feed stock slowly
G92 E0 ;zero the extruded length again
G1 F{travel_speed}
;Put message on LCD screen - well, not really coz it don't work
M117 Printing...

End code

;End GCode
M104 S0 ;extruder heater off
M140 S0 ;heated bed heater off (if you have it)
G91 ;relative positioning
G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure
G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more
G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way
G28 Z0 ;move Z to min endstops
M84 ;steppers off
G90 ;absolute positioning

That’s really that.