A dumb question from a newbie


It seems so clear to everyone that OctoPrint most "natural" installation is on some embedded platform (Pi) rather than on a standard Windows / Linux machine.

Why is it so? I am probably missing something trivial...

Quoting from https://discourse.octoprint.org/t/setting-up-octoprint-on-windows/383

  • "While OctoPrint's intended use case is to be installed on low-powered embedded devices with Linux, it is platform agnostic and can also be installed under Windows instead of the more common option of installing it on something like a Pi."

  • "To save you some hassle, it might be easier to just get yourself a Raspberry Pi or similar and install OctoPrint through OctoPi on that :wink:"


People say this because the OctoPi folks are doing a great job making it really easy to install onto a pi by providing a working image you can flash onto an SD card. Also, RPIs are cheap, easy to come by, use low power, and are perfect for mounting/embedding in the printer or enclosure. All in all it's a convenience/cost thing.

That being said, I'm running Octoprint on my windows PC for development, and it works great! It renders timelapses almost instantly and there are never any bandwidth/processor/memory issues at all. You can also run it on a MAC!

Since Octoprint was developed to be pretty lean, you can get away with running it even on a Pi zero without issue, but it is possible to have performance issues depending on the exact situation, number of plugins, resolution of your file, etc... It's harder to run into problems on a Pi3, which seems to have more than enough power to run Octoprint + many plugins + high res gcode.

Are you wanting to install on a PC/Mac? There are plenty of tutorials out there, but let me know if you run into trouble :slight_smile:

1 Like

One of the biggest reasons I can think of, other than the $35 price tag for a Raspi3, is that it comes with GPIO pins which are under your programmatic control. This isn't the case for a recycled PC.

Another big reason would be the size. They're approximately the size of a credit card and that includes four cores.

Although I own a few Raspberry Pi Zero W's, I would not recommend a single-core computer for this.

1 Like

Many thanks for your answer FormerLurker!
Yet it is still remains a mystery to me…
The fact that “OctoPi folks are doing a great job making it really easy to install onto a pi” is cool.
But still, why in the first place Pi was the preferred way to go?
(Not a bit of criticism, just curious)

Regarding cost and size:
That’s cool again, but I take it everyone already has a PC, which is not necessarily the case with Pi.
Moreover, most people are more familiar with operating a Win PC then with operating RPi.

Regarding mounting it in the Printer, that's nice!
But if I am using a PC, I will just need a USB connection at the PC side connected to a serial port on the Printer's controller's side, is that right? (FTDI or something...)

Regarding the GPIO, (mentioned by OutsourcedGuru)
What is the use of GPIO by OctoPrint?
I thought all control is done by communicating with the FW. (??)
Again, might be missing something here...

The reason I am asking all this is that unfortunately I fall into the following categories: (-;

  1. A 3D printing newbie wanting to build his first printer.
  2. And also have a great control app for it.
  3. A Windows PC owner, with years of experience on Windows.
  4. Not (yet) a RPi owner, and zero experience with Pi.

So as you understood yourself, the first thing that came to my mind was installing OctoPrint on my PC.
I still didn't start, so had no chance running into trouble...
But I'll remember your generous offer in case I will!

Many thanks OutsourcedGuru for answering,

Please see my reply to FormerLurker, I am referring to the point you made regarding GPIO.

Thanks, (-:

I see the advantages using a Raspi on another side:
His only job is to communicate via USB with the printer, not more not less.

There are no confounders from your desktop OS at all, like "suspending usb-connection when the screensaver kicks in" - "resetting the usb connection if you connect another usb device" - "using wrong preferences in timing if the systemload is very high through other processes" - and so on.

Also you can use a very short USB-cable to connect to the printer. What is not so bad for a stable communication and there's no need placing the printer nearby your desktop PC.

And it's no need (specially for long lasting prints) to let your desktop PC powered on as long as the printer is working.

I'll attempt to address these points.

  1. When you say build, do you mean from a kit or from scratch? From scratch is a daunting task but many people have been successful. From a kit is much easier and you probably learn more that you would buying a printer pre-built, but the learning is just beginning!

  2. There are numerous slicers and control apps available. If building from a kit, the kit manufacturer may already have free software that they recommend for their printer. While OctoPrint is a great control app, it is not necessary if the printer is connected to the PC you are going to slice on (more later).

  3. I am also a Windows PC owner and when I got my 3D printer, the first problem I ran into was the best location for the printer was 35 feet from the PC. I ordered a USB extension cable to connect the printer and the PC and used that for a while slicing and printing from my PC. This is a workable environment and I'd suggest you try this first. I am glad I have the separation because the printer does "sing" while it prints, and I'm not a fan of its "music" selection!

  4. I got my own 3D printer because the local library Makerspace didn't have enough hours available for the project my son wanted. His project (pieces for a game) included six different color pieces that took 20+ hours each to print. After Microsoft installed updates and rebooted my PC ruining one of these 20+ hour prints, I decided to see what alternatives were available. This is when I found OctoPrint and Octopi. For around a $50 investment, I purchased the parts. A couple of hours after the parts arrived, I had a working "control app" for my 3D printer that could be controlled not only from a browser on my PC, but from my cell phone, my iPad, and the internet at large if I wanted to enable that functionality. I started a 20+ hour print immediately.

Being isolated from Microsoft's influence was liberating. I could use my PC to slice, game, learn, reboot, etc. all while my 3D printer sat in the next room happily printing away! I've had the 3D printer for 9 months and it has educated me quite a bit. I'm guessing I treated the OctoPi / OctoPrint as a "black box" for a good 6 months before I started learning more about Linux and Raspberry Pi in general. Still not an expert but with Google's help, I've been able to find solutions to any questions or issues that have come up.

I believe that a separate, dedicated, computer is best for connecting to a 3D printer. I could have used an old PC that was lying around but recent advances in small "System on a chip" computers made sense, and I'm pretty sure that it would have taken far longer that a couple of hours to get that old PC ready to print.

Did I mention that the OctoPi / OctoPrint is headless? I've never had to connect a keyboard, mouse, or monitor (there isn't even a GUI installed). I used a Raspberry Pi 3 with builtin wireless so its also never had an ethernet cable attached. It is truly a little black box about the size of a deck of playing cards sitting next to my printer. I have connected via SSH (using Putty on Windows) but its not needed for everyday printing.

There are other SoC systems available but Raspberry Pi was one of the first and I believe still one of the most popular. There is a large community of experts available to tap into. When someone bundled the OS, OctoPrint, etc. with simple installation instructions I was ready to go with the Pi.

I hope this answers your "why in the first place".

1 Like

@b-morgan OctoPrint doesn't have to be headless. I just posted a thread a few moments ago where I have it now talking to a small TFT screen on the front of the printer. It's sometimes useful for pausing/resuming/canceling a job, for example.

@shaharke I'm a big fan of these little IoT (Internet of Things) sort of single-board computers which have GPIO (general purpose input/output) pins. Using a programming language like JavaScript or Python, it's relatively easy to either turn ON/OFF these pins (if you want to control a relay, a motor or LEDs) or you can ask the pin if it's got voltage or not (like reading a sensor or an external switch).

So it's a way of hacking the printer, if you will. You could create a GCODE called "OCTO911" which powers on your coffee pot if you were into that. More practical examples would be to control fans on an enclosure which holds your printer, to turn on/off lights and in my case, to control a Nikon's shutter release for an external timelapse video.

@OutsourcedGuru I know it doesn't have to be headless, but comparing the OctoPi solution to a Windows PC solution, I believe you would be hard pressed to not have a keyboard, mouse, and monitor close by if not connected all the time. Some PCs won't even boot without a keyboard attached (most have a BIOS setting to ignore keyboard errors).

Funny you should mention OCTO911! This afternoon's project was adding a DC motor Pi Hat to control external cooling fans. I've defined OCTO0 through OCTO10 to go from off to 100% fan speed in 10% increments.

A little post-processing of my .gcode to change "M106 S" into "M106 S\nOCTOm" where m is n rounded to the nearest 10% and "M107" turns into "M107\nOCTO0".

@b-morgan Nicely done there and a clever hack with the regex replacement.

I did a Stars Wars—themed sound event series for my printer which uses R2D2 wav files, as associated with the OCTO8xx series (with the GCode System Commands plugin, obviously). So then, the printer can alert you when it needs your attention, for example.

Hi b-morgan, thanks a lot for your detailed answer!

Yap, I will be doing it from scratch… so wish me luck… (-;

If I try to summarize… (hope I got it right)

  1. Better reliability
    A standard Win PC is less “reliable” (e.g. auto updates) than a dedicated Embedded PC.

  2. More comfort
    E.g. Less cables needed, Printer can be located far from PC.
    PC free to be shutdown.

  3. Allows “extended control”
    E.g. using the GPIOs enables to do extra stuff, like turn off the Printer, control cooling fans.
    (Or, sync just the right temperature of your coffee AND start playing Star wars theme with print finish time…)

  4. Ease of configuration
    E.g. Easier to configure the server for access by a web client not on the same machine.

All in all, that does answer the question “why in the first place”
I feel I got to the inevitable point where one needs to get his hands dirty… (-;

Many thanks!!!
It was enlightening for me.