Changelog DSF 3.x RC - Duet3D/DuetSoftwareFramework GitHub Wiki

Version 3.5.3-rc.1 (changes since 3.5.2)

Compatible versions:

  • RepRapFirmware 3.5.3-rc.1
  • DuetWebControl 3.5.3-rc.1

API changes:

  • Deprecated patch creation methods in the main object model class
  • Deprecated current PatchObjectModel and SetPluginData calls in favour of new overload

Bug fixes:

  • Added workaround to address Chromium singleton lock in the launch script
  • Fixed potential deadlock when deleting variables
  • Cancelled codes could invalidate the last known file position (pausing via M226)
  • state.thisActive was not nullable

Version 3.5.2-rc.1 (changes since 3.5.1)

Compatible versions:

  • RepRapFirmware 3.5.2-rc.1
  • DuetWebControl 3.5.2-rc.1

Changed behaviour:

  • DCS program memory cannot be moved to swap

New features:

  • Added proxy support to custom HTTP endpoints

Bug fixes:

  • Plugin config files were incorrectly deleted on upgrade
  • Fixed M554 (set gateway/DNS server)
  • Fixed code param conversion error with expressions (code.TryGet* methods)
  • Some HTTP endpoints were using wrong JSON serializer options

Version 3.5.0-rc.4 (changes since 3.5.0-rc.3)

Compatible versions:

  • RepRapFirmware 3.5.0-rc.4
  • DuetWebControl 3.5.0-rc.4

API changes:

  • Introduced new code interceptor option to auto-expand expression parameters for filtered codes (defaults to true)
  • Added new sbcConfigFiles field to plugin manifest. These files are not overwritten on upgrade
  • Nested plugin data values can be queried in expressions (e.g. echo plugins.foobar.data.myObj.myProp)

Changed behaviour:

  • If a file is supposed to use two file readers, it must be forked via M606 S1
  • result variable is no longer maintained by DSF

New features:

  • Object model and M122 report if 64-bit DCS build is used
  • Added support for WiFi scanning (M587.1/M587.2)

Bug fixes:

  • DCS could not determine if a network adapter uses DHCP or a static IPv4 address
  • DPS no longer redirects stdio/stderr to DPS logger unless requested (systemd takes care of that anyway)
  • Fixed file handling with boards that only provide a single file channel
  • move.axes can be queried sequentially to support up to 30 configured axes
  • Changed documentation generator to include <see cref="..."> statements
  • 'g parameters were not correctly parsed
  • Added and tested new axis letters to code parser
  • Fixed type of move.segmentation.segmentsPerSec
  • If a connection intercepting a code sent a code to another channel, that code was incorrectly assigned the same macro file (if any)

Version 3.5.0-rc.3 (changes since 3.5.0-rc.2)

Compatible versions:

  • RepRapFirmware 3.5.0-rc.3
  • DuetWebControl 3.5.0-rc.3

New features:

  • Added support for NetworkManager so that network M-codes can be used on Debian Bookworm
  • M997 S2 can be used to update the system via apt update/unattended-upgrades on the latest DuetPi version (requires Debian Bookworm)
  • M997 S2 V"<version>" can be used to install another DSF version (includes automatic update to corresponding RRF version) on DuetPi
  • M997 S2 F"unstable" or M997 S2 F"stable" can be used to configure the package feed on DuetPi

Bug fixes:

  • M929 always required a log filename (affected only v3.5)
  • echo could be executed on inactive channels (e.g. File2)
  • M122 could throw an exception if there were remaining codes in the Executed code pipeline handler
  • Job file processor didn't synchronize OM right after the print started, potentially starting with an invalid inputs[].active state
  • Identical expression requests yielded the same result if requested on two different code channels
  • Fixed AppArmor webcam profile to support Spyglass

Version 3.5.0-rc.2 (changes since 3.5.0-rc.1)

Compatible versions:

  • RepRapFirmware 3.5.0-rc.2
  • DuetWebControl 3.5.0-rc.2

Changed behaviour:

  • If DCS fails to start, there is now a delay of 5 seconds between restart attempts
  • Index web file served from the web server is never cached and must be revalidated by the web browser on reload

New features:

  • Prepared Debian Bookworm support in the DWC launch script
  • WiFi country may now be reported and updated using DuetPiManagementPlugin
  • Added new SBC option for plugins to auto-restart them in case of unexpected crashes
  • Added new object model fields introduced by RepRapFirmware
  • When files are uploaded, they are uploaded to a ".part" file before they are moved into place

Bug fixes:

  • Even number values containing dots were interpreted as integers and not as floats
  • Fixed handling of non-ASCII characters in G-code parser
  • Better enforce maximum length of arguments for meta G-code keywords
  • Invalid enum values (in particular filament monitor types) could crash DCS
  • Fixed IPC command to evaluate custom expressions
  • Obsolete object model fields were not queried
  • When custom endpoints attempted to return a status code, DWS incorrectly tried to write a body response as well

Version 3.5.0-rc.1 (changes since 3.5.0-beta.4)

Compatible versions:

  • RepRapFirmware 3.5.0-rc1
  • DuetWebControl 3.5.0-rc1

New features:

  • Added fileread and single-char support using apostrophes like in RRF
  • Added auto flush option to code interceptor API. This is preferred to avoid race conditions under certain circumstances

Changed behaviour:

  • If a RRF plugin contains daemon.g, it is renamed to daemon.g.bak on upgrade
  • Moved userSessions root key to new sbc key
  • M552 S1 unblocks WiFi automatically using rfkill

Bug fixes:

  • Fixed M30 support
  • Fixed default DateTime format in the object model
  • WebSocket session key wasn't optional if no password set
  • Corrected type of direct display screen instances in the OM definition
  • Start-up errors were incorrectly set after booting
  • Adjusted AppArmor permissions for webcam access on Debian Bullseye
  • New DSF implementation of exists() function did not work with local/parameter variables

Version 3.4.6-rc.1

Compatible versions:

  • RepRapFirmware 3.4.6-rc1
  • DuetWebControl 3.4.6-rc1

Changed behaviour:

  • Message boxes are closed automatically upon SPI disconnect

New features:

  • Added missing InvalidateChannel call to API client
  • G2/G3 may be repeated as well like G0/G1 (FANUC-style)
  • Added new HTTP endpoint /machine/model as an alternative to /machine/status

Bug fixes:

  • Fixed reverse parsing when dealing with UTF8 CPs
  • Backported potential code parser fix from v3.5
  • SPI interface was not invalidated when the connection could be established again after a timeout
  • Fixed update.sh handling in system pkg installs
  • Added different stat implementation to make DSF work with newer kernels
  • Fixed M552 S1 P parameter (SSID)
  • Fixed Marlin emulation for meta expressions
  • Priority codes didn't prefer originally requested channel
  • Moved flush in job task to fix potential deadlock
  • Fixed removal of plugin www files
  • M550 did not update /etc/hosts
  • Fixed issue where missing DNS servers could crash DCS
  • Fixed plugin files field in the DuetPiManagementPlugin manifest
  • Fixed meta expression queries of plugin values

Version 3.4.2-rc3

Compatible versions:

  • RepRapFirmware 3.4.2-rc3
  • DuetWebControl 3.4.2-rc3

Upgrade notes:

  • Instead of the previous apt upgrade command it is now required to use apt dist-upgrade. Users of unattended-upgrade are not affected

New features:

  • Program from the duettools package now provide return codes and come with improved error handling

Bug fixes:

  • pip3 (Python 3) is now used for dependency installations instead of pip (Python 2.7)
  • Disposal of already closed code files could lead to unexpected exceptions

Version 3.4.2-rc2

Compatible versions:

  • RepRapFirmware 3.4.2-rc2
  • DuetWebControl 3.4.2-rc2

Changed behaviour:

  • Job task flushes pending codes one last time on completion to allow for user-generated G-codes

Bug fixes:

  • Codes from an intercepting connection were intercepted again by the same connection

Version 3.4.2-rc1

Compatible versions:

  • RepRapFirmware 3.4.2-rc1
  • DuetWebControl 3.4.2-rc1

New features:

  • Added new "tags" string array to plugin manifest

Bug fixes:

  • Made SPI error recovery on empty data more robust

Version 3.4.1-rc2

Compatible versions:

  • RepRapFirmware 3.4.1-rc2
  • DuetWebControl 3.4.1-rc2

New features:

  • Added OpenAPI definition for HTTP APIs

Changed behaviour:

  • Main object model class is no longer sealed

Bug fixes:

  • Improved logging in IPC backend to avoid unnecessary memory allocations
  • Rotary delta configurations set the wrong kinematics type in the object model
  • Added network.interfaces[].state in SBC mode
  • Sequential printing could provoke an exception in the layer update code (i.e. when the layer number went down)

Version 3.4.1-rc1

Compatible versions:

  • RepRapFirmware 3.4.1-rc1
  • DuetWebControl 3.4.1-rc1

Changed behaviour:

  • Improved SPI protocol error handling
  • DCS outputs an info message when the connection is lost because of too little CPU time

Bug fixes:

  • DSF user and AppArmor templates were missing permissions for webcam access on Debian Buster
  • Some object model values were not reactive in DuetAPI
  • Usage of the custom input shaper was not supported
  • M112 and M999 did not wait for potential firmware updates to finish first
  • Code files could be edited while they were being processed
  • DuetHttpClient did not set valid X-Session-Key when reconnecting to Duets in SBC mode

Version 3.4-rc2

Compatible versions:

  • RepRapFirmware 3.4-rc2
  • DuetWebControl 3.4-rc2

Upgrade notes:

  • Now DSF uses pip for management of third-party Python libraries. It is recommended to install it using sudo apt install python3-pip
  • The default group of I²C device nodes has been changed to gpio. If you are using I²C, make sure that applications accessing it are part of the gpio group (e.g. via gpasswd -a <user> gpio)
  • When you upgrade the DuetPiManagementPlugin package from v3.4-b6 or older, you will see an error message due to a missing dependency of the old package being upgraded (Error: An assembly specified in the application dependencies manifest (PluginManager.deps.json) was not found). You can ignore this message, it should be fixed as soon as v3.4-rc1 or newer is installed.

New features:

  • Implemented new GPIO permission (includes I2C and SPI devices) for third-party plugins
  • Added new array to plugin manifest allowing custom installation of Python libraries via pip (requires pip to be installed first)
  • Thumbnail data is now checked for valid base64 content before it is assigned

Bug fixes:

  • DWC launch script was not included in the source files
  • Even object heights were not correctly processed
  • duettools package was not fully updated before the update of duetpimanagementplugin started resulting in possible (yet harmless) error messages
  • M997 and M999 could show "Operation has been cancelled" rather than completing normally
  • When plugins were uninstalled and they were auto-started, they were not removed from the auto-start list
  • Update prompt did not display expansion board names
  • Absolute file paths without leading slash (e.g. M98 P"0:macros/foo.g" instead of M98 P"0:/macros/foo.g") were not correctly processed by DSF

Version 3.4-rc1

Compatible versions:

  • RepRapFirmware 3.4-rc1
  • DuetWebControl 3.4-rc1

New features:

  • Added thumbnail support

Changed behaviour:

  • DuetPiManagementPlugin uses relative file paths to support more Linux distros

Bug fixes:

  • Tool for custom HTTP endpoints did not replace query values when starting other programs
  • Packaged plugins (like duetpimanagementplugin) could be uninstalled using DWC
  • Removed redundant info message during upgrade from removal script

Version 3.3-rc3

Compatible versions:

  • RepRapFirmware 3.3-rc3
  • DuetWebControl 3.3-rc3

Bug fixes:

  • M0 called stop.g instead of cancel.g when a print was cancelled
  • DCS does no longer check SPI responses from IAP while upgrading the firmware to lower the risk of upgrade issues
  • Plugins were never started in non-SPI mode
  • DCS postinst script failed if the service was previously enabled but no Duet was attached at the time of the upgrade
  • When codes were intercepted, the SourceConnection property was not always populated
  • When DCS was configured to never terminate on reset, sometimes it failed to establish a connection again
  • Subscribe connection clients failed to clear global dictionary on reset
  • Fixed exists function in conditional G-code
  • When retrieving file info, DCS returned the simulated time instead of the slicer time
  • Fixed timing issue causing simulation times to be written incorrectly to G-code files

Version 3.3-rc2

Compatible versions:

  • RepRapFirmware 3.3-rc2
  • DuetWebControl 3.3-rc2

New features:

  • Added new Disconnected state to indicate when DSF/DWC is not connected to RRF
  • .deb packages can be installed over DWC if support for package management and root plugins is enabled (see plugins.json and config.json)

Changed behaviour:

  • Only G0 and G1 are repeated for Fanuc-style G-code to follow RRF implementation
  • M955 P-parameter is passed as a driver identifier like M569 P
  • Added extra fallbacks for main firmware files (directories.firmware -> 0:/firmware -> 0:/sys)

Version 3.3-rc1

Compatible versions:

  • RepRapFirmware 3.3-rc1
  • DuetWebControl 3.3-rc1

New features:

  • Added support for abbreviated G-codes in CNC and Laser mode (Fanuc and LaserWeb G-code style)
  • Added new code streaming mode to the API for easier Repetier and Octoprint integration
  • Implemented new command line utility to test and demonstrate the new code stream mode

Bug fixes:

  • Global variables in the OM were not cleared when DSF lost connection to RRF
  • When prints were paused during macros, under special cirumstances the macro was run again on resume

Version 3.2-rc2

Compatible files:

  • RepRapFirmware 3.2.0-rc2
  • DuetWebControl 3.2.0-rc2

Changed behaviour:

  • Increased SPI connection timeout from 2.5s to 4s (same value as in RRF)
  • Partial SPI transmissions may not take longer than 500ms (same value as in RRF)

Bug fixes:

  • M997 and M999 could generate "Operation has been cancelled" errors
  • When DCS terminated sockets of command connections were not correctly shut down
  • Object model write locks were not correctly disposed of when DCS terminated
  • Calling abort in macro files could cause an exception
  • M501 could freeze if no config-override.g was found
  • "Macro not found" warning messages were not output as part of code results

Version 3.2-rc1

Compatible files:

  • RepRapFirmware 3.2.0-rc1
  • DuetWebControl 3.2.0-rc1

Changed behaviour:

  • RRF downgrades from later protocol versions are now possible
  • CORS headers are only sent if explictly configured by M586 C-parameter
  • SPI transfers use CRC32 instead of CRC16 with new protocol version
  • DCS service notifies systemd when it is up and running
  • DCS terminates when a firmware update of the main board is complete (unless NoTerminateOnReset is set)
  • runonce.g is no longer processed if DCS starts in update-only mode (i.e. with -u parameter)
  • Third-party DSF plugins cannot be installed any more (TBD for v3.3)

Bug fixes:

  • Fixed incompatibilities when updating RRF from older firmware versions
  • LockMovementAndWaitForStandstill retransmissions were logged
  • Expressions were not automatically evaluated in the code processors
  • Internally processed codes were only logged if they resulted in a warning or error
  • DWS didn't send correct Cache-Control header which could result in DuetPi using outdated DWC versions
  • Sometimes the filament mapping was not fully restored if the NoTerminateOnReset option was enabled
  • M929 was not fully implemented for new log levels
⚠️ **GitHub.com Fallback** ⚠️