DuetWifi + BigBox

  • I've had the opportunity to test the Duet Wifi for about a month now, and the short version is that I'm really impressed with it. I've probably printed around 3000 things for my business, so at this point 3D printing has become a bit mundane. The Duet Wifi has made things a bit more enjoyable though - it is so well thought out and just pleasant to use.

    Main improvements vs the RUMBA:

    • The stepper motors are much quieter.. I often times have to turn and look at the printer to determine if it has finished the print, as I can't hear the motors over the fans.
    • Considerably nicer interface, both the touchscreen PanelDue and the web interface.
    • Changing configuration is a breeze. No need to compile or upload firmware, just edit the relevant line of g-code in config.g. This can also be done from the aforementioned web interface

    Onward - first some details on getting things up and running in a BigBox, and then some results/comments on the Duet Wifi itself. RichRap3D has already posted a similar thread on his experiences here so be sure to check that out as well.


    The Duet Wifi has a different mounting pattern than the default RUMBA, so I designed an adaptor plate, to lasercut out of acrylic. If you need one of these cut, just email me - username at gmail.

    Unfortunately the wifi antenna covers one of the mounting holes for the plate. This could be remedied by tweaking the DXF file to accept leftover threaded inserts instead from the BigBox kit. I would have done this if I had them nearby to measure when making the DXF.

    The next step is to disconnect/remove the RUMBA, and to mount the DuetWifi. It is helpful to either do one connection at a time, or to label all the cables so they don't get mixed up. There isn't always room on the front of the board for details about a particular connector, but if you look on the backside you'll often have the needed information. The wiring diagram is a good resource to have as well. Here's the DuetWifi installed:

    I've circled each grouping of connectors, in some cases some slight changes are needed. Starting at the upper left:

    Yellow: These are the hotend heaters. I only have one hotend, but the other one would install here as well. Heaters do not care about polarity.

    Dark Green: These are the motor connections. From left to right: Second Extruder, First Extruder, X, Y, Z. Really the only thing that needs discussion here is the Z connection. Since the Duet Wifi doesn't have screw terminals, you'll need to add connectors (commonly referred to as "dupont connectors") to be able to connect the motors. You can see this in the photo, the cables I used were red. I also left the Z-motors connected in parallel. It is often recommended to connect in series and the Duet board makes this easy with a second set of headers right there next to the set I used, but I opted not to in order to have a better direct comparison to the stock RUMBA.

    Light Blue: This is the thermistor connection. In this photo I was using one of E3D's new thermistor cartridges for the hotend, but you can also use the stock PT100 sensor. If you do so, you need the PT100 add-on board. Details here. Note that thermistors also do not care about polarity, either is OK.

    Dark Blue: These are the endstop connectors. You only need to connect X and Y here, the Z-probe is handled later. Note that the connector pinout is different from what you might be used to, as a result you need to carefully remove one of the pins from the connector. On the Duet Wifi, you want the endstop to be connected to the outside pins of the connector.

    Purple: These are the fans. The only fan I have connected in this photo is the print cooling fan. The right-most two headers are always on, whereas the other 3 headers can be controlled by the Duet Wifi. You can set up one of the headers to be your hotend cooling fan, activated in firmware only when the temperature is over a setpoint. I prefer for the hotend cooling fan to be always on, myself. I'm also experimenting with a custom water-cooled E3Dv6, hence the lack of a fan connected to the Duet itself.

    Red: This is main power in, heated bed power, and the heated bed thermistor. The thermistor does not care about polarity, but you should be mindful of the polarity of the other two connections, especially the main power as I don't believe the Duet Wifi has reverse polarity protection.

    Light Green: This is the PanelDue and Z-probe connection. Note that the Z-probe connection also needs to be "repinned", as it uses a different pinout relative to the RUMBA setup. From right to left, I have RED –- unused --- BLACK --- YELLOW. This corresponds to +3.3v, unused, ground, and signal. The PanelDue is optional, but probably my favorite part. No more scrolling around from menu to menu - this is kind of like going from a flip phone to a smartphone. Big jump in user experience.

    At this point the Duet Wifi should be fully wired and ready to use, as shown:

    The whole board runs very cool, so I left off the fan over the electronics - quieter that way.


    If you're coming from a board like the RUMBA, you're probably used to having to edit configuration.h, recompile, upload, all that mess. This is one of the many advantages of the DuetWifi - you simply edit config.g, which is stored on the SD card. You can do this from the web interface (DuetWebControl), or by editing the file on the SD card directly. Here's the file I've been using:

    ; Configuration file for BigBox 3D printer
    ; Communication and general
    M111 S0                             	; Debug off
    M550 PBigBoxPro			; Machine name and Netbios name (can be anything you like)
    M551 Preprap                        	; Machine password (used for FTP)
    ;*** If you have more than one Duet on your network, they must all have different MAC addresses, so change the last digits
    M540 P0xBE:0xEF:0xDE:0xAD:0xFE:0xED 	; MAC Address
    ;*** Wifi Networking
    M552 S1				; Enable WiFi
    M555 P2                           	; Set output to look like Marlin
    M575 P1 B57600 S1		; Comms parameters for PanelDue
    ; Movement section
    M569 P0 S1                          ; Drive 0 goes forwards (change to S0 to reverse it)
    M569 P1 S1                          ; Drive 1 goes forwards
    M569 P2 S1                          ; Drive 2 goes forwards
    M569 P3 S1                          ; Drive 3 goes forwards
    M569 P4 S1                          ; Drive 4 goes forwards
    M574 X1 Y1 Z1.2 S1					; set endstop configuration (X and Y endstops only, at low end, active high)
    M906 X800 Y600 Z800 E1000           ; Set motor currents (mA)
    M201 X800 Y800 Z15 E1000            ; Accelerations (mm/s^2)
    M203 X15000 Y15000 Z100 E3600       ; Maximum speeds (mm/min)
    M566 X600 Y600 Z30 E20              ; Minimum speeds mm/minute
    M208 X300 Y200 Z200					; set axis maxima (adjust to suit your machine)
    M208 X0 Y0 Z-0.2 S1					; set axis minimum (adjust to make X=0 and Y=0 the edge of the bed)
    M92 X160 Y360 Z1600					; Set axis steps/mm
    M92 E304:304                       	; Set extruder steps per mm
    G21                                 ; Work in millimetres
    G90                                 ; Send absolute coordinates...
    M83                                 ; ...but relative extruder moves
    M350 X16 Y16 E16 I1    			; Set 16x microstepping with interpolation
    ; Z probe section
    M558 P1 X0 Y0 Z1 H3 F200 T5000		; Smart IR Z probe, used for homing Z axis, dive height 3mm, probe speed 200mm/min, travel speed 5000mm/min
    G31 X11.0 Y0.5 Z1.65 P500           ; Set the probe height and threshold (put your own values here)
    ; Heater and thermistor section
    ;*** If you have a Duet board with 1K thermistor series resistors, change R4700 to R1000 to the following M305 commands
    M305 P0 T100000 B4388 R4700 H30 L0	; Put your own H and/or L values here to set the bed thermistor ADC correction
    M305 P1 T100000 B4388 R4700 H30 L0	; Put your own H and/or L values here to set the first nozzle thermistor ADC correction
    M305 P2 R4700 H0 L0					; Put your own H and/or L values here to set the second nozzle thermistor ADC correction
    M301 H1 P10 I0.10 D100 T0.50 S1.0	; PID settings for extruder 0
    M301 H2 P10 I0.10 D100 T0.50 S1.0	; PID settings for extruder 1
    M570 S120							; Increase to allow extra heating time if needed
    M106 F10 ; Fix for Bigbox Blower
    ; Tool definition section
    M563 P0 D0 H1                       ; Define tool 0 to use extruder drive 0 and heater 1
    G10 P0 S0 R0                        ; Set tool 0 operating and standby temperatures
    ;*** If you have a dual-nozzle build, un-comment the following 2 lines
    ;M563 P1 D1 H2                      ; Define tool 1
    ;G10 P1 S0 R0                       ; Set tool 1 operating and standby temperatures
    ; Bed probe section (not needed if you use a bed.g file)
    ;*** Adjust the XY coordinates in the following M557 commands to suit your build and the position of your Z probe
    M557 P0 X60 Y0                      ; Four... 
    M557 P1 X60 Y165                    ; ...probe points...
    M557 P2 X200 Y165                   ; ...for bed...
    M557 P3 X200 Y0                     ; ...levelling
    ;M557 P4 X141 Y82.5                 ; 5th probe point for levelling (un-comment this to get a 5th point at the centre of the bed)
    ; Epilogue
    ;*** If you are using axis compensation, put the figures in the following command
    M556 S78 X0 Y0 Z0                   ; Axis compensation here

    A few notes:

    • Had to add "M106 F10", which changes the PWM frequency such that the print cooling blower actually works - prior to this anything less than full speed resulted in no rotation.
    • I'm using 800ma/600ma/800ma/1000ma. No skipped steps yet, but i'm sure these could be tweaked.
    • Z-probe. This line sets that up: "G31 X11.0 Y0.5 Z1.65 P500" and the number after the Z is what the printer will be told the current height is when the z-probe activates. The more positive this number is, the more the printer will try to print below the bed surface, and vice versa. So if your printer is squashing the first layer, reduce this number.

    Print Comparison

    So far I've done around 60 prints with the Duet Wifi, and in addition to the aforementioned advantages, I've also noticed a small but observable difference in print quality.

    Both of these cubes were printed with the same parameters, but there is observable moire on the print on the right, which came from the RUMBA with its A4988 stepper drivers. The print on the left came from the DuetWifi, and has noticeably smoother walls, free of moire.


    For a while, every 15-60 minutes or so I'd get a timeout notification in DuetWebControl, resulting in disconnects. The print would continue, but I had to click connect in the interface to reconnect to the Duet. It seems as though the most recent firmware update has resolved this though, as I've gone about 4 hours so far on the latest firmware without issue.

    The full setup (Duet Wifi + PanelDue) is pricey - around $250. I can say that for me at least, the improvement in user experience (managing prints) alone was worth the cost, and that's without counting the noise and print quality improvements.

    Overall conclusion:

    The upgrade was straightforward and took about an hour start to finish - the biggest chunk of which was designing the adaptor plate. I'm looking forward to continuing to tweak the settings, particular the stepper driver config. All around, very happy with it.

Log in to reply