If you’ve been printing for a minute now, you’re probably interested in not having to insert and eject your SD card all the time after using CtrlPew’s excellent guide on getting your printer put together. Fortunately, OctoPrint can help.
Enter OctoPi. OctoPi is the image of Debian that runs the OctoPrint service on a Raspberry Pi. (Note the distinction there.) Having a Raspberry Pi running OctoPrint next to your printer provides some much-needed quality of life enhancements for your printing experience. You can do cool things like:
- upload your sliced models and print
- save and load settings in presets
- make a time-lapse of your print
- check out your bed-leveling mesh
- watch your print from afar
- among many more…
“Wait Vinh- I’m not a techie or a computer wiz. Raspberry Pi? What’s that? What do you mean image?”
Let’s start with defining some of our blocks here:
- Raspberry Pi – a single board of hardware that can run different flavors of operating systems. It contains all the essential input-output ports, and has an SD card slot for your operating system image.
- OctoPrint – a web (in terms of web technology, not remote) service that controls printer input-output. It pilots your printer by drip-feeding movement commands from the sliced file you upload from Cura (aka the GCODE instructions).
- OctoPi – a Debian (a flavor of Unix) operating system image preconfigured to run OctoPrint out the box. (It’s maintained by Guy Sheffer.)
The gist of our set up is very simple: we put OctoPi on a Raspberry Pi, and then we connect the Pi to our local home network and to our printer via a USB cable. We can connect to OctoPrint and configure our instance from there.
To get started, we’ll need the following equipment:
- Raspberry Pi 4B – (100$ USD) This is the best Raspberry Pi board at the time of writing. Go for the 4GB of RAM!
- USB-C Power Adapter – (10$ USD) It must supply at least 3.5 amps out!
- MicroSD Card – (8$ USD) It has to be a Class 10 card. Something small like 32 GB will do fine.
- Micro SD Card Reader – (100$ USD) buy a good one! The one that comes with your printer WILL NOT work.
- USB Cable for your printer – Be sure to check which flavor of connector your printer uses- this guide may help if you don’t know how to tell.
Not required, but strongly recommended:
- 30x30x7 mm Brushless Fan – (5$ USD) We’ll print a model that you can attach this fan to.
- 4x M2.5 x 12mm screws and 4x M2.5 nuts – print this case!
- Heatsinks for the Pi 4B – (5$ USD) This helps keep your Raspberry Pi cool.
- USB Webcam OR Raspberry Pi Cam w/ extension cable – Obviously required if you want to do time-lapses or watch your print from afar
While you will need a case, you don’t have to buy one. If you do, however, you can grab this combo pack here.
You can find everything above on Amazon, but if you prefer to grab these in-person, Micro Center has everything listed but the fan. (Pro-tip– you don’t have to get a name brand SD card. Get Micro Center’s MicroSD card at check-out and save a few bucks! Their white labels will do just fine for our project.)
For the purposes of this tutorial, I’ll be using an Ender 3, and I’ll just refer to it generically as my printer.
If you don’t want to deal with the hassle of buying these items, CanaKit offers an all-in-one bundle to make your life easier (and includes a case!).
Flashing and Configuring OctoPi
On the OctoPrint webpage, there is an excellent and succinct write-up that uses the Raspberry Pi Imager software, so I won’t duplicate their work. However, I will clarify some terms and offer some troubleshooting for the non-techie reading.
What’s SSH? SSH is a connection protocol called “Secure Shell”. It basically lets you control a computer or piece of hardware remotely by letting you “remote into” it. If you get stuck at Step 5 to log into your Pi via SSH, here’s how you can do so.
- Open your computer’s terminal window.
- Windows: Press “WindowsKey + X” and open Windows PowerShell. (You don’t need the admin one.)
- Mac OS X: Press “Cmd + Space” and type in “Terminal”.
- Type in “ssh octopi.local“.
- You might have to key in “y” in response to accepting a new foreign RSA key. Don’t worry- this is just a cryptography check. (This also lets you know if someone is trying to impersonate your Pi too! Hopefully this doesn’t happen on your home network.)
- Enter in “pi” for the user name.
- Finally, enter “raspberry” for the password.
- You will be immediately asked to change your password to something else.
An example of Windows Command Prompt (cmd) connecting with OctoPrint via SSH for the first time
I tried to SSH with “octopi.local” and it couldn’t find my Raspberry Pi. How do I get my Raspberry Pi’s IP address? If you have a home internet router, chances are you have a configuration page or a app of sorts that can tell you who’s connected to your network. Steps may vary- so the most I can offer is to check there for your Raspberry Pi.
I don’t see my Pi connected at all! What gives? Did you enter in the wi-fi SSID (name) and password correctly when flashing your Pi’s SD card? Double check and try flashing again.
After you get inside OctoPi and set up your own username and password at “Access Control”, come back to this guide to set up your printer profile.
Connecting and configuring your printer
Your printer profile should be configured as follows for a plain old Ender 3.
- Name: “My Living Room Ender 3” or whatever you prefer
- I’d give this a unique name if you have more than one of the same printer.
- Model: “Creality Ender 3”
- Form Factor: Rectangular
Print bed & build volume
- Origin: Lower Left
- Width: 220
- Depth: 220
- Height: 250
Leave the Axes tab alone.
Don’t forget to set your nozzle size in the Hotend & Extruder tab though! (By default, it is 0.4 mm.)
At this point, connect your printer to to your Raspberry Pi. Then, go to the connection tab on the upper left-hand side, and click “Connect”! After a successful connection, the panel should collapse, but if you re-open it, it would look like so:
The Bed Visualizer plugin in use on OctoPrint
Vanilla OctoPrint is great, but there’s a variety of plugins you can install to make it even better. Here’s a few that I personally use:
- If you have a BLTouch, the “Bed Visualizer” (jneilliii) and “BLTouch Plugin” (jneilliii) plugins are basically required. These will help you level your bed and save your meshes.
- M73 Progress Plugin (Cesar Vandevelde) allows your printer’s display to receive progress updates from OctoPrint.
- Marlin EEPROM Editor (Charlie Powell) is a game-changing plugin that lets you quickly make updates to your printer’s settings (such as step and offset). It even allows you to backup and restore profiles you have created, too!
- Themify (Birk Johanssen) lets you customize your OctoPrint interface. I use it to set different colors so I don’t get confused which printer I’m interfacing with.
You can browse for plugins on the OctoPrint Plugin Repository to suit your needs.
To install plugins, click on the “Settings” icon on the upper navigation bar of OctoPrint, then click on “Plugin Manager.” Click on “Get More” to begin adding plugins. While you can browse through this menu, I recommend going to the repository and pasting in the URL into the “… from URL” text entry to make browsing and installation easier.
Congratulations! You’ve finished configuring your Raspberry Pi to run OctoPrint with your 3D printer. Now that we got the basics aside of uploading files and controlling your printer, you are now empowered to browse through your OctoPrint settings to fine tune to your needs. I recommend just browsing through the OctoPrint Plugin Repository to see if there’s any feature enhancements that tickle your fancy. If you haven’t yet, I’d print this case.