Aug 202012

exFATMost of us will know the Microsoft FAT16 and FAT32 filesystems that have been in use most prominently with Windows 9x/Me operating systems, and if you’re an old guy you might also know FAT12 used for floppy disks. Today, the former two are still widely used to exchange data between heterogenous operating systems (Windows/Unix/Linux/MacOS/BSD..) and also to exchange data between computers and media devices such as digital cameras, music players, cellphones etc. But the formatters of Windows usually don’t allow the formatting of storage devices larger than 32GB with FAT32 (although it’s possible and also readable in Windows). Also, FAT32 has harsh limitations in the regards of maximum file size (4GB) and access control lists (none).

Hence, FAT64, or “exFAT”. Why is this even important you might ask? Because the file system is in the specification of SDXC and MSXC flash cards used for cameras and camcorders, as well as many other devices like set-top boxes. Not that you couldn’t format it with something else on Linux, but spec is spec.

So I tried to get exFAT to work on Windows XP Professional x64 Edition using Microsofts official update [KB955704], which is available not only for XP x64, but also regular XP, Server 2003 and Server 2003 for IA64/Itanium. I first tried it with a 1GB flash card, a Sony MemoryStick actually, and with a 120GB USB HDD, which showed a little problem appearing with NTFS format options when this update is installed. Also, the announced ACL support seems to just not be there with this update. There are no security-related options at all.. See a series of screenshots with exFAT in use:

So there you can see, that the NTFS option disappears for a removable USB HDD larger than 32GB as soon as exFAT is installed. Previously, FAT32 wouldn’t be allowed, so Microsoft simply had to make NTFS available for such a drive as the single remaining FS. Now that we’ve got exFAT, NTFS is forbidden, even on the console with format.exe! Well, almost forbidden. They haven’t thought it all the way through though, so you can still do an NTFS format in disk management in the administrative tools. There, you’ll never see any exFAT option anyway, it’s simply not implemented. Talk about consistency, eh? For large fixed disks, as also shown in the screenshots, both NTFS and exFAT are now available.

Now the other problem is that while files >4GB now work perfectly fine due to 64-Bit address space (which is very good!), the announced ACL support is obviously not implemented here. You can’t set an owner, you can’t set read/write/execute permissions or anything. In that case it behaves just like any FAT on Windows would, which is a bit disappointing. It might be, that if you connect an exFAT volume with ACLs to such a machine, the exFAT kernel driver would just silently ignore all kinds of implemented ACLs, like a cracked driver.

At least, with this driver you will get support for all new flash card formats, so if you want to go on with XP or XP x64, you can still use your fancy new cameras SDXC or MSXC card without having to play tricks on it and format it with FAT32 outside of Windows. That alone is nice enough I have to admit! And it’s even an official driver from Microsoft, not some Panasonic or Matsushita 3rd party driver like with the UDF 2.5 filesystem for Blu-Rays!

I also got this to work on CentOS Linux now, using the fuse system (user-space fs driver). To build fuse-exFAT, you need GCC, scons, fuse-devel/libfuse-dev and subversion. You can get the driver and utility sourcecode [here], along with some binaries for a few systems .