Releases: Duet3D/DuetSoftwareFramework
Releases · Duet3D/DuetSoftwareFramework
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.
Version 3.3-rc3
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.
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
Known limitations:
- Auto-resume on power loss cannot be configured (M916)
- Accelerometer profiles cannot be recorded (M956)
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
)