Duet 2.05 memory leak?
-
@Phaedrux yes, AFIK -- this is the only such a machine.
The config is big: https://www.dropbox.com/s/dzf96rx23zekyo9/config.g?dl=0I have a modified firmware to expand to more drivers -- I am using the PT100 thermistor pins (on duet and duex5) for more external drivers -- as per dc42 suggestion.
Here is a curious thing -- this only happens while doing triplicate printing -- I wanted to have the ability to be able to have 0 Z offset for each tool to do duplicate, triplicate, or mirror printing, and I can. The other curious thing -- I have done triplicating printing before -- I was making clips to hold the polycarb panels for the machine enclosure, and those prints worked fine, and that was maybe a year ago. Now I am doing a lot of triplicate printing making shields, and the problem came up.
I did do a pair of duplication prints utilizing more of the bed to make some ear relievers and those prints both were fine, no SD card or other issues.
Now here is where I am at now -- this one is fun -- I ran a successful set of shields, then kept the machine on -- and started another set -- and got underuns at the 30 minute mark -- ok, so it's not power state or some magical boot behavior...something else. I then took the card out -- backed it up, formatted it, but this time using 32kb blocks instead of 64kb, and copied everything back -- put the card back -- it wasn't recognized, but a reset -- just a reset not a full cycle and it was fine -- and then the next print was fine, and I did not power it down and am almost an hour into the 2nd -- that's the most underun free prints in a row without a restart or a reset.
I was going of the recommendation that 64kb is the best option for formatting -- but maybe not in my case, yet to see how it does on the next print. I may be able to squeeze 2 more into the day -- each print produces 12 shield with a visor. I have a pickup of a 120 shields going to a nursing home. If I can get more done during the day before the pickup happens, I'll include those.
-
@kazolar said in Duet 2.05 memory leak?:
I was going of the recommendation that 64kb is the best option for formatting
Well it's going to depend on your card specification what the ideal formatting is for that card in particular. 64kb would theoretically give better performance with the Duet, but it may not work well with your card.
That's why it's recommended to use the SD card formatter from the SD card association. It format the card based on the spec of the card. Usually this would result in 32kb cluster size for all but the smaller cards (under 8gb I think). Doing a full surface format can help remap any bad clusters too.
-
So what exactly is it about triplicate printing that is different than quad, double, or single?
-
@Phaedrux so I'm a 3rd print in with the sandisk 8gb card (with 32kb cluster size) -- and no issues -- at least I'm past the point when I would normally run into an issue -- i got a new 32gb sandisk card delivered today, but if this keeps working -- I'm not gun ho to swap it.
If this survives a power down later and power up and start print of the same file -- then I'm keeping the setup as is and holding on to the 32 gb card for another time.As far as triplicate printing vs single/double -- difference is that more hotends and steppers are involved, and both Y gantries are moving -- presumably quad would involve the 4th x axis as well. I've never done that since my 4th extruder has a smaller nozzle -- and it's dedicated for detail features. I am able to get really good yields with triplicate printing, so I haven't had the need to setup the 4th one with the same size as the the other 3.
I just find it odd that triplicate print is triggering this issue and the duplicate print of 26 ear relievers -- so 52 in total worked flawlessly twice. And that gcode file was bigger than the shield gcode file I'm running now. -
The 8 gig card lasted 3 prints, 4th -- failed -- I'm beginning to suspect the microsd slot or related circuitry -- I took the new card -- left it with whatever formatting it came with -- and not right away like before at the 30 minute mark, but about 40 minute, I got underruns. I then reformatted it with 64kb cluster size. Pressed firmly on the casing of the microsd card, and reseted the ethernet header -- got everything tightened up, and -- it's printing fine. Should I bother trying to take the board out and reflow the microsd card. It's far from trivial to take the board out with so much connected to it. I was thinking of upgrading to duet 3 when things were less hectic, but I need this to work just while the PPE shortage is still high. I got this board from filastruder and nothing had been wrong with it -- I'd own up to it if I did something -- cause the first duet 2 that was part of this printer -- that was on me -- I didn't come here saying -- oh my board is not working I don't know what I did. I had a short and it killed it -- this is working fine, then not. Feels wasteful to go on buying another one cause I'd rather take my time get a duet 3 get several expansion modules and rewire the printer.
-
You've said that re-uploading the file after 3 prints clears the problem. So i don't think it is a problem with the Duet hardware.
Underruns in themselves do not necessarily indicate a problem - you may get some anyway if parts of your print contain long runs of very short segment. However, if SD card read operations become slow for any reason, you will get increased underruns, and eventually stuttering.
Please confirm (I think you have already said it) that resetting the Duet doesn't clear the problem, neither does powering the Duet down (including removing USB or 5V external power, if you are using it).
Regarding cluster size, we recommend using the largest one you can, which is normally 64kb. That reduces the number of SD card accesses needed.
-
@dc42 I don't have external 5v or USB connected. What I did last night to get it going again was -- I powered it down, reformatted the card -- and copied all the backed up data to it -- and it printed fine overnight without ANY underruns (i'm only looking at the last number) when it starts getting underruns in the 2nd number, it starts stuttering very quickly, and the underrun numbers keep going up, I haven't seen it not stutter and the 2nd number be >0. It seems that a fresh format or a fresh copy clears up whatever is wrong -- my guess in terms of hardware is maybe like others said 3 prints shook the machine, the difference with triplication is that 2 gantries are involved, and a lot more movement, so whatever wouldn't vibrate the machine on a single or a duplication print, would vibrate it on triplication -- then me taking the card out and re-seating it -- and starting a new print, makes better contacts. I had previously been successful just doing a reset and starting the print on a fresh boot - but that stopped working at some point -- or I stopped trying after 2.5.1 update. I can try to see if I can get more than 3 prints in a row by doing resets between each
-
What slicer are you using to generate the gcode? Can you post a sample?
-
Here is the file
https://www.dropbox.com/s/6myicwelo20mzjd/VisorQUADQuad.gcode?dl=0I just tried printing it -- and there was stuttering and underruns within 20 minutes -- this was after the board was reset (not powered down) using the file that worked fine for the overnight print. I just did a fresh copy of the file. I started the print again -- I saw 22 underruns in the 2nd number after a couple of minutes, but no noticeable stuttering. Not yet. I will keep checking until about an hour in, if it prints stutter free for 45+ min plus, then it will be fine through the course of the 5 hour print -- stuttering due to underruns starts in the first 30-40 minutes if it happens. Never seen it start later than that.
Looks like this print with a fresh copy is working fine (first 22 underruns appear to be innocuous)
-
I know it's not trivial, but is it possible to switch to a slicer other than S3D?
-
@Phaedrux no other slice supports different diameter nozzles for different extruders. I tried setting up in cura recently and that wasn't an option. My startup script uses s3d specific variables for temperature setting. Other slicers are better than s3d on many respects, but s3d is still better at multi extruder setup -- since it can all be done via multiple processes -- so it's still not an option for me.
-
@Phaedrux -- yep, running fine now with a fresh copy. Underruns are not piling up doing fine -- I can check S3D option for decreasing small movements -- not sure if that has anything with what's going on.
-
I suspected as much. S3D can create some odd gcode with lots of small segments sometimes which may be half the problem.
I wasn't aware of the nozzle size limitation in Cura. I was pretty sure it was an option the last time I had multiple extruders setup for the Palette 2.
-
@Phaedrux Palette 2 uses 1 nozzle -- I have palette+. It's effectively a mixing hotend, same prusa slicer -- it's geared for the MMU -- which is still a single nozzle. So there is no reason to specify different sizes for extruders. This has been a limitation since I first tried to use multi extrusion on my maker gear i had a 0.35 nozzle and 0.5 -- and I could only set it up in S3D. There is only a python script that I could that would slim down S3D gcode to avoid unnecessary moves. However -- why is it printing fine and happy now underrun free -- nearly an hour in -- I know this print will succeed. The pain point is 30 minutes in. What's odd to me is the cura is developed by ultimaker and they have the UM3 with their different print cores, and I would think having the ability to use the 2 print cores for different resolution would be something they'd want to be able to do, but I guess they expect you to match print core nozzle diameters.
-
@kazolar said in Duet 2.05 memory leak?:
@Phaedrux Palette 2 uses 1 nozzle -- I have palette+. It's effectively a mixing hotend, same prusa slicer -- it's geared for the MMU -- which is still a single nozzle. So there is no reason to specify different sizes for extruders. This has been a limitation since I first tried to use multi extrusion on my maker gear i had a 0.35 nozzle and 0.5 -- and I could only set it up in S3D. There is only a python script that I could that would slim down S3D gcode to avoid unnecessary moves. However -- why is it printing fine and happy now underrun free -- nearly an hour in -- I know this print will succeed. The pain point is 30 minutes in. What's odd to me is the cura is developed by ultimaker and they have the UM3 with their different print cores, and I would think having the ability to use the 2 print cores for different resolution would be something they'd want to be able to do, but I guess they expect you to match print core nozzle diameters.
Cura should have no issue setting different nozzle diameters, unless I'm completely missing something with your setup. In Cura you can easily set the nozzle diameter for different extruders, and then from there also modifiy extrusion widths.
As an example an IDEX machine with two different nozzles (.4mm and 1mm)
A warning, the two images below aren't a perfect example because of the profile I have set, but it shows what I mean - not only different nozzle diameters configured, but different line widths.
Regarding S3D Processes (I have not used S3D but read about how they work... I think) - you can do similar model manipulations (depending on your job) by changing what parts of a model are made by what extruder, e.g. outer walls with Extruder #1, infill with Extrudr #2, support with Extruder #3, just by using the standard settings. You can also do more advanced modifications with the "Per Model Settings" feature ("Normal Model", "Print as Support", "Modifiy settings for overlaps", "Don't support overlaps").
-
@sebkritikel thanks, will look at it again. It must be a somewhat recent addition. I couldn't do this before -- I'll need to look at it again. Though it seems odd that depending on the time of day random conditions -- this print works or doesn't . Btw -- I am running THE EXACT same print on my modified series 1 (1 extruder) -- running a smoothieboard (azteeg something) -- controlled by octoprint and it runs perfectly fine.
I'm almost thinking I should just ditch duet's native gcode feeder and switch to octoprint. Kinda makes the screen from duet useless. -
@Phaedrux I really don't want to turn this into an S3D vs Cura debate. That never goes well. I've ran this print with no issues 3 times yesterday -- then the 4th had underruns. If it's a hadware fault -- I can swap the duet 2 -- I don't have the time to setup duet 3 now with swapping expansion boards and so on. If this isn't a firmware bug, that's the only answer left. I've gone through 4 SD cards. I'm using a branded sd card now. I don't know what else to do.
-
@kazolar said in Duet 2.05 memory leak?:
S3D vs Cura debate
Not the intention. Just trying to chase things down.
-
@Phaedrux I have approval from my employer (they're sponsoring the costs of producing PPE) to swap the board if that what needs to happen, or go the duet 3 route (they also agreed to cover the cost of that), but that rewire job is not something I am comfortable doing now since it will put the machine out of commission while we still have a significant need for PPE. I've personally produced 810 complete shields -- and our group of 3 printers (people) + 1 logistics person has delivered over 1600 shields together, as you can see I am responsible for more than 50% of our production -- because of the quad (QuadZilla) being able to produce shields in large batches.
If you guys tell me OK -- the board is off warranty we can't offer an RMA, and getting new one will fix it -- I'll place the order to filastruder today -- and get it before the end of the week, and 1 hour rewire I'll be up and running. I'm working from home so going to the basement every few hours to cycle prints isn't critical, but dealing with underrun errors takes more time than i should really be putting in during the day. -
Well we'd certainly like to get to the bottom of this one, and unfortunately that would probably require some more disruptive troubleshooting than would be ideal given the situation.
Please hold off for the moment while we see what we can do.