Skip to content

Update from 2019-10-24: Heads-up if you have an MMU2

Some people have run into weird reset and loop issues with their MMU2 and OctoPrint 1.3.12. The cause of this - as far as the currently available information suggests - are simply misconfigured printer profiles inside OctoPrint.

If you have a multi-extruder setup like the MMU2, make sure your printer profile has configured all available extruders. In the case of the MMU2, you should have five extruders and a shared nozzle configured in OctoPrint. For an MMU it's four extruders and a shared nozzle.

Failure to properly setup your printer profile will cause issues!

Please take a look at this post for more details & a screenshot.

Heads-up if you are updating from OctoPrint < 1.3.6

Due to new versions of third party dependencies, this and future versions of OctoPrint will no longer update via the update script/python install that used to be OctoPrint's standard update mechanism in versions prior to 1.3.6, at least not in older Python environments as they can be found on e.g. OctoPi 0.14.

If you haven't yet updated from such a version (which you really should have done a long time ago) you'll need to update manually via command line.

Heads-up if you are still running OctoPi 0.14

As it is becoming increasingly complicated to make OctoPrint and its third party dependencies run in the by now ancient Python environment found on OctoPi 0.14, 1.3.12 will no longer allow to be updated from within OctoPrint on OctoPi 0.14 or a similarly outdated Python environment.

Either backup and migrate to a new version of OctoPi or run future updates manually.

See here for more information on the matter.


  • #1239 & #3227 - Add command line interface for user management. Via octoprint user [list|add|remove|activate|deactivate|password] it is now possible to list, add, remove, activate & deactivate users or change their passwords right from the command line instead of just through the web interface. That should also make password recovery easier and as simple as octoprint user password username.
  • #2896 - Add confirmation dialog when removing a plugin (see also #3179).
  • #3075 - Calculate filament usage for all extruders in M605 duplicate/mirror setup (see also #3181).
  • #3101 - Support tags on GCODE script hook and add plugin:<plugin id> to script parts from plugins.
  • #2669 - Add option for disabling filters on search results in the file list (see also #3126).
  • #3131 - Allow subscribing to multiple events in one yaml based event subscription.
  • #3133 - Adjust wording in case of file upload errors to also hint at permission problems.
  • #3134 - Add support for logging in (and creating users) through REMOTE_USER header supplied by a reverse proxy in front of OctoPrint.
  • #3147 - Forcelogin: Add autofocus to the username
  • #3161 - Plugin manager: Reduce height of plugin list.
  • #3162 - Make closing behaviour of dialogs adjustable: default behaviour is to close on click outside of dialog, this can now be disabled.
  • #3167 - Make it configurable whether to perform the parity double open workaround on serial needed for (some?) debian based systems. Solves issues for FreeBSD systems & Klipper.
  • #3180 - Add button to terminal tab to clear the log.
  • #3188 - Suppress scary WebSocketClosedError messages in the log simply caused by closing the browser.
  • #3171 & #3204 - Action command prompts: Add close button to prompts triggered through action commands by the firmware, in case the firmware forgets to add action buttons.
  • #3174 - Include upload date & time in State panel to make file refreshs clearer.
  • #3191 - Docs: Clarify that a target temperature value of 0 turns heaters off.
  • #3198 - Clarify execution order of GCODE scripts.
  • #3199 - Hardening against corrupt print recovery data.
  • #3203 - Add documentation for printTimeLeftOrigin field.
  • #3206 - Better resilience against garbage on the line on initial connect to the printer due to more handshake attempts.
  • #3207 - Try to guess the mimetype if there is none during the webcam stream test.
  • #3218 - Small refactoring in comm layer
  • #3225 - Quote arguments in pip install to avoid issues with shells other than bash.
  • #3249 & #3263 - Printer profile events are now properly triggered.
  • #3250 - Add optional confirmation dialog for starting a print.
  • #3271 - Extend safemode to also disable third party language packs
  • Make emergency codes configurable.
  • Detect endless resend requests of the same line. If the printer keeps requesting the same line over and over again, something is either seriously wrong with the line or with the connection. In any case, log an error and disconnect.
  • Send M112 on disconnect due to an error (configurable) to try to disable heaters and such.
  • More type annotations throughout the code.
  • Re-add missing minHeight support to modals.
  • Ensure line breaks on copy of terminal contents.
  • Error Tracking: Further limit events that go out, this time by fqcn of callback methods, if needed.
  • GCODE viewer: Increase logging.
  • Plugin Manager: Prevent plugin installs while throttled due to undervoltage or overheating.
  • Software Update: Consider an empty restart command an unset one.
  • Software Update: Prevent updates while throttled due to undervoltage or overheating.
  • Tracking: Track plugins & versions once every 24h. This is a feature requested repeatedly by plugin developers and will also allow the compilation of something like a Top-10-list.
  • Tracking: Track slicing events

Bug fixes

  • #3022 & #3236 - Ignore NaN and Inf values in GCODE analysis result, don't allow NaN on APIs.
  • #3095 - Fix a small error in the frontend through bootstrap update.
  • #3096 - Fix handling of Empty exception in send loop.
  • #3104 - M112 and other emergency codes must always jump the internal command queue even when printing and be sent immediately.
  • #3107 - Prevent issues if hash field on file metadata is unset.
  • #3109 - Fix some unicode issues on the API.
  • #3114 - Virtual printer: Fix handling of closed connection.
  • #3137 - Do not invert axes in GCODE viewer. The axis inversion is only relevant to the control panel (depends on how the print head is positioned), NOT the rendition of the GCODE.
  • #3142 - Only do autologin if not actively logged out.
  • #3143 - Fix layers vanishing from GCODE viewer on settings access.
  • #3153 - Fix wrong variable name in an exception handler.
  • #3154 - Strip interface tags from IPv6 addresses in local address check.
  • #3155 - Backup: Make sure exclude is always a list.
  • #3156 - Tracking: Fix error if tracked time is None.
  • #3157 - Plugin manager: Better handling of unexpected repository format (e.g. in case of a misconfigured repository URL).
  • #3166 & #3211 - Fix caching behaviour in case of active wizards.
  • #3171 - Action command prompts: Remove prompts on disconnect from the printer.
  • #3176 - Forcelogin: Don't touch static endpoints.
  • #3177 - Always report all tools in shared nozzle setups to avoid inconsistencies.
  • #3190 - Plugin Manager: Refresh the repository list on cache timeout, not just on server restart and/or connectivity events.
  • #3194 & #3196 - Fix typo causing a KeyError on starting a second consecutive print of a file (see also #3195).
  • #3217 - Docs: Fix typo in chambers documentation
  • #3220 - Fix _long_running_command flag for M191 on comm layer.
  • #3224 - Fix file selection not being cleared in the frontend on printer disconnect.
  • #3247 - Fix scoping issue in JavaScript for custom commands with javascript/enabled fields.
  • #3253 - Software Update: Fix error in python version detection (see also #3256).
  • #3257 - Appkeys: Ignore empty username on request endpoint to avoid later issues.
  • #3270 - Properly escape translation strings in single/double quoted template locations
  • #3272 (regression) - GCODE viewer: Fix out-of-sync & layer slider issue
  • #3273 (regression) - Fix minimum pip version for OctoPi 0.15.1, which turns out is 9.0.3, not 10.0.1 as on OctoPi 0.15.0 due to a bug related version pin back then when.
  • #3277 (regression) - GCODE viewer: Fix huge memory consumption due to misplaced deep clone.
  • #3282 (regression) - Don't trigger M112 routine for firmware errors on a connection error when no connection has even been established yet. * Fix broken filtering of valid tools
  • Properly clear out user data from user management dialogs
  • Appkeys: Fix handling of empty request body, should return 400 Bad Request instead of 500 Internal Server Error.
  • Printer safety: Anycubic 1.1.2 is already safe (off by one error, used to only detect >1.1.2 instead of >=1.1.2)

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release and provided full, analyzable bug reports and pull requests, especially @aliaksei135, @AndyQ, @dmweis, @esver, @gdombiak, @jackwilsdon, @JanneMantyharju, @kevans91, @pusewicz, @rfinnie and @tduehr for their PRs.

More information

Assets 2
You can’t perform that action at this time.