OctoPrint is a wonderful addition to any 3D printer setup. It provides a really
snappy, responsive interface and is extendable through plugins. You can run it on
a RaspberryPi, or any PC you’ve got laying around.
So why do I need something like OctoPrint you might ask? Well, one can certainly connect
their printer to a computer and run a print there. A major disadvantage is that now the printer
is tethered to a computer. If you’re like me, and have a laptop, this is far from ideal since
I like to have the ability to move around with my laptop. You could just print off the SD card,
but then remote monitoring isn’t really possible.
OctoPrint acts as host software for your printer, allows you to monitor and control your print
remotely, and is completely extensible with plugins! When installed on a RaspberryPi, it provides
you with an inexpensive and powerful print server.
Some Core Features
There are some really cool features included right out of the box.
This graph is really handy. It visualizes your current temperatures, and set points over
time. It can sometimes be hard to notice when you need to do a PID tuning just by looking at the
on-screen display of the printer, this graph let’s you see exactly what’s going on, in realtime.
Webcam Stream and Printer Control
Sometimes you need to be able to manually tell the printer to move the print head to a
certain position. Sure, you can send gcode commands over the serial terminal, but that’s
a lot more annoying than being able to just push a button. The control tab does just that.
You can (when not printing, of course) control all the axes, the fan, and turn the motors
completely off. The flowrate can also be easily adjusted here.
If you’ve got a USB webcam plugged in, you’ll see it’s stream here. If you mouse over the
stream, various keyboard controls become available for use.
Timelapses are neat videos that show the progression of a print, as a sped up animation.
There are two modes of operation, you can take a snapshot at a given time interval, or on Z change.
The built in authentication mechanisms are really handy. If you put OctoPrint on the public
internet, you’ll definitely want to have this enabled. I can’t stress enough how much I
discourage opening up the thing, that controls a thing, that can burn your house down, for the whole
internet to see. There are better ways to do this, such as through a VPN, or with the Telegram
On the public internet, is most certainly not the only use case for access control. Even on a private
network, it makes sense to have additional security, in case someone gets on your wifi, you have kids
with computers, or have a guest in your home, who stumbles upon your OctoPrint instance. Accidents
can happen, it’s best to put security and safety first, with regards to something with such a high
potential for disaster.
For the more advanced users, direct access to the serial console is critical. OctoPrint shows you
what’s happening, as it happens, and allows you to send commands directly to the printer.
The autoscroll feature is handy for monitoring output, and is accompanied by the ability to
suppress certain types of constantly repeating messages from the printer.
Updating OctoPrint and it’s various plugins couldn’t be any easier. You’ll get a notification
when an update is availble, and have the option to start the update process.
One of the coolest features, is the ability to extend functionality through plugins. There
is a plugin repository with a plethora of plugins already available, and a well documented API
if you need to write your own. Here are a few of the plugins that I find useful, but by no means
is this a complete list…
Bed Level Visualizer
This plugin is particularly cool. If you have an auto bed level sensor (proximity sensor,
BLTouch, microswitch) it can visualize your bed level. It’s particularly useful for adjusting
the level of your bed, with respect to the nozzle. As you can see above, my bed is slightly off.
The corner at 0,0 is slightly lower than the rest of the bed. Right now, I’ve given up on trying
to perfect it further, though I expect my OCD will kick in at some point and I’ll put more time
into it. This plugin can be found here
The ATXPiHat plugin is written specifically for a piece of hardware that sits on top of a
RaspberryPi, which can power your printer with an ATX PSU, and lots more.
The board in this picture is the first version of the hat. It has a few more bells and whistles
than the latest version, the ATXPiHat Zero. Included on this board, is the ability to control LED
lighting, emergency power off support, on board fan control, switch functionality as well as realtime
measurement of how much current is passing through it.
The plugin’s main tab offers the ability to control your LED lights, monitor the fan RPM and power
metrics, as well as (if you have it enabled) a control button for the built in switch. Not pictured here,
is a dropdown menu on the main navigation bar that allows you to turn on/off the power to the printer.
So, with the printer off, how does the pi run? Easy! The pi is powered on the 5V standby power line
on the PSU, this way OctoPrint will be accessible even if the main supply is switched off.
The only drawback here, is that if your printer’s control board is powered over USB, there’s a chance
your screen could be powered on, even though there’s no power going to anything else (i.e. the board is
booted, but there’s no power for the motors, hotend, or heatbed).
These are the LEDs in my enclosure, which are controlled by the hat. I feel this is a huge improvement
over having a separate IR remote control for the LEDs. Now, when I turn on power to the printer, the lights
come on, and vice-versa when I cut the power. Both the LEDs and the built in switch can be
controlled either from the web interface, or by sending gcode commands!
If you’re interested in grabbing one of these for yourself, check out Brian’s Website for more info!
This is probably one of my favourite plugins in the ‘neat’ category. OctoPrint has a timelapse
feature built in, but the images aren’t necessarily stable. The shot can be taken when the print
head is at a totally different position, creating a sort of choppy feel. This plugin will move the
print head to a pre-configured position, take the snapshot, and then continue printing. Check out
the video below for a sample I made.
As pretty as these timelapses are, they come at a price. You can end up with print artifacts
if you don’t have your settings dialed in just right, or you could end up ruining a print
entirely. The timelapse above was the first one that I made, and I got really lucky. A few
attemptes after that resulted in failed prints. Sometimes the failures were nothing more than a little
extra stringing, other times it rendered a print unusable (to be fair, it was a print with particularly tight
tolerances to begin with).
For someone with a moving bed, a plugin like this really allows me to get some nice timelapses, with
I highly recommend giving this plugin a try, you can find it here
This plugin is really cool. It should go without saying that putting OctoPrint on the public
internet is generally a bad idea. If you don’t have the ability to use a VPN to connect to
your home network (and even if you do…), then this plugin is probably for you. You can send
commands to start or stop a print, tweak parameters mid-print and receive status updates throughout
the print. Basically, you register the plugin as a Telegram bot, and then in the plugins configuration,
grant yourself, or whoever else access as needed. This one’s available here.
Supporting The Project
OctoPrint is created and maintained by Gina Häußge(foosel). OctoPrint is her full-time
job, and without the support she gets from the community, the project simply wouldn’t be possible. You can
support OctoPrint a number of different ways. Opening pull-requests on GitHub is a nice way to give back,
but since not everyone can code, there are other ways of supporting Gina and her work, such as becoming
a Patron, sending a one time contribution with PayPal, or purchasing an all in one hardware kit from
various suppliers, of which she gets a portion of the proceeds.