New release: 1.4.0

After 3 years on 1.3.x and over 3 months of release candidate testing, it’s finally time to release 1.4.0!

As every single release (and release candidate) of OctoPrint ever since early 2016 this was made possible only through your continued support of my work 💕

The full changelog is packed with new features, improvements and fixes of existing functionality. Some highlights:

  • 1.4.0 introduces a new granular permission system that allows you to fully customize which users (and - new! - user groups) are allowed to access which functionality. See the screenshots below for an idea of how all this looks visually. Special thanks to @Salandora for a lot of the legwork on this!
  • If you’ve followed me on OctoPrint On Air or paid some closer attention to the output of plugin manager or software updater in OctoPrint, you’ll have heard about the pending end of life of Python 2 in favor of the new version Python 3. OctoPrint so far only supported running under Python 2 - this has changed now with 1.4.0 which allows OctoPrint to run problem free under both Python 2 and 3!

    And to all the plugin authors among you, please also take note of the heads-up in the changelog and also quoted below. Huge thanks to everyone who helped in the adjustment effort needed to make this possible, especially @ByReaL, @razerraz, @smurfix & @tedder! Wouldn’t have been possible without y’all!

  • Additionally to the somewhat anachronistic MPEG2 format, OctoPrint now also supports to create timelapse recordings in H264. Special thanks to @koenkooi for this!
  • If the underlying render engine supports it there’ll be a progress bar for ongoing timelapse rendering now thanks to @ZachNo!
  • A bunch of new events and plugin hooks allow for even more possibilities in regards to customization through plugins.
  • The Software Updater can now be configured to track Github Commits for OctoPrint right from the UI. A new version check pypi_release allows checking the Python Package Index for new releases of a package, and this is also used to optionally allow to keep pip updated right from within OctoPrint itself instead of having to go through the command line for that. Note that this is disabled by default since I do not control pip updates and hence cannot guarantee trouble free updates.
  • The Plugin Manager now has a search function and some filters to make it easier to navigate through the list of installed plugins. See the screenshot below. Additionally it will now offer to delete plugin data from plugins about to be uninstalled, and also offers a general clean-up function for left-over plugin data.
  • After a lot of begging in that regard, the Software Updater and the Plugin Manager both can now be configured to ignore the throttle state of the Pi by setting ignore_throttled in config.yaml for either or both. Note that this setting is intentionally not exposed in the UI since too many people would use it to shoot themselves into the foot. Updating on a throttled system has caused corrupt installs in the past, same goes for new plugin installs, don’t say I didn’t warn you.
  • There have of course also been a bunch of fixes for bugs reported in older versions, like a fix of a potential dead lock when cancelling an SD print, overzealous filtering of history entries on the /printer/{tool|bed|chamber} API endpoints, G2 and G3 arcs being misinterpreted in the GCODE viewer and more.
  • … and more.

Due to the new Python 3 compatibility there’s a heads-up for plugin authors:

This release officially adds support to run OctoPrint under Python 3 instead of 2, which has become EOL as of January 1st 2020. However, most third party plugins probably do not yet support Python 3. In order to allow Plugin Authors to test and if necessary adjust their plugins first before OctoPrint tries to load them under Python 3, a new plugin property __plugin_pythoncompat__ has been introduced. Plugins should define the compatibly Python version via this property which OctoPrint will check on load and only proceed with loading the plugin under Python 3 if it signals compatibility.

Additionally, the Plugin Repository has been expanded to include a new field compatibility.python which signals Python compatibility on the listing as well so that OctoPrint’s Plugin Manager will only show such plugins from the repository as installable under Python 3 which are configured as such.

Please see this guide in the documentation on how to go about compatibility testing and how to modify existing plugins to work with OctoPrint when running under Python 3.

By default, OctoPrint will assume compatibility to Python 2 only.

You can find the full changelog and release notes as usual on Github.

Also see the Further Information and Links below for more information, where to find help and how to roll back.

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports and pull requests, especially balassy, ByReaL, cameroncros, CapnBry, cbxbiker61, dforsi, eyal0, FHeilmann, fieldOfView, jammi, justfalter, kantlivelong, kevans91, koenkooi, mkobler, noahsmartin, povlhp, razerraz, RyuzakiKK, Salandora, smurfix, tedder & ZachNo for their PRs!

And last but not least, another special Thank you! to everyone who reported back on the release candidates this time: @1n5aN1aC, @Andy-ABTec, @BerndJM, @bzed, @CapnBry, @ChrisHeerschap, @ciordia9, @CRCinAU, @Demigod001, @Deneteus, @devildant, @dragonflybog, @elfelton, @Farami, @fieldOfView, @FormerLurker, @gcurtis79, @gdombiak, @gege2b, @gferon, @jbjones27, @jim-thompson, @jneilliii, @JohnOFCII, @kazibole, @krpepe, @Lantoit, @loskexos, @louispires, @MatejSpindler, @mbelley, @MSeal, @NerdyProjects, @NovaViper, @OllisGit, @PlasmaSoftUK, @reloxx13, @rmoravcik, @santond, @schnello, @schumar, @sebaminguez & @willhoh.

If you are interested in some numbers, here’s some data extracted from the anonymous usage tracking for the six RCs that went before 1.4.0’s stable release:

  • 1.4.0rc1: 123 instances, 58h or 2d accumulative printing time
  • 1.4.0rc2: 152 instances, 347h or 14d accumulative printing time
  • 1.4.0rc3: 668 instances, 22200h or 2.5y accumulative printing time
  • 1.4.0rc4: 760 instances, 16000h or 1.8y accumulative printing time
  • 1.4.0rc5: 808 instances, 19400h or 2.2y accumulative printing time
  • 1.4.0rc6: 614 instances, 6570h or 0.75y accumulative printing time

Further Information

It may take up to 24h for your update notification to pop up, so don’t be alarmed if it doesn’t show up immediately after reading this. You can force the update however via Settings > Software Update > Advanced options > Force check for update.

If you get an error about “no suitable distribution” during update, please read this.

If you have any problems with your OctoPrint installation, please seek support on the community forum.


This is a companion discussion topic for the original entry at



Great job, thank you Gina and other people.

1 Like

Just updated, restarted and printing, so far so good, no update issues for me so far. :slight_smile: Thanks for the update.

1 Like

Just updated and it broke TouchUI in my pi attached to my mk3s. Now TouchUI won't load on the Pi (works fine through the web server though). Not happy. I knew I shouldn't have let it update... aargh.

1 Like

Congratz on such score Gina!

Thanks for the usegroups finally! :smiley:

1 Like

I don't know what TouchUI is doing there with regards to additional helper scripts on the OS level, but this might help you.

I'm also not happy that get blamed for the malfunctioning of helper scripts associated with third party plugins after not hearing anything about such an issue over the course of a 3 month+ release candidate testing phase and more than three years of development, but such is life I guess.


For anyone running into issues with TouchUI on a locally connected display, see here for an easy fix:

1 Like

Awesome release! Thanks again for all your hard work @foosel.

1 Like

So far, my update from 1.3.9 to 1.4.0 has been flawless! The UI even feels snappier on my Pi 2!

1 Like

Since updating to 1.4 I have this error when I try to upload gcode directly from prusa slicer.

Any ideas? I get this error, but my colleague does other changes.

Check if you have an API key configured.

1 Like

Huh...that was it. Either it wasn't working before, or it's now enabled by default. Thanks!

I've been behind on updates for a while due to the old version of pip and SetupTools, but finally made the leap to the latest version of everything! It's working great so far!

I was wondering if there's any good (non-destructive) ways to switch an existing OctoPrint installation over to using Python3 instead of Python2 (and back again, if needed)?

Version 1.4.0 can handle both versions. See first post:

Thanks for the reply, but I already knew that, but how exactly do I modify my Octoprint installation to actually use Python 3 instead of 2 is what I'm trying to figure out.

That's currently hidden in the developer documentation, since most plugins in the repository are still Python 2 only and the goal is to get plugin authors to update those first before having the majority of the user base switch and then complain about plugins no longer loading :wink:

I have a Robo R2 and I guess they enjoyed updating our systems to Version 1.4.0-rc6. However, I can't seem to figure out how to update to the new release of 1.4.0. Suggestions?

Usually you should be informed by OctoPrint itself about the new version. But you can try this:

Either click Check for update now or in the advanced options Force check for update.

You also may check the settings here: