Duet WiFi firmware new feature priorities

Avatar

By dc42 22 June 2016 13:28

Administrator · 1,867 comments

Hi beta testers,

I have quite a long list of firmware improvements to make, listed below in no particular order. So that I can judge what you folks want the most, please can you select up to 5 improvements you care about the most, and put those in priority order, with 1 being the most important to you. Some of these are inter-dependent, but I won't go into details at this time.

A. Higher stepper motor current (above 2A). Requires implementation of at least standstill current reduction and driver temperature monitoring.

B. Multi-threaded web server, capable of supporting several concurrent connections even when one of them is uploading a file. May also increase the speed of file uploading a little.

C. Predictive temperature control. This will replace PID. Probably the main benefit is that it will have a simple and fast auto tune procedure. implemented in version 1.15

D. Support for PanelOne and similar 20x4 text displays, not including the SD card socket - see next item.

E. Support for an external SD card socket, such as the one on PanelOne and the one usually present on displays used with PanelDue. The file upload speed to this card will be much lower than to the built-in SDHC card, so the main use will be if you want to write files to an SD card on a PC and then move it to the printer. implemented in version 1.14

F. Support for multiple independent X carriages. The common case is two heads moving on the same rods or rails, which park themselves at opposite ends when not in use.

G. Support for three independently-controlled Z motors, normally moved in sync but moved independently when performing bed leveling (and I really do mean bed levelling, not bed compensation).

H. Grid-based bed compensation, for dealing with beds or printing planes that are not flat.

I. Faster microstepping, without going to dynamically-varying microstepping. Perhaps a 50% speed improvement will be possible. implemented in version 1.14

J. Dynamically-varying microstepping, allowing true 256x microstepping at low speeds, with microstepping automatically reduced for faster moves.

K. Support for a config-override.g file on the SD card, which saves certain settings that you enter, to include delta radius and endstop corrections. This will replace the NVRAM settings, which don't work on the Duet WiFi because of a limitation of the SAM4E (they could be made to work but I think config-override.g is a better solution).

L. Faster file upload speed to the SDHC card, perhaps we can achieve 2 or 3 Mbytes/sec.

M. Babystepping, i.e. ability to change where the printer thinks Z=0 is in small steps during a print.

N. Support for driving RC servos and related devices. Some servos may need a 5V control signal and not accept a 3.3V one, so this isn't necessarily just a firmware issue.

O. Support for restore points. This would allow the print to be paused, a restore point created, and the printer shut down - either automatically because of power failure (although a UPS or SLA battery would be needed to power the printer for a few seconds), or manually. Then the printer could be re-started and the print continued from the same point. Only practical for 3D printers that can be re-homed when there is a print on the bed, or for which the motors can be relied upon to retain their positions if they are shut down at an appropriate full step position.

P. Control over which access point the Duet WiFi connects to, via the USB port, and perhaps from PanelDue as well.

Q. Better web interface security, including logon IDs and passwords that are not sent over WiFi in clear text even when using an unsecured WiFi network, and passwords that cannot be retrieved from the printer via the web interface. IMO this is essential if you want to expose your printer to the internet by opening a port on your router, or you want to use the Duet WiFi on an unsecured wireless network.

R. Support to compensate for axis hysteresis in the motion control.

S. Anything else?


Duet WiFi hardware designer and firmware engineer
http://www.escher3d.com
https://miscsolutions.wordpress.com

Avatar

By Toddimus 22 June 2016 15:31

Member · 50 comments

I'll bite.  😁

1.  Grid-based bed compensation
2.  Faster microstepping
3.  Dynamically-varying microstepping
4.  Support for a config-override.g file
5.  Predictive temperature control

Avatar

By Nyl0cke 22 June 2016 16:20

Member · 75 comments

1. Babystepping
2. Support for a config-override.g file
3. Better web interface security
4. Faster file upload

Is the grid based system good on deltas? Or does the calibration routine for deltas negate this?
If its good for deltas then the grid based system for #5, if not then predictive temperature control

Avatar

By uvarovkv 22 June 2016 18:58

Member · 10 comments

Hi David.

1. Support for restore points
2. Faster microstepping
3. Dynamically-varying microstepping
4. Predictive temperature control
5. Support for a config-override.g file

Avatar

By deckingman 22 June 2016 19:03

Member · 593 comments

I'm not a beta tester but my twopence worth would be:
1 = G
2 = A
3 = C
4 = I


Avatar

By bot 23 June 2016 00:15

Member · 194 comments

Thanks for the opportunity to provide input! Multiple x carriages I had on my mind to ask you about, I'm glad you are thinking of it.

1) F. Support for multiple independent X carriages.
2) M. Babystepping
3) A. Higher stepper motor current
4) I. Faster microstepping (not sure what the difference is between this and varied microstepping, but this sounds easier/more practical to implement perhaps.
5) L. Faster file upload speed

Last edited by bot (23 June 2016 00:16)

Avatar

By Aussiephil 23 June 2016 02:20

Member · 97 comments

Agreed, Many thanks for the chance to have input.
Top5 to assist in testing at least.

B. Multi-threaded Web server, might seem trivial but in this multi device world multi connections are more likely than not.
C. Predictive Temperature Control - PID tuning manually is a pita
A. Higher Stepper Current - but more because it gets driver temperature monitoring.
J. Dynamically vary microstep - if it works it could solve a lot of speed versus precision arguments at least 😁
S. anything else - support for dual (or more) simultaneous extrude outputs to enable two objects narrower than the nozzle spacing to be printed at the same time
or CNC support

I don't expect S to make it in anytime soon but would love it on the future list and would cause me to build a Cartesian/corexy.


Cheers
Phil

Avatar

By dc42 23 June 2016 07:08

Administrator · 1,867 comments

Hi Aussiephil, you should already be able to print multiple identical objects at the same time. Configure a single tool using both nozzles, enable mixing, and set the mixing ratio to 1:1.


Duet WiFi hardware designer and firmware engineer
http://www.escher3d.com
https://miscsolutions.wordpress.com

Avatar

By Aussiephil 23 June 2016 07:57

Member · 97 comments
dc42 wrote

Hi Aussiephil, you should already be able to print multiple identical objects at the same time. Configure a single tool using both nozzles, enable mixing, and set the mixing ratio to 1:1.

Oh very cool, never thought of that, I guess the request then becomes "anyway to make it simplified from an end user viewpoint" ie, Mxxx 0 = single, Mxxx 1 = ditto.
That would allow you to even embed it in the sliced gcode.

Thanks David.

Phil


Cheers
Phil

Avatar

By Dougal1957 23 June 2016 10:55

Member · 218 comments

David

My list would be

1   J
2   K
3   A
4   M
5   G  (May get me started on the CoreXY Again)

Almost got my Beta ready to go should be able to start testing this evening

Doug

Avatar

By dc42 23 June 2016 12:01

Administrator · 1,867 comments
Aussiephil wrote
dc42 wrote

Hi Aussiephil, you should already be able to print multiple identical objects at the same time. Configure a single tool using both nozzles, enable mixing, and set the mixing ratio to 1:1.

Oh very cool, never thought of that, I guess the request then becomes "anyway to make it simplified from an end user viewpoint" ie, Mxxx 0 = single, Mxxx 1 = ditto.
That would allow you to even embed it in the sliced gcode.

You can already embed it in the sliced gcode, all you need there is a T command to select which print tool you want, e.g. T0 = first print head, T1 = second print head, T2 = both print heads.


Duet WiFi hardware designer and firmware engineer
http://www.escher3d.com
https://miscsolutions.wordpress.com

Avatar

By Aussiephil 24 June 2016 02:41

Member · 97 comments

sorry to pull the discussion off topic, thanks. That has finally sunk in.


Cheers
Phil

Avatar

By RCarlyle 24 June 2016 03:01

Member · 73 comments

For large printers, all the bed stuff.
1) Three Z motors
2) Grid leveling
3) Babystepping (maybe some clever way to handle this better than other firmwares, like a simple option to remember the offset)

Other stuff
4) Predictive temp control (what kind of algorithm are you thinking about using?)
5) Restore points

Avatar

By pjr3D 24 June 2016 14:51

Member · 8 comments

1) Predictive temperature control
2) Faster and varying Microstepping
3) Bed grid levelling
4) Multi X carriage control
5) Config-override support

Plus the rest if they can be fitted in 😁

Avatar

By Jetguy 24 June 2016 23:01

Member · 3 comments

I know my list is longer than 5, but wanted to share my thoughts. I tried to put in order of priority. As always, safety and performance need to happen first so IMO, the heater control is the top of the list. Next is interface security. I think in the industry this is far overlooked. To have this project come out with proper security suitable for corporate networks is key if you want me to promote web based and networking printer controllers to the larger community. Again, this is where you can trump the competition hands down. We already have decent performance and features. I'm all about improving them and love pushing the edge, but I want to see a product that is done right, and key is understanding corporate networks and school networks for wide adoption.

C. Predictive temperature control. This will replace PID. Probably the main benefit is that it will have a simple and fast auto tune procedure.
Q. Better web interface security, including logon IDs and passwords that are not sent over WiFi in clear text even when using an unsecured WiFi network, and passwords that cannot be retrieved from the printer via the web interface. IMO this is essential if you want to expose your printer to the internet by opening a port on your router, or you want to use the Duet WiFi on an unsecured wireless network.
H. Grid-based bed compensation, for dealing with beds or printing planes that are not flat.
O. Support for restore points. This would allow the print to be paused, a restore point created, and the printer shut down - either automatically because of power failure (although a UPS or SLA battery would be needed to power the printer for a few seconds), or manually. Then the printer could be re-started and the print continued from the same point. Only practical for 3D printers that can be re-homed when there is a print on the bed, or for which the motors can be relied upon to retain their positions if they are shut down at an appropriate full step position.
B. Multi-threaded web server, capable of supporting several concurrent connections even when one of them is uploading a file. May also increase the speed of file uploading a little.
D. Support for PanelOne and similar 20x4 text displays, not including the SD card socket - see next item.
E. Support for an external SD card socket, such as the one on PanelOne and the one usually present on displays used with PanelDue. The file upload speed to this card will be much lower than to the built-in SDHC card, so the main use will be if you want to write files to an SD card on a PC and then move it to the printer.
F. Support for multiple independent X carriages. The common case is two heads moving on the same rods or rails, which park themselves at opposite ends when not in use.
I. Faster microstepping, without going to dynamically-varying microstepping. Perhaps a 50% speed improvement will be possible.


P. Control over which access point the Duet WiFi connects to, via the USB port, and perhaps from PanelDue as well.

Things I'd rather not see effort put into based on what limited benefit to problem ratio they provide.
J. Dynamically-varying microstepping, allowing true 256x microstepping at low speeds, with microstepping automatically reduced for faster moves.
I know what that means at the bare hardware level here and mode switching while not losing position seems a horrible idea based on everything I know. Even if possible, the list of how it can go wrong is just not worth it IMO.

I also don't think higher than 2 amp stepper on board makes sense. The EMI, RFI, current surges, and heat on a control board just seems like a battle. If you want that much current, the drivers need heatsinking and separate power bus- AKA External drivers.
If you want to be slick, one feature I would support is breaking out step, direction, and enable solder pad throughhole pin locations. Yes, I know you have an expansion header, I want to avoid remapping and other issues. I hate to even say it, something Smoothieboard has that this doesn't.

Another comment I saw was potentially telnet. Please, use SSH or secure protocol with ability to change the default password- going so far as to force the user to change it. We need to guide users into security. Don't allow any anonymous service (FTP,SCP, Telnet, or other) as a control or access method. HTTPS web with signed certificates. Enforce strong authentication. You can view in anonymous mode, but not control. But also give the user the option to change that.

Avatar

By T3P3Tony 26 June 2016 16:17

Administrator · 579 comments

I have split the discussion about the hotend temperature control out as requested:
https://www.duet3d.com/forum/thread.php?id=22


Duet Wifi Hardware Designer
www.duet3d.com
www.think3dprint3d.com

Avatar

By dc42 26 June 2016 21:07

Administrator · 1,867 comments
Jetguy wrote

I know my list is longer than 5, but wanted to share my thoughts.

Thanks for your thoughts, I appreciate your explanations. However, when it come to totting up the votes, I'll have to take just your first 5 to be fair to others.

Regarding using SSH for Telnet and/or http communications, there are a couple of potential issues with doing this. The first is that I have read that SSH needs a fast PC-grade processor to implement it properly, and although the ESP8266 can do it, it takes a lot of CPU time and therefore slows down the data transfer substantially. Probably not a problem for sending the occasional gcode command over Telnet, but a serious problem when uploading files over http. The second is that the user would need to have an SSL certificate. These cost money and time to acquire and set up, which most users would not want to bother with. You could use a self-signed certificate, but then when you connect a browser to the Duet WiFi, you will get a message saying that the certificate cannot be trusted.

Jetguy wrote

If you want to be slick, one feature I would support is breaking out step, direction, and enable solder pad throughhole pin locations. Yes, I know you have an expansion header, I want to avoid remapping and other issues. I hate to even say it, something Smoothieboard has that this doesn't.

No, it is the Duet that offers more than Smoothieboard. Smoothieboard can control up to a total of 5 internal + external drivers, with no documented facility to control more than 5 AFAIK. Duet WiFi can control up to 5 internal plus 5 external drivers. Telling the Duet to use external drivers for axis motors is trivial, there is a Gcode (M569) to do it. Furthermore, you can then re-purpose the on-board drivers for motors requiring less current, for example extruders - which you couldn't do if we provided breakout headers and required you to use the first 3 drivers to control the axes.


Duet WiFi hardware designer and firmware engineer
http://www.escher3d.com
https://miscsolutions.wordpress.com

Avatar

By ianlee74 27 June 2016 18:41

Member · 44 comments

H. Grid-based bed compensation
B. Multi-threaded web server
E. Support for an external SD card socket
L. Faster file upload speed
J. Dynamically-varying microstepping

Something not on your list that was previously discussed on the delta forum was adding better support for webcams. I'd add to that the ability to record timelapse photos/video.

Thanks!
Ian

Avatar

By deckingman 27 June 2016 19:02

Member · 593 comments

Are people who are voting for faster upload speeds aware of the progress that has already been made in the latest firmware? I can't say how fast mine is uploading (over wired LAN) because I haven't uploaded anything larger than 1.8Mb which happens so fast that I don't have time to register the speed. Maybe if I looked hard at the screen when I pressed the upload button, I might see it, but it has to be in the order of a couple of seconds or less.

Last edited by deckingman (27 June 2016 19:03)


Avatar

By pjr3D 28 June 2016 15:28

Member · 8 comments

As far as I am concerned I am seeing a reduction of 40-50% in file upload speed as compared with the (wired) duet 0.8.5.

Typically I would see upload speeds of circa 950 Kb/s compared with 500-540 Kb/s on DuetWiFi. Respectable but noticeably slower. Admittedly in my area there are often ten to a dozen wifi channels competing with my setup.

This is the main downside I see with DuetWiFi compared with 0.8.5 - pretty much everything else is a plus. I particularly like the reduction in noise from the steppers and I love the thermocouple interface board.  Looking forward to the extra features David is planning to add to the firmware.

Avatar

By roboduet 1 July 2016 21:18

Member · 104 comments

J. Dynamically-varying microstepping
I. Faster microstepping
C. Predictive temperature control
M. Babystepping
S. Support for DS18B20 temperature sensors

Avatar

By auser 2 July 2016 14:03

Member · 9 comments

1) Support for PanelOne
2) Support for restore points
3) Support for a config-override.g file

Avatar

By jmg123 15 July 2016 23:27

Member · 1 comments

1) . J Dynamically-varying microstepping
2). D  Support for PanelOne and similar 20x4 text displays, not including the SD card socket - see next item.
3) O. Support for restore points.
4) C. Predictive temperature control
5) S. MQTT client  - so that actions could be performed  by other things, e.g lights, alarms, home automation, during or on completion of the print.  So as to make things a bit more secure, the duet wifi would only want to publish data, not subscribe to anything  (with the possible exception of emergency stop) Shouldn't be too hard todo as there simple mqtt implementations based on LWIP floating around already.

Last edited by jmg123 (15 July 2016 23:32)

Avatar

By Corexy 15 July 2016 23:46

Member · 124 comments

Just ordered mine right now.....so:

E. Support for an external SD card socket
A. Higher stepper motor current
C. Predictive temperature control
H. Grid-based bed compensation
J. Dynamically-varying microstepping

Avatar

By mhackney 16 July 2016 02:05

Member · 109 comments

Wow, that's a long and great list!

1 C Predictive temperature control
2 O Support for restore points
3 L Faster file upload speed
4 M Babystepping - if implanted with a usable UI
5 B Multi-threaded web server,

and some comments:

re: config_override.g - smoothieware uses this and it did nothing but drive me crazy! I frequently had unexpected results that turned out to be override settings. If you do go down this path, making it editable in DWC like the config.g is would go a long way to help.

SSH would be ideal over telnet but telnet is fine for me. I only run on my internal network so security is not a huge concern. But I can see it being important in an educational and industrial situation.

ROBUST DWC connections - I know huge progress has been made on this this year but it can still improve.