prusa3d / Prusa-Firmware-Buddy

Firmware for the Original Prusa MINI, Original Prusa MK4 and the Original Prusa XL 3D printers by Prusa Research.
Other
1.08k stars 213 forks source link

[ENHANCEMENT] Please add exFAT support #3011

Open ShadowDrakken opened 1 year ago

ShadowDrakken commented 1 year ago

Enter what type of printer or upgrade the enhancement applies to. Printer type - MINI+ Optional upgrades - N/A

Is your suggested improvement related to an existing problem? Please describe. Unable to use certain thumb drives, including those with capacities over 32gb and many newer high speed drives regardless of capacity (Samsung 300MB/s 16gb thumb drive in my case).

Describe the expected functionality FAT32 has been deprecated for years and exFAT is the defacto standard for USB thumb drives and SD cards. Please either add support for, or switch over completely to exFAT to be in-line with modern standards.

Prusa-Support commented 1 year ago

Thanks for your suggestion.

The request to expand the compatibility to exFAT surely sounds legit but please allow me to list only a few cons (off the top of my mind).

Abandoning FAT32 shouldn't really be an option a the current time. This said the issue can stay open, but I'm not sure if this request will be implemented (or can be implemented at all).

Michele Moramarco Prusa Research

ShadowDrakken commented 1 year ago

Counter-arguement:

exFAT has lower memory usage and higher performance than FAT32. exFAT does not require special 3rd party tools to format oversized flash cards as FAT32 does. (Windows exclusive problem, unfortunately) exFAT is explicitly designed for Flash devices, helping to extend the lifespan of the flash memory. exFAT uses scalable cluster sizes instead of fixed cluster sizes, meaning less wasted space (granted, this is a minor issue most people will never see much benefit from) exFAT supports pre-allocation to prevent fragmentation, which helps extends the life of the flash card.

ZATGamer commented 1 year ago

@Prusa-Support your cons are short sighted.

Adding support for another file system expands the capabilities of the printer. Makes it more user friendly. Having a non technical savvy user try to format a 64GB USB Drive they probably have laying around is a frustration for that user. And then they will have a negative experience using your printers.

Another use case you don't even consider are users like me that never delete anything. And with Prusa Link on the Mk4 I want to put 1 USB drive in and forget about it. Only ever using Slicer or Prusa Link to upload files to it. I also have a large collection of production files that I keep on the printers.

Is 64GB ridiculous to put on a printer. Sure. But I got a 64GB short profile stick (SanDisk Ultra Fit) that was less cost than what the 16 or 32GB counterparts form a reputable company (SanDisk). And I was frustrated that It didn't just work.

None of your cons that you listed are technical limitations of the hardware. In fact I would argue that none of them are cons, they are all excuses. Adding support is good for your user.

Prusa-Support commented 1 year ago

I see. I think everyone can agree that exFAT has numerous advantages in general. Sorry, I never mean to say FAT32 is better, but probably most suitable for this use. I didn't mean that exFAT should not be implemented either. I was trying to find realistic goals for escalating the request, and I'm terribly sorry for the misunderstanding.

I didn't expect it to extend the flash drive lifespan. Maybe that applies when compared to NTFS? However, if so, that may be one good point. 🙂

Not sure how soon 32GB could be fully filled up with g-code files in your case, but it would take a relatively long time for average users. Loading many files and forgetting could also be a point though. 🙂

Lastly, my points clearly are not technical limitations. Whether there are technical limitations or not is unknown to me at the moment. That will be up to the developers.

I hope this clarifies and the issue will stay open for our developers to look into it.

Michele Moramarco Prusa Research

cb88 commented 1 year ago

Obviously exFAT is better... but given that the USB drive I print off lives with the printer and isn't one I use for other purposes... there is really no reason to implement more than one filesystem as long as that filesystem works on a broad range of operating systems, and FAT satisfies that.

Adding exFAT increases the maintenance burden on the developers. And would take up extra space on the firmware image, because its a completely separate filesystem from FAT not a simple modification to improve it.

I'd rather they work on must have or annoyance bugs that I have been waiting for them to fix for years... Rather than things I can work around with a simple reformat.

ShadowDrakken commented 1 year ago

there is really no reason to implement more than one filesystem as long as that filesystem works on a broad range of operating systems, and FAT satisfies that.

Except FAT32 does NOT satisfy that. Windows holds nearly 60% of the market share, and to use FAT32 on anything but the smallest thumb drives requires third party tools. That's a hassle and can be a risk if a person doesn't know what to get and just grabs some random program from a shareware site that's almost guaranteed to contain malware.

Why force users to hunt down 3rd party utilities? There's no reason to maintain FAT32 at all, drop THAT support and use exFAT INSTEAD.

cb88 commented 1 year ago

Except that isn't true at all. 16GB flash drives are cheap as chips and vastly larger than will ever be needed on current generation 3d printers. Windows 11 formats them as fat32 just fine from the format menu. If you are buying a larger flash drive you just wasted your money.

Why force developers to develop something that is completely unnecessary. And they ship these printers with USB drives anyway!

Also larger drives can still be formated... with the built in utilities such as drive management snap in, or from the format command line utility, its just the default format menu that doesn't allow this.

The reason to maintain FAT32 is... it works today, requires zero development to continue working, which means developers can work on more important things. At the rate things are going FAT32 will still be around in another 20 years. Also AFAIK exFAT requires licensing to implement (with murky exceptions for OIN / Linux etc... but others likely require licensure)... which is a complete non starter. Implementing it in a commercial product without licensing would open up Prusa to lawsuit from MS.

ZATGamer commented 1 year ago

@cb88 your concern is about dev time. I think the devs can decide for themselves what they want to work on. Stop telling us its not needed. I clearly have a need for it and if they want their printers to be truly user friendly its a valid request.

Another idea is to give the Printer the ability to format the card. As long as I can use the full size of my USB Drive I plug into the device, I really don't care what file system it is. I just want to be able to upload from slicer or PrusaLink API and never put the USB Drive into my computer.

And don't bother telling me 64GB is ridiculous, you don't know what I do or how I use the printers.

ShadowDrakken commented 1 year ago

16GB flash drives are cheap as chips and vastly larger than will ever be needed on current generation 3d printers. Windows 11 formats them as fat32 just fine from the format menu. If you are buying a larger flash drive you just wasted your money.

Just because YOU don't need it, doesn't mean others don't. I already had to swap out to a larger one because the 16gb that came with the Mini was full, and I have reasons for keeping the files on the thumb drive. Some of us use these printers for more than just hobby space.

ShadowDrakken commented 1 year ago

The reason to maintain FAT32 is... it works today, requires zero development to continue working, which means developers can work on more important things. At the rate things are going FAT32 will still be around in another 20 years. Also AFAIK exFAT requires licensing to implement (with murky exceptions for OIN / Linux etc... but others likely require licensure)... which is a complete non starter. Implementing it in a commercial product without licensing would open up Prusa to lawsuit from MS.

exFAT is also stable and complete. No further development would be needed there either. And the patents and licensing for it has fully expired.

cb88 commented 1 year ago

16GB flash drives are cheap as chips and vastly larger than will ever be needed on current generation 3d printers. Windows 11 formats them as fat32 just fine from the format menu. If you are buying a larger flash drive you just wasted your money.

Just because YOU don't need it, doesn't mean others don't. I already had to swap out to a larger one because the 16gb that came with the Mini was full, and I have reasons for keeping the files on the thumb drive. Some of us use these printers for more than just hobby space.

Format your larger drive as FAT32 ... its not difficult at all and does not require 3rd party tools. Fat32 supports up to 2TB still. The patents maybe expired but licensing is not... so unless you want to write your own and waste more developer time you need to use licensed code. The licensing situation on exFAT is very complex any company in the open invention network can use it eg, Linux however Prusa is not part of that AFAIK.

ShadowDrakken commented 1 year ago

Format your larger drive as FAT32 ... its not difficult at all and does not require 3rd party tools. Fat32 supports up to 2TB still.

Just ignoring that Windows doesn't have a built-in way to do this? Neither the GUI, nor the command line will allow it. Goes back to my previous posts that you're ignoring. You're just arguing to argue at this point.

neophyl commented 1 year ago

Not arguing either side here as I don't really care but the last post seems to read that windows default wont/cant format a usb drive to Fat32 ? All the windows machines I have access to (work /home) so ranging from an old Win7 machine to win10 all have options for NTFS/FAT/FAT32 and the windows 10 one I looked at also had exFAT. That was with the right click>format option.

In fact FAT32 was the default type for the USB stick I happened to have in the machine at the time.

I would expect any of the operating systems on a full desktop computer to be able to format in any of the file systems.. However I do know that for embedded systems (which we develop where I work) you do have to use licenced libraries to support exFAT. That's with the STM processor based boards we use. I vaguely recall reading ages ago that the Buddy type boards use the same family of processors.

ShadowDrakken commented 1 year ago

I would expect any of the operating systems on a full desktop computer to be able to format in any of the file systems.. However I do know that for embedded systems (which we develop where I work) you do have to use licenced libraries to support exFAT. That's with the STM processor based boards we use. I vaguely recall reading ages ago that the Buddy type boards use the same family of processors.

Windows can read FAT32 of any size just fine, but it can't format FAT32 over 32gb without 3rd party tools. (additional info here from the creator himself: https://www.youtube.com/watch?v=bikbJPI-7Kg )

Licensed libraries are not needed for exFAT, and haven't been for some time now. exFAT has been available in Linux since 2009, with GPL drivers since 2013, and Microsoft officially put exFAT into public domain in 2019. Linux has had exFAT support natively built into the kernel since 2019 as a result. It actually takes effort NOT to support exFAT at this point.

Prusa-Support commented 1 year ago

Thank you all for your input. There are surely good insights from all sides, your comments are valuable to us.

The issue will stay open as inspiration for further developments. Our developers and collaborators will make their considerations about it.

Michele Moramarco Prusa Research

jmckeown2 commented 11 months ago

From a brief perusal of the sources, It seems like Buddy is getting its FAT32 (and lack of exFAT) support via inclusion of the TinyUSB library.

I find nothing on their issue tracker to indicate exFAT support is even on their radar. Perhaps filing the Enhancement request with TinyUSB would yield more satisfaction? If THEY add exFAT support upstream, then "pull the latest version" is a much more reasonable request for Prusa Devs.

cplumb commented 8 months ago

Relevant forum post seems to suggest this might be able to be enabled via a config change in the firmware

https://forum.prusa3d.com/forum/postid/670853/

farchord commented 5 months ago

Yeah I landed on this myself. I got a new MK4 as-of late last year, and I love it, but I essentially have to scan/repair the USB drive every 2-3 weeks as errors crop up on the partition. Heck, at one point I even had to delete the partition completely and redo it, as even Linux had a hard time figuring out what even was on that partition.

parport0 commented 4 months ago

Does it mean that this is just a matter of setting FF_FS_EXFAT to 1 in include/buddy/ffconf.h?

Prusa-Support commented 3 months ago

I got confirmation that theoretically, this file system can be enabled on the printer but also that theoretically, this will bring no real benefits to the printer itself - I'm still unsure.

The only technical potential limitation is that larger-size USB flash drives are often not adequately tested on 1.0 USB ports by the manufacturers, and there is a chance that this may affect the data transfer and the flash drive lifespan negatively. However, this is mere speculation.

Our developers will consider testing larger storage USB flash drives and the exFAT file system in the future.

Michele Moramarco Prusa Research

ShadowDrakken commented 3 months ago

this will bring no real benefits to the printer itself

It's a UX / QOL thing. Windows especially makes it difficult to use larger SD cards with FAT32 for various reasons. exFAT was developed to address the problems that come with large capacity flash media

and there is a chance that this may affect the data transfer and the flash drive lifespan negatively.

That shouldn't be the case, part of the reason for exFAT is that it extends the life

github-actions[bot] commented 1 month ago

This issue has been flagged as stale because it has been open for 60 days with no activity. The issue will be closed in 7 days unless someone removes the "stale" label or adds a comment.

mitchellj commented 1 month ago

Came here to add frustration on the lack of support for modern filesystem types. More and more machines are appearing with USB C only support - there are lot of "transitionary" USB Keys on the market that support both USB C and USB A connectors on a single key - however the majority of them are >32 Gig - yes you can still get them but why buy specifically for a single device when you can buy one that can be used for multiple environments not just for PRUSAs lack of (modern) standards support.

I don't think anyone is saying drop FAT32 support - but adding exFAT support as well instead of adopting the "if it is still kind of working and causing inconvenience lets ignore the issue".