HomeRaspberry PiRunning Octoprint on Raspberry Pi Zero 2 W

Running Octoprint on Raspberry Pi Zero 2 W

Testing Octorpint on Raspberry Pi Zero 2 W

From my benchmark and the official Octoprint account, we know that the recently released Raspberry Pi Zero 2 W is fast enough to run an Octoprint server for your 3D printer. It’s all great, but with limited I/O (read as a single USB port) I have more questions: Can I share the USB port with a webcam, 3D printer and a USB Ethernet adapter. Is WiFi fast enough to support a 1080p stream… is 512 RAM enough for all plugins I use… and so on.

(Benchy)marking Octorprint on Raspberry Pi Zero 2 W

Raspberry Pi Zero 2 W

Raspberry Pi Zero 2 W is an awesome and inexpensive upgrade to any Raspberry Pi Zero project. It’s quick enough for Octoprint and many other tasks, it has enough RAM (512MB) to support the processor, but with a single USB port options for using it as an Octoprint server are limited.

By default, you will be forced to use a Raspberry Pi Camera, that connects to the camera header on the board, as the only micro USB port will be used for connecting to a 3D printer. With Raspberry Pi Camera priced £25 and HQ version over £70 (with a lens), this could be a much more expensive option than picking up a Raspberry Pi 4 and using a spare webcam laying around. So I thought it would be a good idea to see how Octoprint on Raspberry Pi Zero 2 W fairs in different configurations and how stressed you should be about your prints.

Best configuration

All viable Octoprint configurations

For each scenario, I will run my Ender 3 printer, test the performance of the board by looking up stats in the resource manager, and run a timelapse. This should determine the best/most reliable configuration for running Octoprint on Raspberry Pi Zero 2 W.

I will also experiment with USB hubs and connecting Raspberry Pi Zero 2 W to the internet via USB-Ethernet adapter, as my benchmarks verified this to be the fastest way to access the server. I will monitor CPU performance and temperatures in the resource monitor and highlight the most important metrics.

Lastly, as the default, Octoprint stream settings are set to 480p, I will crank these up and see how things perform. Covering these scenarios should put your worry to rest.

Scenarios

  1. Octoprint on Raspberry Pi Zero 2 W (performance benchmark)
  2. Octoprint on Raspberry Pi Zero 2 W with Raspberry Pi Cameras (480p/1080p)
  3. Octoprint on Raspberry Pi Zero 2 W with USB hub an USB camera (480p/1080p)
  4. Octoprint on Raspberry Pi Zero 2 W with USB Ethernet and different cameras
  5. Octoprint on Raspberry Pi Zero 2 W – all in, printing, timelapsing

As I don’t need another 10 benchies on my shelf, I will run my test dry (without filament), identify the most taxing scenario and complete the print to prove that running Octoprint on Raspberry Pi Zero 2 W was a good idea indeed.

My Octoprint instance is the latest version (1.7.2) with the following plugin installed:

  • Bed Visualizer
  • MQTT
  • Octolapse
  • Resource Monitor
  • Spool Manger

It’s a mix of probably the most common plugins and it will add a bit of strain to the system’s performance. It will represent a typical Octoprint installation with some modifications.

1. Octoprint on Raspberry Pi Zero 2 W

Since the Raspberry Pi Zero 2 W is officially approved for the Octoprint, I know I shouldn’t have any problems running it directly. Since I left the webcam (and Pi Cameras) out of the equation, the Octoprint is sailing smoothly.

With the CPU use peaking at 25%, and over 190 MB of RAM available, I don’t expect any print issues caused by the Raspberry Pi board. Bear in mind, that I had the web interface open for my mock print.

Overall, things are looking promising with plenty of CPU and RAM to manage your prints and plugins. Let’s start adding stuff to the configuration

2. Octoprint on Raspberry Pi Zero 2 W with Raspberry Pi Cameras

Raspberry Pi Cameras and Raspberry Pi 2 Zero 2 W

One of the advantages of the Octoprint is the ability to enable webstream, to monitor your print. By default, web streams are enabled in 480p quality. Good enough to check on a print from time to time, but far from perfect if you are interested in Octolapses.

Interestingly, enabling 480p stream for both Raspberry Pi Cameras wasn’t that tasking. It had a minimal impact on the system especially when the stream tab was closed. For my benchmarks (which would otherwise look like the ones from the 1st scenario) I opened the URL stream in another tab, to keep the stream active.

Cranking the resolution in Octoprint config to 1080p, and things are getting toasty. If you are not actively streaming, the system is idling at around 6-10% but as soon as the stream is active, it takes a toll on the system:

RAM usage goes up by 20MB and the temperature rises by 10-15℃. Also, the network is significantly impacted. If you are going this route, you should probably consider a USB Ethernet adapter. I should also mention that the 1080p stream introduced 2-3 sec latency. I will check if this is present when I’m streaming the data over a wired connection.

3. Octoprint on Raspberry Pi Zero 2 W with USB camera & hub

Using Logi C920 webcam

If you don’t have a Raspberry Pi Cameras but you have a spare USB hub, and a webcam, you can make it work too. In theory USB 2.0 has more than enough bandwidth (480Mbps) to support the USB stream. In my tests, the performance of the USB camera (Logitech C920) was similar to what I observed while using Raspberry Pi cameras.

Performance graphs from both tests (480p, 1080p) matched what I already knew. You shouldn’t worry about using USB hubs to connect the printer and the webcam.

As I checked more than one USB camera, I observed a crash on the model that required a higher current to operate. Consider using a powered USB hub if your webcam has LED lights, as this can cause the camera to fail at best and at worst ruin your print. You can also modify the cable that connects to the 3D printer and remove the power rails (you can cover lanes 1 & 4 with tape) to save on the current draw.

4. Octoprint on Raspberry Pi Zero 2 W with USB camera, hub & Ethernet adapter

Going all USB

Up until now, almost everything was working great. The only thing that bothered me was a small stream delay in 1080p mode and occasional interface delay (print not affected) caused by the bandwidth used by the 1080p stream. It’s not optimal, and the best way to prevent it is to use a USB to Ethernet adapter. My benchmarks already confirmed this to be the fastest way to connect to the Raspberry Pi Zero 2W.

Using the USB Ethernet adapter increased the RAM usage by another 10MB, but with 170MB+ to spare, I had no problem with that. Especially, that I received a 1Gpps link in exchange.

Looking at the stats in this scenario, I have the impression that using a webcam was more friendly to the Raspberry Pi Zero 2 W than using the Raspberry PI HQ camera. While the resolution of the stream was the same, I’m not sure if my observations are unfounded, or higher quality stream from the Raspberry Pi HQ Camera resulted in a higher bitrate stream to be encoded. I’m also under the impression, that thanks to better bandwidth via Ethernet, the processor didn’t struggle as much.

5. Octoprint on Raspberry Pi Zero 2 W – all in, printing, timelapsing

The most demanding configuration

Now that we have the most demanding scenario identified, it’s time to run it for real. Simulations only show that we have a spare CPU, some RAM left and we are not melting the board in the process, but to prove the point, let’s run the bench print, make a timelapse out of it in the most taxing scenario.

As the Raspberry Pi HQ Camera in 1080p was probably the most taxing, I will make my final print with the timelapse enabled, using an Ethernet adapter and unpowered USB hub.

As you can clearly see spikes when timelapse pictures are taken. The CPU usage drops significantly when the stream isn’t actively viewed, but other than impressive looking charts, the board handles the process like a champ.

Running Octoprint on Raspberry Pi Zero 2 W is an excellent idea. The board is made for this purpose and anyone postponing this upgrade should jump the gun as soon as they have an opportunity.

More than one 3D printer?

Considering the CPU use and the RAM felt, I think the Raspberry Pi Zero 2 W would be capable of running 2 prints at the same time, even with cameras set to 1080p.

I’m not going to test it, as I know from my experience that running 2 webcams using a USB hub is never a trouble-free affair. If you are happy with a single stream, then the Raspberry Pi Zero 2 W should be able to serve 2 printers at the same time.

Tips

Now, that you are convinced, here are some suggestions to consider. Decide where and how you are going to mount your Raspberry Pi Zero 2 W, then make your life easier and pick a nice hub, or a custom micro USB to micro USB cable. You saved the money getting inexpensive board, so don’t cheap out now.

If you are tempted to hide the board inside a case, or motherboard enclosure, consider WiFi range or using an Ethernet adapter. Lastly, you can convert the Raspberry Pi Zero 2 W into a USBerry – a stick alike concept that gets power directly from the USB port.

Consider a heatsink to keep the board a little less toasty, especially when rendering time-lapses and a powered USB hub if your camera gives you headaches.

Handy upgrades

Hardware mods:

Coming relatively soon

RaspberryPi Zero 2 W came out just in time! I’m in the middle of the design process of the modular 3D printer enclosure that is not like the other (even though it looks like bog-standard IKEA Lack table driven design). If you are thinking of moving your printer away and sticking it in less favourable conditions or just want to save some space and noise, you probably want to follow me.

3D printer modular enclosure – 1st CAD draft

Final thoughts

As running Octoprint on Raspberry Pi Zero 2 W is proven a viable option hardware-wise, I expect a lot of makers to make the jump, especially that designating Raspberry Pi 4 to do the same wasn’t really cost-effective. I can’t wait to see clever enclosures designated to host Octoprint and attach the board to the 3D printer. If you have got any questions, or cool ideas, feel free to share them in this Reddit thread.

PayPal

Nothing says "Thank you" better than keeping my coffee jar topped up!

Patreon

Support me on Patreon and get an early access to tutorial files and videos.

image/svg+xml

Bitcoin (BTC)

Use this QR to keep me caffeinated with BTC: 1FwFqqh71mUTENcRe9q4s9AWFgoc8BA9ZU

M5Paper

Programable, ESP32 based awesome dev platform with 4.7 e-ink display by M5Stack

More HATs

client-image
client-image

Argon One M.2

Enclose Raspberry Pi 4 inside this great case with custom I/O, cooling and GPIO and M.2 SSD support

More cases on

client-image
client-image

Best Raspberry Pi Projects

How to use Raspberry PI as WOL (wake on lan) server

0
While you could wake up your PC from a mobile directly, having a dedicated server capable of doing so is the best solution. The reason is simple. You can hook up as many devices as you wish with a single endpoint. This is why Raspberry Pi is perfect for this.

Slow Internet Warning

0
From time to time my Internet grinds to a stop. Since Raspberry Pi 4 comes with a 1Gbps Ethernet, I decided to take advantage of it and create a reporting system in NodeRED that will monitor and report when the ISP is not keeping the contractual agreements. Works with Alexa, Google Home, Android and Windows 10.

How fast Raspberry Pi NAS is?

0
Let's see how fast Raspberry Pi NAS really is?

Argon18: Argon ONE SSD modification

0
Argon One case just got better - now you can boot it from USB without ruining the design thanks to Argon 18: Argon One SSD modification

HOW TO...

How to boot Raspberry Pi 5 from NVMe M.2 SSD

0
This is how you can boot your Raspberry PI 5 from NVMe in 10 min! Check out these easy instructions

It took me 2 months to boot CM4 from NVMe

0
Complete beginners guide to Compute Module 4 boot from NVMe.

Raspberry Pi Zero 2 W vs other Zero boards

0
It's time to test the Raspberry Pi Zero 2 W against other Raspberry Pi boards from Zero series: power, WiFi, temperature and core performance

C/C++ and MicroPython SDK for Raspberry Pi Pico on Windows

0
A guide to SDK toolchain for Raspberry Pi Pico and C/C++ , Micropython on Windows.

A comprehensive guide to Grafana & InfluxDB

0
How to use Grafana and InfluxDB on Raspberry Pi for IoT sensors in home automation