Releases: Duet3D/DuetSoftwareFramework
Releases · Duet3D/DuetSoftwareFramework
Version 3.4-rc2
Compatible versions:
- RepRapFirmware 3.4-rc2
- DuetWebControl 3.4-rc2
Upgrade notes:
- 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 I2C device nodes is now
gpio
. If you are using I2C, make sure that applications accessing it are part of the gpio group (e.g. viagpasswd -a <user> gpio
)
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
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.4-b7
Compatible versions:
- DuetSoftwareFramework 3.4-b7
- RepRapFirmware 3.4-b7
New features:
- Added new bottom navigation menu for mobile devices and made margins smaller depending on the screen size
- Added back "Install Updates" button for standalone mode users
- Moved plugin tabs to a single page and added new "Install Plugin" button to "External Plugins" page
- Selected nodes on the object model browser can be copied using a new button
- Added new
npm run build-plugin
script allowing users to build external plugins easily (see also the new plugin guide) - Added Japanese translations (thanks nyarurato)
Changed behaviour:
- Reduced height of navigation menu items in desktop mode
Bug fix:
- Webcams could not have an indefinite update intervals (0ms) which could conflict with MJPG streams
- Layer stats were not properly regenerated after reconnecting to a Duet in standalone mode
Version 3.4-b6
New features:
- Number of glitches on the TransferReady pin are now recorded for diagnostics
- DCS uses proper return codes and saves the error reason on startup to
/run/dsf/dcs.err
- DWS forwards the DCS start error to DWC if it is available
Changed behaviour:
- Plugin service notifies systemd about start after plugin manifests are loaded
- Default UNIX socket for DSF now points to
/run/dsf/dcs.sock
rather than to/var/run/dsf/dcs.sock
(/var/run
is usually symlinked to/run
) - Removed special heightmap code from DSF so that RRF can now read and write heightmap files on its own
Bug fixes:
- DCS could complain about plugin services if they terminated during shutdown
- systemd services for DuetPluginService did not wait for processes to start
- Some expression values like DateTime, ULong, and Null were not supported by DSF
- Web server took a few seconds to stop if a WebSocket client was connected
- Noise on the TfrRdy pin could make DCS get out of sync with RRF after updating the firmware (only in
NoTerminateOnReset
mode) - DCS could send invalid collection values in patch mode
- DuetHttpClient did not reconnect under certain circumstances
- G-code filenames starting with digits (but not paths like
0:/gcodes/
) could cause exceptions - If the first or last G1 Z parameter were an expression, the file info may not be parsed
Version 3.4-b5
Changed behaviour:
config-override.g
is now written by RepRapFirmware- Removed unused
return
command from API keywords - Removed deprecated
CodeResult
class from API - Added new
-c
parameter to ModelObserver to confirm receipt of data - Added new
Keyword
code type to DSF API
Bug fixes:
- Automatic firmware update during unattended updates did not work
- Automatic expansion board updates did not wait for completion
- Fixed problem where subscribers received only cached model patches
- Under certain circumstances macro files could be stopped too early (thanks Andy)
- Pausing job files was not working if RRF reported no file position
boards[].mcuTemp
,boards[].v12
, andboards[].vIn
were not nullable- Default firmware directory in the object model was wrong
- JSON responses in subscriber patch mode were not necessarily live
- M505 did not lock the movement before changing the sys directory
- Local variables were not deleted when their scope was released
- M105 did not output a NL at the end of Marlin-compatible replies
Version 3.4-b4
New features:
- Added HTTP password protection (M551) using new
/machine/connect
and/machine/disconnect
endpoints - Implemented new class library for remote management of Duets in standalone or SBC mode
- Added new HTTP endpoint /machine/noop to keep HTTP sessions alive on demand
- Added support for pausable macro files (see
M98 R1
)
Changed behaviour:
- Filament management is now done exclusively by RRF
- List of plugins to start on boot is only written when individual plugins are started or stopped
Bug fixes:
- Pausing near the very end of a job file did not work
- Single quotes in string parameters to convert letters to lower-case were not supported
- Keyword results were not properly logged (like from
echo
orabort
) - Under certain conditions messages in conditional blocks were not output instantly
- M997 did not accept the P-parameter to override a firmware filename
- Some log calls did not check for
null
messages
Version 3.4-b3
New features:
- Implemented file redirections of the
echo
command (see here) - Added support for new
InvalidateChannel
command allowing plugins to cancel already queued codes and files
Bug fixes:
- Resolved race condition for M0/M1 which could cause stop.g to be executed instead of cancel.g
- Fixed an exception that could occur when codes were cancelled and their result was combined
- Under certain conditions paused prints could not be cancelled properly
Version 3.4-b2
New features:
- Plugin manager can now be used to reload specific plugin manifests
- Plugin manager may be used to query the installation/runtime status of plugins
- Added new
cancelling
item tostate.status
enum - Subscribers and code stream clients can define what messages they want to receive
- Added support for array expressions
- DuetPiManagementPlugin now supports (un-)mounting of devices via
M21
/M22
Changed behaviour:
- Web server only sends messages with HTTP target to web clients
Bug fixes:
- When RRF reset, DCS could terminate when trying to clear the global variables
- Expression parameters were incorrectly serialized
- Certain UTF-8 strings could be truncated when sent to RRF
- Fixed race condition when attempting to save updated filament mapping
GetFileInfo
requests attempted to parse non-GCode files- M-codes could have G-parameters, now only T-parameters are permitted
- Functions with more than one parameter were not working in
echo
commands
Version 3.4-b1
New features:
- RRF v3.4-b1 and newer can now read and write files on the SBC
Changed behaviour:
- Replies from macro files are output immediately as they are generated (like in standalone mode)
- Codes starting macros do not collect the results from the sub-macro codes any more (like in standalone mode)
- SPI link timing is not controlled by DCS any more, instead RRF does this (see also M576)
Bug fixes:
- Variable names could not contain underscores
Version 3.3.0
Upgrade notes since version 3.2:
- Plugin support is now enabled but requires some extra steps before they can be installed. Execute the following commands in a Linux terminal:
- Install AppArmor package:
sudo apt install apparmor
- Enable AppArmor support on boot:
echo " lsm=apparmor" >> /boot/cmdline.txt
- Enable new plugin services:
sudo systemctl enable duetpluginservice && sudo systemctl enable duetpluginservice-root
- Reboot the SBC to apply the changes:
sudo reboot
- Install AppArmor package:
- DuetPiManagementPlugin is now available for DuetPi to support various M-codes that werre previously supported only in standalone mode
- This plugin is available from the
duetpimanagementplugin
package which comes with the latest DuetPi version - It can be manually installed via
apt install duetpimanagementplugin
- Go to the
Machine-Specific -> Third-Party Plugins
page on DWC to enable it after a manual installation
- This plugin is available from the
- There is now a new configuration file
dsf-config.g
which is executed when all previously started plugins have been started by the plugin service(s) after a reboot. Put custom G/M-codes into this file, ideally with a short delay at the start (G4 S2
) to ensure the plugions are fully started at the time custom actions are executed.
Bug fixes:
- When a new firmware build was installed, the final IAP delay was sometimes too short
directories
key was not queried when DCS started in update-only mode- Remaining plugins were not correctly stopped when a plugin service was shut down
Known limitations:
- Auto-resume on power loss cannot be configured (M916)
- Accelerometer profiles cannot be recorded (M956)
- Password protection has no effect yet (M551)
Please check out the full changelog for further improvements since v3.2.2.