Changelog DSF 3.x RC - Duet3D/DuetSoftwareFramework GitHub Wiki
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
andSetPluginData
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
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
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)
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 viaapt 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"
orM997 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 theExecuted
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
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
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 todaemon.g.bak
on upgrade - Moved
userSessions
root key to newsbc
key -
M552 S1
unblocks WiFi automatically usingrfkill
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
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
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 useapt dist-upgrade
. Users ofunattended-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 ofpip
(Python 2.7) - Disposal of already closed code files could lead to unexpected exceptions
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
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
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)
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
andM999
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
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 usingsudo 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 thegpio
group (e.g. viagpasswd -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 ofM98 P"0:/macros/foo.g"
) were not correctly processed by DSF
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
Compatible versions:
- RepRapFirmware 3.3-rc3
- DuetWebControl 3.3-rc3
Bug fixes:
- M0 called
stop.g
instead ofcancel.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
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
)
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
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
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