When I first started 3D Printing like many others I used OctoPrint and specifically the OctoPi distribution. It has a huge following, its easy to setup and a complete Rapsberry PI setup will run you under $80. For a power user like me this wasted so much time I could have been printing new things. In this Outside The Box I am going to look at why you shouldn't use a Raspberry PI for OctoPrint and why you should put the on the big boy (or girl) pants and install it on a traditional linux distro.
First I want to say that I absolutely love OctoPrint. What is not to love, its got a huge community, good code base and plugins galore. I think the software is wonderful for all levels of 3D printer enthusiasts. What I am not a fan of is trying to run this wonderful software on a RPI.
The RPI while I wonderful board is designed for lighter duty work. File servers, even media streaming is well within the performance range of this little dynamo. So it is expected that a linux OS plus a rather large piece of software will run a bit slow. Anyone who has installed a dozen plugins to OctoPrint and then rebooted it knows it takes quite a while to reload OctoPrint. $80 I dont expect lightning speed. Or should I?
Recently I swapped out my Raspberry PI for an aging Asus EeeBox EB1503. It's cost? Free given I had this lying around but I was able to find them on the internet for around $80. It has a Dual Core Hyperthreaded Atom D2550@1.8Ghz. While my RPI 3B+ has a quad core ARM it was not faster than this aging EeeBox. I would have replaced the RPI with any amd64 based architecture so I wont go into speed comparisons as if I had a faster box lying around I certainly would have used it.
Here are the reasons why I switched off the RPI
Better Linux package support and compatibility
Solid state drive vs fragile SD card
Stable power supply
Speed (Listed last because honestly nearly anything would have been better)
Multiple Webcams and Stable Power
I was unable to easily have multiple webcams running on the RPI. It required a powered hub and this was very sketchy for power requirements. I even used an approved hub from https://elinux.org/RPi_Powered_USB_Hubs . Still had power drops according to the PI. This was with a 3A power supply. I also ran into bandwidth issues on the USB 2.0 hub with multiple cams when I finally did get them running.
Better Linux package support
One word. ARM. Well thats technically an acronym but you get the idea. ARM has come a long way for linux support but the distro does lack some of the more mainstream packages. This limits my ability to run anything else on that box other than OctoPrint
Solid state drive vs fragile SD card
If you have not run into this issue yet backup your SD card now. I have run into this on multiple PI Distros and SD cards. Do a little google fu and you'll find many threads on the topic. PI does not take well to power loss. Furthermore its more difficult to run an fsck and correct the drive errors (if you can at all). Short of the default fsck at boot time its considerable effort to run a repair on your SD card. In the 20+ years I have used linux or unix I have never had that issue on a real hard drive/distro.
Speed was a factor in my switch but it was not the primary reason. Not that I have switched I love the ability to run other things on the box as well as fast start/stop times on OctoPrint.
The PI was built to be low cost. The new box was built to sell to consumers so there are a number of additional benefits. USB 3.0, 4GB of memory and after a $20 upgrade an SSD. Even an SD Card reader that is not in use as a hard drive.
Upgrading to Ubuntu
Upgrading is actually a fairly easy process if you are familiar with Linux. First start by going into octopi and doing a backup of your settings. OctoPrint has a good feature to back up your data. Start with that and throw your backup on a flash drive.
Next you'll want to setup your new linux box (I used Ubuntu). I created a "octo" user but you can make it "pi" if you prefer to keep the naming the same.
I was able to follow this how-to which will get it up and running quickly and easily. This is not for linux beginners. Make sure you consider the following when doing this.
Startup Scripts You'll need to setup a startup script in init.d to start/stop/restart octoprint
Compiling mjpg_streamer You'll need to download source and build this.
Webcam Setup You'll need to set this up, add the startup script to init.d as well. I will be creating a guide to do this separately for multiple cameras.
Once you complete your install, you should be able to restore your configuration. This installs all the modules as well so you don't have to worry about which modules you installed into OctoPrint.
Once you spend the time upgrading you'll be much happier using a traditional Linux distro. I am now running 3 web cams on my 3D Printer including an endoscopic cam. I will be posting an article soon that outlines adding multiple cams as well as setting them to up to stream on Twitch.
If you enjoyed this article please share it! I always like to hear your comments as well!