Skip to main content

Site Navigation

Your Account

Choose Language

Duet Web Control is a full featured UI for the Duet family of electronics. It is adaptive and what is displayed changes depending on the configuration of the printer connected. The screenshots in the example below is for a printer with 2 extruders, each mounted on their own X axis however the descriptions are valid for any printer setup.


This manual is for DuetWebControl version 1.2.1-b2 and later.

When opened in a browser Duet Web Control starts in the machine control screen, when viewed on a large screen will look similar to this:

Block Image

Machine Control Page for an Cartesian IDEX printer


  • The DuetWebControl display is dynamic so tools, axis and other features will be displayed only if they are configured
  • To help illustrate this dynamic display this manual uses screen shots from a single tool delta printer and a multi tool IDEX printer.

The Duet Web Control layout will adapt to smaller screen sizes as required however all the features can still be accessed through drop down menus, as shown here on an Android Phone:

Block Image

Machine Control Page for an Cartesian IDEX printer on Android mobile phone

Browser Compatibility

Note that Chrome and Firefox browsers fully support DuetWebControl however Edge, IE have problems so avoid those. DuetWebControl file editor works in Safari 10.0.1 and later. (Won't work in any earlier versions). These issues are due to some browsers failing to implement the HTML 5 standard.

Common elements


Some elements of the DuetWebControl are common across all pages.

Header bar

Block Image

''The header bar and the printer status can be fixed or allowed to scroll. This is selected in settings->user interface""

Printer status

Block Image

The IDEX printer in this example has 3 tools defined, only defined tools are shown

Main menu

Block Image

Selecting Tools, Setting Temperatures

Tool States

Tools can be in three states::

  • active
  • standby
  • off

Clicking on the tool cycles between active and standby. The Control All menu allows for all tools to be turned off, as well as setting global active and standby temps:

Block Image

Only one tool can be active at any one time (but a tool can be made up of multiple hotends, for example on an IDEX printer when printing in mirror or ditto modes see: configuring multiple independent X-carriages on a Cartesian printer). Making a tool active sets the remainder to standby (unless they are off, in which case they stay off.

Selecting a Tool

The currently selected tool is underlined and the background is light blue (in the default skin):

Block Image

The heater(s) of the active tool are set to the defined active tool temperature, heaters of standby tools are set to the standby tool temperature, tools that are "off" have their heaters turned off. In the image above, tool 2 uses both heaters so they are both at active temperature. In the next image, tool 1 is selected and heater 2 is thus active, heater 1 is at standby.

Block Image

Tools can be selected or deselected using the right click menu

Block Image

The load filament option runs a load filament macro that is defined on the filaments page which will be covered later.

Heater view

If you have a mixing setup with a lot of different tools defined for different ratios then it may be easier to view the heaters, rather than tools. Selecting the heater view shows each heater, and the associated tools:

Block Image

The temperature of each heater is displayed in the temperature chart. The colours of the lines on the chart relate to the heater colours.

Block Image

These images illustrate a more complex setup, just having 1 tool per heater is more common):

Block Image

Extra view

Additional temperature inputs from "virtual" temperature sources such as the MCU and stepper over temperature channels can be configured . Once configured they will show up as an option to display on the graph under this tab

Block Image

Virtual heaters 100, 101 and 102 are preconfigured to use temperature sensor channels 1000 (MCU), 1001 (TMC2660 on Duet2) and 1002(TMC2660 on Duex) respectively.

If you send the following command:

M305 P101

you should get the response "Heater 101 uses TMC2660 temperature warnings sensor channel 1001". But as this virtual heater has no name, it doesn't show up in DWC. You can fix that by sending:

M305 P101 S"DuetDriversTemp"


M305 P102 S"DuexDriversTemp"

Machine Status

This displays the current axis positions, extruder drive positions, VIN and Z-probe reading.

Block Image

When printing the heat position and extruder drive amounts can change rapidly and the refresh rate on DuetWebControl means the values are not the exact position at all times.

The Z -Probe value is either 0 or 1000 for digital probe inputs. Analog probes can be any value between 0 and 1000.

Machine Control


The machine control page is composed of the following elements:

Axes and extruder control

Block Image

Macros and miscellaneous

Block Image

Homing and Moving Axes

Before some axes can be moved they must be homed, This can be overridden in the Settings on newer DuetWebControl versions but it is best practice to ensure all axes are homed before moving them.

Block Image

The Web interface is using the same G-Codes to home as if the G-Codes were entered manually in the console or over USB. See the section below about configuring system macros for links to more details on how this works.

Once the axes are homed they turn from orange to blue:

Block Image

Axes can be moved using the buttons in large or small steps and the axes co-ordinates are shown in the machine status box:

Block Image

Note that by default an axis will not be allowed to move outside of the printer dimensions set in the printer configuration file. The axis movement speed is set in the Settings->UserInterface->Machine Control section.

Adjusting movement amounts

Block Image

The values of buttons to move each axis by a certain step size (e.g. 100,10,1,0.1) can be adjusted by right clicking on the button in question and entering a new value. Note that this value will be used for both positive and negative movement for that axis. These values are not saved unless you go to the settings page and "apply settings".

Probing the Bed

Block Image


Block Image


The "Auto Bed Compensation" button on a Cartesian or "Auto Delta Calibration" button runs G32. This has different functions . On a Cartesian/CoreXY/SCARA machine it is used for Bed levelling using multiple independent Z motors. On a delta Delta it is used for calibration.

Clicking on the drop down menu gives access to the mesh bed levelling commands:

Block Image

Once setup correctly Mesh bed compensation probes the bed in a number of points and then uses that mesh to compensate for uneven bed surfaces.

Block Image

This mesh is automatically saved onto the SD card as sys/heightmap.csv. You can view, disable and reload the saved heightmap using this menu.

Macros and Miscellaneous

To run a macro simply click on the macro name, or select it from a sub directory drop down:

Block Image

Defining macros is shown in a later step in these instructions.

The Miscellaneous box is not shown by default, when options are selected within the "settings" page to display the ATX power control and Fan slider they appear here.

Block Image

Print Status

The print status page does not display any useful information until a print is started. Once a print is started though it shows information about the file being printed, layer times and estimates for print time remaining. It also allows for Fan, extrusion ratio and print speeds to be adjusted in real time:

Block Image

Print progress bar

Block Image

This bar bar shows how through the layers and filament the print has progressed.

Print control

The print control allows the print to be paused:

Block Image

Pausing runs the "pause.g" system macro so the actions on pausing can be user configured (e.g retract some filament, move the head away from the print). Editing system macros is covered later in this manual

Once the print is paused it can be resumed or cancelled.

Block Image

Resuming runs "resume.g", cancel "cancel.g" system macros.

The print control section has a check box to "Enable Auto-Sleep". If this is selected then the M1 G-Code is sent at the end of the print which runs the "sleep.g" macro file. This for example would allow the shutting down of the main power supply once the print had complete (assuming the printer hardware is setup to allow this).

Z Baby Stepping

Block Image

This allows for the Z axis to be lowered or raised by small steps - sometimes known as "Baby Stepping". The size of each baby step can be configured in the user interface setting covered later in this manual.

File information

Block Image

This reports information from the file header that is provided by the slicer The reported information is reliant on the slicer placing the correct information at the end of the G-Code file in a format the Duet Web Control understands. Newer versions of the following slicers are reported to provide this information:

  • Simplify3d (v4 and later)
  • Slic3r (1.29 and later, Slic3r PE)
  • Kisslicer (Pro)
  • Cura (2.7 and later)

Fan Control

Block Image

Fans configured in firmware are displayed, along with their current setting as a %. Clicking on the fan name selects and deselects the display. In the image above Fan 0 and Fan 2 are displayed, Fan 1 is not. The Tool Fan slider related to the currently active tool (as different tools may use different print cooling fans etc).


  • fans need to be configured in config.g explicity show up on this list. if the default fan settings are fine for a fan the use:
M106 Pn H-1

where n is the fan number that you want to configure as a non thermostatic fan and have displayed in DuetWebControl.

  • Thermostatic fans are not displayed.

Speed and Extrusion Factors

Block Image

Set and override:

Print progress estimations

Block Image

Duet Web Control displays three estimations of print progress based on filament usage, file progress and layer time. The Filament usage and layer time estimates rely on the G-Code file having sufficient header information provided by the slicer (see the File information section earlier in this manual). Different print jobs will have different properties so the accuracy of each estimation varies by the print job. Simulating the print can provide a more accurate estimation. See the section on simulation later in this manual.

Data and layer statistics

Block Image

As the print progresses data is collected and displayed in the table. this particular print was started with the nozzle and bed warn so no warm up time was registered. a graph showing the time taken (Y axis) for each layer (x axis) is shown. This graph can be zoomed in and out (using the mouse scroll wheel):

Block Image

hovering over a point in the graph will provide more information about that layer:

Block Image

G-Code Console

The G-Code console provides a log of G-Codes entered, responses and errors/warnings/notifications received from the Duet by the webinterface since the browser was last refreshed.

In the example below the error (red) of trying to move the Z axis when it was not homes homed is shown along with a other G-Codes entered in the console (green). Information (blue) returned from the firmware is also shown. In this case the the unsucessful and then successful simulation of a file.

Block Image

The console output can be downloaded as a plain text or CSV file.

Gcodes can also be entered in the quick G-Code entry box at the top of the page with the output shown in the console. If the console page is not selected any output from the quick G-Code entry box is also shown as a popup message.

Block Image

This also shows that previously entered commands in this session are shown as quick select options.

A description of all the G-Codes that RepRapFirmware supports is well beyond the scope of this manual. The "?" button links to the G-Code documentation page which has this detail.

G-Code Files

The G-Code Files page allows for g-code files for printing to be uploaded, downloaded, deleted and sorted into sub directories. A summary of the print time and other information is shown if the slicing software adds it to the header (see the File information section of this manual above). As shown in the image, there is a drop down menu to select the external SD card if one is attached to the Duet 2 Wifi.

Block Image

Uploading and organizing G-Code files

Files can be uploaded by browsing for them or dropping them onto the "Upload G Code Files(s) button The file upload functionality cannot be used during a print to prevent interference with reading the SD card for an ongoing print:

Block Image

Files can be dragged and dropped in to sub directories for organisation. Files can be organised through the headings.

Right clicking on the file opens a menu with options to print, simulate, download, edit rename or delete the file.

Block Image

Editing a print G-Code file

In order to edit a file the file needs to be downloaded from the SD into the local cache. This can take a while, especially for large G-Code files:. Editing allows for quickly changing settings such as the start print temperature, more complex editing is best done by downloading the file, using an offline editor and re-uploading it.

Block Image

Simulating a print

The simulation option "prints" the file without heating any heaters or moving any axis. the firmware works out how long moves would have taken and thus can determine an accurate estimate of the print time.

Block Image

The results are reported as a pop up and in the console:

Block Image

Starting a print

Clicking on a file prompts you if you want to print it.

Block Image

Selecting print from the right click menu does not prompt before starting.

You can also use the upload and print button in the header bar to quickly start a print.


Macros are a powerful addition to RepRapFirmware and Duet Web Control as they allow automation of any process that can be described in Gcodes. There are two general types of macros: system macros which will be described later, and user macros which are described here.

The Macro screen shows a list of all the user macros that are in the on-board SD card in the Duet (in the /macros/ directory):

Block Image

Macros can be organised into sub directories and dragged and dropped between them. As well as editing macros in a text editor and then uploading them, they can also be created and edited within Duet Web Control in the browser:

Block Image

In this example there is a macro called "PreparePrinter" being edited. This macro homes the printer, sets the hotend temperatures, waits for them to be reached and then calls another macro (using M98) to purge both hotends.

For examples of commonly useful macros have a look at the Macros documentation page.


The filaments page allows for the configuration of filament types and their associated load and unload macros. See the Filaments documentation for more information.

Block Image

The right click menu allows for the filament to be deleted, renamed and for the load and unload macros associated with that filament to be edited:

Block Image


The settings page has a number of sub pages which give information and allow for the configuration of both Duet Web Control, and the Duet to be updated. These settings are stored by Duet Web Control as a local cookie however there is an option to store them on the Duet.


Block Image

Note that changes do not come into effect until "Apply Settings" is clicked. To revert to the default settings use "Load Factory Defaults", followed by "Apply Settings"


Block Image

This shows the versions of the firmware, webserver and DuetWebControl installed, along with a button to upload new firmware:

Block Image

When a new firmware file is uploaded the web interface will prompt you if you want to install it immediately:

Block Image

Multiple firmware files can be dropped at once and then installed one they have all uploaded.

You do not need to install the firmware immediately as it can be initialted from the console/over USB/from a PanelDue at a later point.

Also on this page are setting for DuetWebControl in the browser communicating with the RepRapFirmware running on the Duet. The default communication and reconnect settings should work well however if you are having intermittent network issues resulting in AJAX errors then increasing the maximum number of AJAX retries will help.

User Interface

Many elements of how the user interface looks and behaves can be set on this sub page.

Block Image


Block Image

Display File Sizes with Binary Prefix: Display file sizes with a base of 1024 instead of 1000.

Always show info area and main menu: Turning on this option ensures the info area and the main menu are always shown on larger displays. This option has no effect on small devices.

Show Fan Controls:Show Fan Sliders allowing you to control the Fan Outputs.

Show Fan RPM in Sensors: Display fan RPM of a 4-pin PWM cooling fan in the sensors area.

Store Web Interface Settings on the Duet:Store the settings of Duet Web Control as a file on the Duet SD card, rather than just as a local cookie. this allows the settings to be portable across browsers and devices accessing the Duet.

Language: choose from languages that are added to DuetWebControl. To add additional languages see the "internationalisation" part of the readme on the DuetWebControl github page.

Theme: currently only three choices. Custom themes can be written in css.

Machine Control

Block Image

Default Move Button Feedrate: Default Feedrate for axis movement controls. The value must be greater than or equal to 60 mm/s. The extruder feedrate is selectable in the Machine Control window.

Z Distance per Babystep: Z Amount per Babystep, 0.05 is a sensible starting default for most FDM printers.

Allow moves if axes are not homed: Send movement codes with the S2 parameter to allow movements while the axes are not homed. This is useful for commissioning and trouble shooting but is not recommended for normal operation.

Confirm Emergency STOP: Confirm emergency stop by displaying a message box. This adds an extra step to the emergency stop so it not recommended.

Show ATX Power control:Show a small panel on the Control page to toggle ATX power. This is only useful if the duet is wired to control an ATX or similar power supply.

Tool Changes

Block Image

Over ride the default setting to run TfreeN, TPreN and TpostN G-Codes when tools are changed. Generally it would be better to edit these files to perform as desired (including being empty if nothing was required at a particular step). This global override can be useful during troubleshooting.


Block Image

Show HTML5 desktop notifications: Use HTML5-based desktop notifications when the page is hidden.

Automatically close messages: Activate these options to automatically close user-generated firmware messages / error messages. This stops a lot of messages stacking up and filling tthe screen but can mean (important) error messages are not immediately noticed unless you switch to the console to view them. Use with caution.

Show Pop-Up Notifications: for

  • Codes that completed without a response: only select this for certain troubleshooting scenarios otherwise there will be many messages that are not useful.
  • Info/Warnings/Errors messages: It is not recommended to suppress Warning or Error messages.

Default Notification Timeout: Time after which default notifications are automatically closed.

Max. number of notifications:Maximum number of simultaneously displayed notification pop-ups. If you have a large number of notifications at once the new ones will force the old ones off the bottom of the screen so it is not flooded.

G codes

Block Image

Always Convert G-Codes to Upper-Case: Convert every G-Code to Upper-Case before sending them, does no hard in most situations although RepRaFirmware will recognise lower case G and M codes.

Clear Cached File Information: Duet Web Control has a local cache of the G-Code file information that is shown on the G-Code files page (as describes earlier in this manual). this clears that cache and forces Duet Web Control to reload the file information. Useful if files have been edited offline.

Webcam integration

Setup to display the output from an optional IP camera.

List Items

Block Image

The list items sub page allows for certain drop down options to be changed or added to with the DuetWebControl User Interface.

The "Default G-Codes" is a legacy setting to provide options for the quick G-Code and consolde G-Code entry box. This is now replaced with DuetWebControl's ability to remember previously entered G-Codes.

Default temperature selections for hotend/bed/chamber heaters can be added to make setting these quicker.

System Editor

All the configuration of RepRapFirmware is carried out by G-Code commands stored in specifically names G-Code files within the /sys/ directory on the on-board SD card. These are also known as system macros or system G-Codes.

Block Image

Changes can be made by downloading the files and editing them in a text editor before uploading them (this has the advantage of maintaining a local copy). Alternatively all the changes can be made by editing the files within the web interface:

Block Image

In this case The config.g file is being edited to change the printer name from "DWCExample" to "BigBoxIDEX". After the config file is saved the web interface prompts to reboot:

Block Image

Setting changes to config.g do not come into effect until the duet is rebooted, in this case after reboot then printer name is changed:

Block Image

Changes to other system macros such as the homing, tool change, pause etc macros come into effect without rebooting as they are read every time the printer is homed, tools are changed, a print is paused etc.

The contents of the system macros is outside of the scope of this manual. There are documentation pages dedicated to the specific settings within config.g, the various homing and tool change G-Codes:

Machine Properties

Block Image

This table provides a summary of the configuration of the various drives within the Duet 2 Wifi and expansion header/board, along with endstop trigger status, z probe information and other miscellaneous information. The Firmware diagnosis button runs the M122 G-Code which outputs a detailed diagnostic dump to the console.


Block Image

Show the configured tools and allows for tools to be added or removed. Currently these additions and removals don't persist through hardware resets so it is recommended to add tools using the M563 G-Code in config.g file as described in Configuring RepRapFirmware for a Cartesian printer.

back to top


Hello Duet3D folks. I am very happy with my Duet (ethernet) and I would recommend it to anybody. I have a few very small issues with the user interface. Is there a way to change the size/layout of the elements on the DWC? I would like the temperature chart to be scaled at least double on the Y (temp) axis, so I can watch the fluctuations with a bit better resolution. Is this a possibility? I have programming experience. I am willing to volunteer to figure out this problem if nobody else has, but I will need to have a “hint” in order to know where to start looking. Are the DWC fields defined somewhere in one of the directories in the firmware on the SD card? Is there a working group of enthusiasts focusing on the DWC? I would enjoy being able to help out.

Again, I love your product, and I am planning on upgrading my large (4’x8’) CNC router to use one instead my current Ethernet Smoothstepper.

Benjamin Willhoite - Reply

Duet Web Control is maintained by Christian Hammacher. Your best bet for getting in touch with him is by raising an issue on the Github repository for DWC at, or through the Duet Web Control Wishlist section of the forum.

David Crocker -

Hello Folks,

everything nice and good. I Installed web interface 1.21 for my duet wifi . Everything works so far.

EXCEPT: I can not edit macros within the web browser. Also the tab “system editor” is missing.

when using notepad++ for editing and uploading as a .txt file, json file is not updated.

All together that is really a pain in the….

Hope someone can be of any help here. Thanks in advance,


Joe - Reply

The interface on the GCode Files, Macros and System Editor pages has changed. You now need to right-click on the filename to get the other options such as editing, renaming and deleting.

David Crocker -

I was able to finally enable printing in simplify3D directly over a network. The trick was to enable the Telnet capability in DuetWiFi or DuetEthernet. On the windows PC running simplify3D, I used a brilliant little opensource programme called com0com ( link : and com2tcp to basically create a virtual USB port on the PC that is linked (wrapping) the Telnet interface on the Duet. Appears the Duet3D Telnet interface supports the RFC2217 extensions. Still testing for reliability etc. but looking promising !!

Would be great if the Simplify3D folks enhanced their MachineControlPanel to support creating such a connection.

Milan Gupta - Reply

I would like to hear more about this. Is it still working for you?

I would love to be able to directly save my gcode files (from S3D) to the Duet.

- Instead of saving to the HDD, then transferring the file in DWC.

Chris Welch -

Add Comment

View Statistics:

Past 24 Hours: 90

Past 7 Days: 567

Past 30 Days: 1,943

All Time: 37,043