N00b Confused about Printer Profiles


Problem: I am not clear on how to load a standard printer profile, in my case, for an ultimaker 2+

Any tips appreciated. This is my first experience with octoprint and I am quite impressed!

Currently I have the default Generic RepRap Printer selected. I see that I can create a custom profile where I define parameters in the tabs Print bed & build volume, Axes, and Hotend & extruder. I am expecting that there is already a list of profiles for some known printers like the one I have. I am expecting too much?

I can see previous model's gcode on the left colum of the octoprint ui. But when I load one, as soon as I click print, the print head immediately begins moving thru the gcode. Because the nozzle is cold, as shown in the temp graph, no filament comes out. Seems to me that the problem lies in my user error with the printer profiles.

OctoPrint 1.3.8 running on OctoPi 0.15.1 on rpi 3 b over wifi
Cura 3.4.1
Ultimaker 2+


Actually you have to type in your printer's parameters.
For @foosel does not have all printers on the market, she can not include all of them into the code. But maye it is possible to create a pool some day where users can upload their profiles and new users can find their models and include them into their OctoPrint.

Do you have a used Raspberry Pi with OctoPrint? When you have a fresh install, there should be no uploaded gcode files. They maybe from the former user.
When they have a different 3D printer than you, they will not work with your printer.
You may upload a gcode file from your slicer, that has the proper parameters for your printer, to OctoPrint and the print should work.


Thx @Ewald_Ikemann Ok, so thanks for clarifying that I need to type in details. If I knew these details, I would have typed them in already, so I will have to look them up.

Once I do confirm my printer profile is working, will I be the first user here at discourse.octoprint.org to post the details of a printer profile or is there an existing thread where people post printer profiles?

As for the octopi, I burned the sd card today, so it is a fresh install. The gcode files that I see in the octoprint web ui are the same as those on the sdcard which is inserted into the ultimaker and they exist no where else, so I my guess is that they are read from this sd card.


I also see at the footer of each of the 3 tabs in the create printer profile flow that none of the details affect an uploaded gcode. These details in the profile, as I understand it, are only for manually operating the printer from within the octoprint ui.

"This information is used for the temperature tab, the bounding box check, the GCODE Viewer and/or when slicing from OctoPrint. It does NOT influence already sliced files that you upload to OctoPrint!"


But now I understand that the gcode files you see are on the SD card that is still inserted in your printer.
When you start such a file directly from the printer, does it heat up then?
In this case OctoPrint does nothing different: It looks onto the SD card and tells the printer to start with the selected file.

Another thing you can test: Below the the temperature diagram you can manually heat up hotend and heat bed. (Note that on the second Temperature tab you have to check that your printer has a heat bed).


Thx Ewald, to simplify, I ejected the sd card and upload gcode to octoprint. The problem persists. Neither the nozzle nor the bed is preheated, and the print head begins moving immediately. It's also odd that the bed does not rise to meet the print nozzle. The nozzle just moves around in air above the bed.

I tried manually heating the bed and nozzle, and this does indeed work. But as I said, upon starting, the print head moves but the bed does not rise to meet it, so the filament just extrudes into air.

Any tips greatly appreciated and thanks for the responses thus far.


It seems the gcode file is corrupted and just start within the model.
Or have you tried another file too with the same result.
Can you upload the gcode file or at last the first 30 to 40 lines?


Thx Ewald for stickin with me. I just tried a simple model and got the same behavior. Printer head moves immediately, bed does not move.
UM2_octoswatch-r2v3p3.gcode (117.1 KB)

In the gcode, I see references to materials, but no temps. In Cura, I create different material profiles with temps and details for each of my filament types. Perhaps I need a different work flow in Cura to create a more verbose gcode for Octoprint. If there is a best practice doc, please link me.

In octoprint, I created a printer profile with the details for ultimaker 2+

I ran yesterdays update and have OctoPrint 1.3.9 running on OctoPi 0.15.1


So now it gets tricky for me. For Ultimaker uses firmware with a special flavor, things are handled different to Marlin.
And because I don't have an Ultimaker, I hope someone who has experience withe Ultimaker & OctoPrint can be a bigger help than me.

I also found this and this discussion on this topic. I may can help you.


Oooh, Ultimaker 2! That definitely needs a change in your slicer to switch to reprap gcode instead of their somewhat proprietary ultigcode variant.

Tried to get it compatible with OctoPrint a couple years ago but was shot down by Daid himself who said it was not worth looking into 🤷 See the links provided by @Ewald_Ikemann for some background.


Thanks @foosel yes I read the links. Happy to switch to another gcode spec, just need explicit directions.

I run Cura v3.4.1 but willing to try another slicer.


Quickly translating the important bits from the first link posted by @Ewald_Ikemann to english yields this:

Cura changes:

  • Switch GCODE flavor in Cura to "RepRap (Marlin/Sprinter)"
  • Enable heated bed
  • Set this as start GCODE in Cura (make sure to leave the first line empty for some unexplained reason):
    ;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
    G0 X20 Y20 F{travel_speed} ;bring extruder to the front
    G1 Z25.0 F{travel_speed} ;move the platform down 25mm
    G92 E0                  ;zero the extruded length
    G1 F200 E25              ;extrude 25mm of feed stock
    G92 E0                  ;zero the extruded length again
    G1 F{travel_speed}
    ;Put printing message on LCD screen
    M117 Printing...
  • Set this as the end GCODE in Cura (leave the first line empty as well):
    ;End GCode
    M107 ;fans off
    M104 S0                     ;extruder heater off
    M140 S0                     ;heated bed heater off (if you have it)
    G21 ;metric values
    G90 ;absolute positioning
    G28 Z0 X0 Y0 ;move Z and  X/Y to min endstops
    G91                                    ;relative positioning
    G1 E-15 F300 ;retract the filament
    M84                         ;steppers off
    G90                         ;absolute positioning

All files sliced thereafter should be fine.

OctoPrint changes:

  • In OctoPrint, disable SD card support under Settings > Features
  • In OctoPrint, set this as Cancel GCODE Script under Settings > GCODE Scripts:
    ;fans off
    ;extruder heater off
    M104 S0
    ;heated bed heater off (if you have it)
    M140 S0
    ;metric values
    ;absolute positioning
    ;move Z and X/Y to min endstops
    G28 Z0 X0 Y0
    ;relative positioning
    ;retract the filament
    G1 E-5 F300
    ;steppers off
    ;absolute positioning

No guarantees though that this works exactly like this with current Cura versions, you might have to change some things. Maybe take a look in Ultimaker's forums and see if there are updated tutorials there.


Thx @foosel for sticking with me on this thread-

I have a good print!

I'll do a screen cast later if anyone wants one, but in the meantime this is what I did for any poor lost soul with my toolchain:
mac --> cura 3.4.1 --> pi3b on wifi --> octopi 1.3.9 --> ultimaker 2+ (with sd card removed)

First, in Cura I installed the octoprint plugin Toolbox --> Packages --> Plugins --> Octoprint Connection

Then in Cura --> Preferences --> Printers I added a new printer of type Ultimaker 2+
Then I clicked Connect Octoprint and added a new instance callled octopi0lan
(The previous entry without lan was me trying to connect over the internet thru my resin.io subdomain, which does not work.. yet)

I then went to Octoprint to copy the API key

Then I pasted the API key back in the Cura dialogue

At this point I was able to both Open in browser.. and then Connect.

Now back in Cura, I loaded a recent project file ending in .3mf. This contains the stl model and typically contains profile and other Cura settings. But I noticed my settings were not correct. I also read in the Cura dialog earlier that Material settings on the printer would no longer be recognized. So in Cura, I selected my material, a custom material had already created with temps for PET. Then I selected my nozzle size.

Then I loaded my stored profile for working with this particular model and clicked Prepare to slice. Then I clicked Print with Octoprint

At this point, the Cura view automatically switched from the Prepare view to the Monitor view and I could see that the nozzle and bed were warming. Once they had reached the temps set in my material, the bed raised, the print head moved and began what would be a perfect print.


  1. I did not have to enter any start or end gcode.
  2. After the print finished, the head returned to back left, but the bed stayed in raised position. I lowered it using the ultimaker controls.

Thanks @foosel and @Ewald_Ikemann for helping me out!

Thanks also for all your work so far on octoprint. Amazing software.


This would be required if the previous stream had an EOF at the end of a line. It might look like this:

G1 X22 Y33 Z44 F3000[eof]

And then when you concatenate your end gcode script it now looks like this:

G1 X22 Y33 Z44 F3000;End GCode

M107 ;fans off
M104 S0                     ;extruder heater off
M140 S0                     ;heated bed heater off (if you have it)

In this case, it would actually work since the first line is a comment. But if the first line isn't a comment then you end up with...

G1 X22 Y33 Z44 F3000M107 ;fans off
M104 S0                     ;extruder heater off
M140 S0                     ;heated bed heater off (if you have it)

In OctoPrint itself, if it were me in the code I think I'd just prepend and append a hard return before/after every gcode script the user provides and then I wouldn't have to worry.


Oh, that was for the Cura stuff. OctoPrint already handles scripts as distinct :wink:

But thanks, that indeed sounds like a good explanation.


@foosel: I actually did not notice the first link was a German article. I just saw an English website and Tom' guide... Lots of thanks for your effort to translate.


@Ewald_Ikemann It also took me three glances to notice :wink: I was like "But... that's described in the first link" reads "Yep, all there" reads a bit of the following discussion "wait a second..." reads yet again "Oh look at that, it's German!"