Issues trying to print large GCode Files - Duet 0.8.5
-
Hi All,
I have recently had issues when trying to print any GCode files over ~70Mb, they will upload to the webinterface fine, but then when trying to load from the G-Code files page the printer will timeout and disconnect. Files 60-70Mb will be printable but display no Object/Layer Height or Filament usage stats.So far I have tried:
- Copying manually over USB
- 3 Different SD cards
- 2 Different slicers
- Upping max AJAX retries to 10
- Updating from 1.19 RepRap firmware / WebInterface to 1.20 and trying the above again.
Only change in all this was moving from AJAX error 'timeout' in 1.19 to Request Timeout 'The last HTTP request has timed out.' in 1.20
My Printer setup is Think3dPrint3d mini Kossel, with Duet 0.8.5 board connected via ethernet.
Any help or pointers would be greatly appreciated!
-
What I think is happening is that your SD card is formatted using a small cluster size and/or it is highly fragmented. The FAT format is terrible for random access to large files. When DWC tries to read near the end of the file to extract information from the file, it has to read the entire cluster chain for that file. Large clusters and high fragmentation make this very slow.
What I don't yet know is whether it take just a single read near the end of the file to cause the timeout, or multiple reads. If it takes multiple reads, then we can cache the cluster map to speed up the second and subsequent reads.
On my test machine I can transfer 90Mb files with no issues.
For now, your best option is to format the SD card with a larger cluster size, if possible.
-
Thanks for your reply, I've reformatted the SD with a 32kB cluster size, this seems to have improved things a little with files 60-~95Mb now being printable without Object/Layer Height or Filament usage stats, but anything over that still resulting in a crash.
Given the models I would like to print are ~200Mb when sliced at 0.2mm is there any other approach you could recommend. i.e using printing direct from PC, rather than through DWC?
-
On one of my systems I have tested up to 96Mb files with no issues. The file info is also correct. I have just checked the cluster size on the SD card, and it is 64Kb.
I will do some tests on large files and see what I can implement in the next 1.21RC. At worst we can skip trying to get file info from the end of the file, if it is over a certain size.
-
Did a little more playing around with SD cards, by swapping to a sandisk extreme 32GB card (from the 4gb class 4 one T3DP3D sent) and 64Kb clusters I can now load files upto ~100Mb fine, and files 300Mb+ look to be printable albeit without stats.
I'll look out for any changes in RC 1.21, Many thanks for you help!