Controlling OctoPrint On The Go

Not too long ago I took the plunge into the world of OctoPrint by shoehorning a Raspberry Pi Zero into a PrintrBot Play, and I have to say, the results were quite impressive. OctoPrint allows you to run your 3D printer untethered from your computer, but without all the downsides of printing off of an SD card. Generally running off of a Raspberry Pi, OctoPrint serves up a very capable web interface that gives you full control over slicing and printing from essentially any device with a modern browser.

That’s all well and good if you’ve got your laptop with you, or you’re sitting at your desktop. But what if you’re out of the house? Or maybe out in the garage where you don’t have a computer setup? OctoPrint is still happily serving up status information and a control interface, you just don’t have a computer to access it. Luckily, there are options for just that scenario.

In this post we’re going to take a look at a couple of options for controlling and monitoring OctoPrint from your mobile device, which can help truly realize its potential. Personally I have an incredible amount of anxiety when leaving a 3D printer running a long job, and in the past I’ve found myself checking every 10 minutes or so to see if it was done. Now that I can just glance at my phone and see an ETA along with status information about the machine, it’s given me the confidence to run increasingly longer and complex prints.

TouchUI

Surely the most popular option for controlling OctoPrint from a mobile device is TouchUI by [Paul de Vries], which is available in the official OctoPrint plugin repository. TouchUI optimizes the standard OctoPrint web interface for smaller devices and, as the name suggests, touch screens. It isn’t just limited to smartphones and tablets either, it’s not unheard of to run it on a small TFT touch screen built directly into the printer. Similar to what PrintrBot has done with their new Simple Pro printer.

Using TouchUI is simple enough, just install the plugin through the OctoPrint interface and then open the printer’s IP or hostname into the browser on your mobile device. The server will automatically detect you aren’t on a desktop machine, and load the TouchUI interface.

Being designed for low-resolution touch screens, TouchUI has a fairly chunky layout. It also uses highly contrasting colors to help visibility on devices which may not have very good screens to begin with. The layout is very logical, and it has pretty much everything you need to keep tabs on the current print.

That being said, TouchUI does take the concept a bit to the extreme. As I mentioned previously, this interface is sometimes used on small (under three inch) displays with very low resolution. That’s a far cry from a current generation smartphone, which is likely to have at least a 720p display on even the most low end of devices. Accordingly, I found TouchUI to be a bit too simplistic; there’s just a lot of wasted space in the layout. It’s certainly usable, but doesn’t exactly impress.

Printoid

At the time of this writing, Printoid Pro is the highest rated OctoPrint client application on Android. This is a paid application, but a free version is also available. In fact, to really complicate things there are actually two paid versions: Pro and Premium. Without getting into the confusing state of paid smartphone software, it’s enough to say that the free version does pretty much everything you need, while the Pro version adds in some interesting customization and scripting for the OctoPrint server-side that could be useful if you’re looking for additional automation.

I really like the amount of information that Printoid manages to pack into a single screen. The other OctoPrint clients I’ve tried separate the different functions (file management, temperature control, extruder motion, etc) into their own tabs in the interface. Of course that’s all the rage right now in UI design, but it means you have to do a lot of horizontal swiping to see everything. But in the Printoid UI, almost every function of OctoPrint is compressed into the same view.

It’s a bit cramped, and admittedly might seem a bit overwhelming, but I think they’ve done an excellent job all things considered. I really like way Printoid expresses the time remaining on the print job, not only with a big countdown timer, but bar graphs to show progress through not only the physical operation but the GCode file that’s being parsed. The cost estimate is a nice touch too, on the off chance you want to know exactly how many pennies you’re burning up each time you print out a Benchy.

OctoRemote

The second highest rated OctoPrint client for Android is OctoRemote. Refreshingly, it’s completely free and does not have any ads, though there is a button to donate to the developer if you want. I was happy to see a prominent listing of the Apache-licensed libraries it uses in the menus, but as far as I can tell OctoRemote itself is not open source.

Interface wise, OctoRemote is basically a refined version of TouchUI. It fully embraces the modern “Material Design” that Google is so obsessed with in the latest versions of Android, which gives it a very “native” look compared to other clients. There’s a considerable amount of horizontal swiping required to perform tasks, which can be annoying. For example, if you wanted to heat up the extruder and push out some filament (I.E. for changing filament colors), you would need to swipe between three separate tabs.

That said, I do like how faithfully this reproduces the functionality of stock OctoPrint. The general layout and options are nearly identical to those in the OctoPrint web interface, so it’s a very easy transition if you’ve become used to expecting certain options to be under particular menus and that sort of thing.

Probably my favorite feature of OctoRemote is the big “Upload” button which you use to push files to the printer. The other clients of course feature a similar function, but for whatever reason they downplay it considerably. The whole point of OctoPrint is to be able to push jobs to your printer over the network, so it seems only logical that it should be front and center in the user interface.

Final Thoughts

Personally, I’ve become quite fond of Printoid. The interface might look a bit like the control panel for a spaceship compared to the more minimalist approach used in other clients, but I appreciate having everything immediately accessible. But OctoRemote does strike a very compelling balance between the minimalism and functionality if Printoid throws a bit too much at you.

That said, TouchUI is still an excellent option if you don’t want to install a native application. While its interface is perhaps not perfectly suited to modern smartphones, it absolutely gets the job done. Installing it just takes a few clicks in the OctoPrint settings, and its large user base means there’s plenty of community support.

There are quite a few other OctoPrint clients for Android, and at least a couple for iOS if you’re into that sort of thing. The goal here wasn’t to be an exhaustive test of all the available options, but to simply highlight some of the most popular ones in use right now. Of course, we’d be interested in hearing what the Good Readers of Hackaday are using in the comments below.

33 thoughts on “Controlling OctoPrint On The Go

  1. “That’s all well and good if you’ve got your laptop with you, or you’re sitting at your desktop. But what if you’re out of the house? Or maybe out in the garage where you don’t have a computer setup?”

    Is it wise to run a 3D printer unattended?

      1. There is another type of app that would go well with this article….

        Obviously going so far away that your only recourse is to call the fire department is dumb. Having a camera though is not. While actually leaving the premises during a print is an awful idea going to another room to do something else or even going outside to do yardwork should be ok. Having a camera means you don’t have to keep coming back every so many minutes to check on it.

        And… I didn’t see it mentioned here but Octoprint does support a streaming camera. It can support the standard Raspi camera or any camera that Linux supports on the USB port or… you can just configure it with the url of an ip camera and it will embed the feed from it.

        Which is where that other kind of app comes in.. maybe you don’t have a camera lying around already to use with Octoprint. You probably have old smartphones though. You can use an old smartphone plus any one of a number of apps that turn it into an ip camera!

        Back in the days when Makerbot was our friend, Cupcake was the pinacle of 3d printing my kid was still a baby. I used to use an old android phone plus an ip webcam app as a baby monitor. At the time that’s the main use they were marketed for. When I recently decided I needed a camera for my printer I decided to try that again. This time the app that I found… guess what they used for their example image on the play store… they showed it monitoring a 3d printer.

        I’ll probably eventually get a raspi camera to use with Octoprint so that I am not wasting electricity running a whole cellphone just for the camera and also so that I can use one of the printable lightbar/camera mount designs I find on the internet. But… for now, this works great!

      2. Mount a commercial type fire alarm with a latching NC relay that cuts power to the hotels if it senses smoke. Less than $50. Combined with an enclosure and maybe an automatic fire extinguisher, I wouldn’t worry too much.

    1. How far is your garage from your house? How long does it take for you to run from there to where your printer is? Also, out of the house could just mean your in your own backyard.

      I would agree that it is unwise to hop in your car and drive away if there is nobody else present to babysit your printer.

    2. I use octoremote and have a vpn setup on my router to connect from phone when not home. I also have extra precautions … like a thermal fuse on the bed and extra thermal couple on hot end that controls an external power relay

    1. octoprint can be set up for credentialed login but it would be best to use a chrome remote desktop to a vm so you dont have to open any ports, its probably not very secure, so definitely would want to rely on non port forwarding access methods

    2. The default install (without opening ports) only opens the printer to your local network, I believe. So you can’t check the status from *anywhere*, but you can check from “anywhere within range of your wifi network”. The printer isn’t visible to the Internet-at-large, and you can still check on the print without leaving your couch. As mentioned already, you can additionally set it up with credentialed login, so you can only do control functions (uploading files, turning on heaters, starting prints, etc.) if you’re logged in but can check the status of a print without doing so. It’s a really nice add-on to most printers!

      I especially like the webcam viewer (included in the main interface as well as TouchUI). It can be handy for seeing problems such as spaghetti prints or air prints, where the status screen is still chooching but things have gone wrong.

    3. Umm.. most people keep their home devices behind a NAT these days. Presumably the phone is still on the same wifi network and only connecting to Octoprint via a LAN ip.

      If you want to give your Octoprint it’s own internet accessible ip address then yes you should probably be asking these questions plus taking extra precautions. But.. why would you do that? The only advantage would be to allow printing when you are not home. Does anyone really have a 3d printer that is reliable enough for that to be a safe idea?

    4. For people that do not want to (or know how to) set up their own VPNs or remote desktops, they can use the AstroPrint plugin for OctoPrint. AstroPrint will maintain secure websocket connections between their OctoPrint instance and other AstroPrint software products such as the Mobile App and Web Portal.
      (Disclosure: I’m a founder of AstroPrint)

      1. I second this, I’ve been using Astroprint since it was offered on my Octoprint and it is an easy to use and great way for me to keep an eye on my long prints when I’m not at home. For the nay sayers above, I’ve got my printer installed on a Smartthings wall switch and a ZWave smoke detector right above it. A little webCoRE scripting will automatically kill the power to that socket if any of the 9 linked ZWave smoke detectors go off in the house. My next project is to install a gallon bucket of water on a pendulum held precariously in place by some dry twine which is tied to the top of my printer. This way if there are flames and no smoke the twine will snap dumping the water on the printer. Well it’s either that or rig a quick release valve on my 10lb CO2 tank in the room filling the room with CO2.

        -Steve

        PS for those people to uptight to recognize the H2O and CO2 parts were a little satire. The original reason for the post though certainly stands Astroprint rocks (allow me to send some GCODE commands and it would be rocks x2)

  2. I use a VPN to my house for my iphone to view my printer via Octoclient and white listed my work IP so I dont need to VPN in. I’ve done 38 hour prints, leaving unmonitored is a must and pretty common int he printer groups.

  3. I have the same problem leaving my printer all by its self on any print.
    So what I did was get a 5.8ghz video transmitter and camera. And put a receiver on my surveillance system.
    Now I can keep a eye on it almost anywhere.
    Buy the way my printer is on a microwave cart with a box and ventilation on it. And can be moved to any room for my family to use.

  4. Oh, I just did that today… I used the same procedure from here: https://hackaday.io/project/12985-multisite-homeofficehackerspace-automation (also my project)

    Step 1. Get Octoprint and mjpeg server set up.
    Step 2. Install Tor on Octoprint server. Set up Hidden Service forwarding port 5000 to onion:80 , and 8080 to onion:81 .
    Step 3. Install Orbot and OctoRemote on Android.
    Step 4. In Orbot, add OctoRemote as “Tor enabled apps”
    Step 5. In OctoRemote, set up the server as http://[hash].onion:80 and webcam as http://[hash].onion:81/?action=stream

    And there you go. The only thing you’re missing is a slicer on Android. If you trust curaengine with Octoprint, you can upload STL’s directly.

  5. I let my home automation server (OpenHAB) pick up the status from OctoPrint, and in that way, I can check its status from anywhere in the world, using myopenhab, as long as I have internet access.

  6. The one problem I have with Octoprint is that it’s a computer with a real filesystem. So, if you want to unplug your printer and move it somewhere you need to make sure to properly shut down the Raspberry Pi. I would rather my printer be more appliance like, similar to a lightbulb. If you want it off just flick the switch off. It’s a minor inconvenience to me that I would have to ssh in and shutdown the Raspi first. It’s pretty much a showstopper if I wanted to ask someone else in my household to do it.

    I have seen that some people set their Octopi to mount their filesystems read-only. I assume they are losing some features by doing that though right? At the very least they are losing the ability to upload files for long term storage. Also this means you have an extra step of remounting the filesystem any time you want to run updates.

    I have been interested in some sort of simple battery circuit for the Pi. Like a UPS i want it to use wall power (through my printer’s power supply) to run the pi and keep a battery topped off when it is available. When the power cuts out it should keep the pi going just long enough for it to properly power itself down. At this point of course the printer is without power so there is no reason that the pi needs to remain on any longer than that.

    It seems like this should be achievable with a fairly simple circuit. I’ve Google it but mostly I just found pre-assembled off the shelf products that cost more than I want to pay because they are equipped to keep the Pi running for long periods of time.

    I would also like to use this same circuit eventually in a Raspi powered car radio. I’m not so worried about what happens when I simply turn the ignition off because I can use the always-on wire for that but I don’t want to have to remember to shut down the Raspi any time I disconnect the battery as part of doing maintenance.

    1. I’ve had no issues with unplugging or resetting the PI. Yes it’s a linux system, but it’s pretty tolerant and self-healing. I suspect it is doing a fsck on boot and clearing out bad data, then continuing on like any standard linux system.
      Probably have over a dozen boots, no failures on my octoprint. I don’t think twice about unplugging it or resetting it.

    2. My first thought here is I’ve unplugged my printer easily 50 times from my Pi in the past 6 months since I started using Octoprint while the RPi was running (not printing mind you) and it doesn’t even blink at it. It will register a popup that there was a communication error and when it plugs back in it will auto reconnect for me. Never been a problem really.

      If your looking to reboot or shutdown the Pi there is a plugin you can install for it that will power down the RPi when a print finishes. I use this all the time when I’m doing a long print that goes into the night or all night and into the next work day while I’m gone. I then either turn the ZWave wall switch via Smartthings manually or programatically after a certain amount of time.

      Even the times (more than I like actually) when I forgot to or turned off the switch before Octoprint shutdown it always seems to bounce right back like nothing happened. If your interested in setting up a battery one the pie it’s not that hard to do there are a number of options. For example: https://www.amazon.com/Lithium-Battery-Expansion-Raspberry-Quimat/dp/B06VVMHPFR/ref=sr_1_5?s=electronics&ie=UTF8&qid=1520625535&sr=1-5&keywords=raspberry+pi+battery&dpID=51d-cGDdo1L&preST=_SY300_QL70_&dpSrc=srch this is a lithium battery pack, a charging board and a case for like $18. I don’t know anything about the kit it was just the first result on Amazon. You should be able to put together an inexpensive battery kit with charging board fairly cheap.

    1. I’m glad you like AstroPrint, Jay!
      One other thing, AstroPrint now has an OctoPrint plugin. So, OctoPrint users can also use the AstroPrint Mobile App and/or Web Portal to control their machines. I’m not sure how that got left out of this article. AstroPrint mobile is one of the top apps listed in both app stores for 3D Printing…
      Anyways, I’m glad you like it!
      ~Drew
      CEO, AstroPrint

  7. Talking about fire’s that is why GOD made a fire extinguisher…..
    Just saying…. guys,.. I have one in my workshop….. I don’t have a printer yet but I’m saving for one….

  8. I keep seeing all of these “never leave home with your printer running” chicken littles. Yes. I know that printers CAN catch on fire. I know that the sky CAN fall. But… for all of you guys and gals out there saying to never leave your printer unattended, please… answer me this: how do you ever run any print that last for more than a couple of hours? And we all know that there are MANY prints that require 12, 24, 48, 72 hours or more. Are you seriously going to tell the world that when you run a print like this, you just do not leave the house until it’s done? Listen… any number of things can go wrong with anything at any time, but as long as you have taken basic precautions, you should be fine…

  9. “TOUCHUI” — I initially parsed that as if it were Japanese “Toh OOH Choo Ee” ..

    Seems like it would have potential as a title (and possibly refrain) for a BabyMetal song.

    Oss!

Leave a Reply to megooCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.