6 min read

OctoPrint: extra muscles for your 3D printer

OctoPrint: extra muscles for your 3D printer

It’s been almost two months since I installed my Prusa i3 MK3S+, and I’m still happy as can be.

One thing that might scare off people who will buy a 3D printer (especially at Prusa) is the rather spartan user interface. The Prusa i3 runs on an 8-bit microcontroller, which is highly specialized but does not have enough power to create a smooth user interface on a touchscreen in addition to printing.
Therefore, you have to control your printer by running around with an SD card and looking at an old-school monochrome LED screen.

G-code

Before I present you with a solution, I’ll have to give you some theoretical background on 3D printing. My apologies.

In itself, a 3D printer is a relatively stupid piece of hardware. The files you print contain a lot of codes, the G-code, with exact instructions on what the printer should run:

G0 X12               ; move to 12mm on the X axisG0 F1500             ; Set the feedrate to 1500mm/minuteG1 X90.6 Y13.8 E22.4 ; Move to 90.6mm on the X axis and 13.8mm on the Y axis while extruding 22.4mm of material

For a complex print, such a file quickly consists of a million commands.

The printer itself never knows what it is printing, nor in what material. Therefore, you cannot simply send a 3D object to the printer. You must first convert it to G-code, tailored for your exact printer model and the material you use. This process is slicing.

Slicing divides your 3D model into layers and draws those layers as efficiently as possible for your printer. To do that, you use a particular piece of software: the slicer.

Slicing with PrusaSlicer

You save the G-code this process produces to an SD card and use the printer’s spartan interface to print it.

It’s cumbersome. Why is there no wifi built-in?

Enter OctoPrint

Luckily Gina Häußge thought the same thing eight years ago when she started developing OctoPrint. This piece of software makes you control your 3D printer over your network and makes it possible to send G-code directly from your slicer or via the web interface.

You install OctoPrint on (for example) a Raspberry Pi, which you then connect to your printer via USB. OctoPrint will talk to your printer via that USB cable and will make it pass any G-code you send to it to your printer.

But it can do much more than that. OctoPrint turns your stupid 3D printer into a smart device: you can control your printhead directly, manage the fans, set temperatures, view your webcam, and so much more.

OctoPrint in action

Thanks to an ingenious plugin system, it is also expandable with extremely many other cool features.

There are currently almost 300 plugins available for download for OctoPrint. These are my favorites:

Octolapse for creating time-lapses

You can easily connect a webcam to OctoPrint to keep an eye on your print. OctoPrint can also take a photo of each layer printed, making a timelapse of how your printed object progresses.

By default, this is pretty basic, and it takes a picture at the beginning of each layer. Because your bed is not in the same position on every layer start, the standard OctoPrint time-lapses are not stable.

With Octolapse, they are. This plugin analyzes the G-code and will determine the best point to take a picture per layer. This way, you get much more stable time-lapses. Like this one:

Multi-cam

By default, you can only add one webcam in OctoPrint. With multi-cam, you can add as many as you like.

My Raspberry Pi 4 with OctoPrint installed has one HQ Camera, and I also have another Pi 4 with MotionEyeOS and two additional cameras. Thanks to multi-cam, I can easily switch between those three cameras.

Telegram Notifications

Some prints take hours, and then the Telegram plugin is handy. It offers a personal Telegram bot that sends the status of your print job every few millimeters via a text message, including a photo or GIF.

You can also start and stop prints with it. Or check out the status when you’re waiting for your kid at the school gate.

Setting up the bot is a little work, but it’s something you’ll only have to do once.

The Spaghetti Detective

When a print detaches from your build plate and your dumb 3D printer keeps printing filament in the air, you’ll soon end up with a whole bunch of plastic spaghetti.

The Spaghetti Detective is a service that monitors your webcam and detects a lot of problems through AI, and alerts you if your print fails.

They have a $4/month subscription, but they also offer their entire backend system as a Docker image.

Arc Welder

What Arc Welder does is black magic. Arc Welder looks at your G-code and, where possible, will replace several consecutive straight line commands with curvature commands. This replacement results in much less G-code (and therefore less communication between the printer and OctoPrint) and cleaner prints.

Thanks to Arc Welder, the extruder (printhead) doesn’t jerk as much and makes smooth curves.

It’s a relatively new plugin, but the guy behind Octolapse created it, and his code also begins to find its way to the different slicers. In the long run, hopefully, you will no longer need this plugin.

Arc Welder before and after

Some more fine plugins I use

  • Bed Level Visualizer & Prusa Leveling Guide: an entirely straight print bed is the wet dream of many printer owners. These two plugins (in combination with the nylock mod) make that possible.
  • PrusaSlicer thumbnails: allows you to send a thumbnail in your G-code, which you can also see in the interface of OctoPrint.
  • Resource monitor: an extra tab in the interface that shows you how hard your Raspberry Pi is sweating. A stuttering Raspberry Pi can cause a failed print, so it’s best to keep an eye on the resources.
  • UI Customizer: By default, OctoPrint UI is functional but not always pretty, especially on a mobile device. UI Customizer is trying to fix this.
  • DisplayLayerProgress: This shows the progress of a print in the title of your browser tab.

OctoDash

Since it seemed convenient to me to operate OctoPrint on the printer itself, I ordered a 7″ touchscreen on AliExpress to connect to the Raspberry Pi. Once it arrived, I quickly learned that the interface of OctoPrint is not suitable to use with a touchscreen.

There are plugins like TouchUI trying to fix this, but I wasn’t happy with the result.

Fortunately, there is OctoDash, a native application with a sleek appearance, which connects to your OctoPrint server via the API. The functionality is relatively limited, but it’s very good at the things it does.

App

OctoPrint doesn’t have a native app for iOS, but some developers have filled that gap. OctoClient is one of those, and I’m a happy user.

Cons?

You often hear that it would be more reliable and faster to print from SD cards. They will never feed the G-codes too slow, which used to be a problem with OctoPrint on older Raspberry Pis in the past. Also, your Prusa can resume from a power outage when printing from an SD-card.

I’ve printed a lot in the past two months, and never has OctoPrint lagged. I think it’s fair to say that the Raspberry Pi 4 is indeed more than powerful enough to drive the G-code to the printer.

A power outage sucks, but they don’t often happen (at least not in Belgium). So for me, the advantages of using OctoPrint outweigh those two things.

Conclusion

I can highly recommend anyone with a Prusa or any other 3D printer to use OctoPrint. It’s free, easy to install and configure, and it makes 3D printing much more fun.