Switching SD cards from exFAT to FAT32 format

Before receiving my Fujifilm X100S I bought a Sandisk UHS-1 64GB rated for 95MB/s. After unboxing the X100S I immediately formatted the card within the camera, took some shots and removed the card to view the pictures on my PC. I was surprised to see that my ArchLinux machine couldn’t read the card out of the box. I then discovered that the X100S formats the at least the 64GB cards with exFAT filesystem while using the regular FAT32 for smaller cards such as 16GB (haven’t tested 32GB yet). After installing two packages on my Linux machine I was able to read the card but this made me look at this so called exFAT filesystem. After reading about the exFAT limitations I decided to re-format my 64GB SD card with FAT32 for better robustness and interoperability.

Why exFAT?

Some of the advantages of the exFAT can be found here: https://en.wikipedia.org/wiki/ExFAT.

When applied to the X100S I can only see two advantages:

  • Supports files bigger than 4GB. Well, not that critical for the X100S considering that video sequences are limited to 10 minutes.
  • Better allocation of free space.

Why you don’t want exFAT?

  • Patent bloated. Official specification is not publicly available
  • Limited support outside Windows and Mac OS X. Needs additional user space modules on Linux (cannot be part of the kernel).
  • Random compatibility with reading devices such as multimedia players, TVs, picture frames, entertainment systems found in planes and many other electronic gadgets capable of reading pictures.
  • Less robust because of the single file allocation table where FAT32 stores a backup copy for recovery. IMHO, this is a step backward. Moreover, there are many more (free) recovery tools for FAT32 partitions than for exFAT.

What to do then?

The simplest workaround is to re-format the 64GB card with FAT32 rather than exFAT. The bad news is that you can’t do it within the camera. It has to be done on a PC.

How to format a 64GB card with FAT32?

While Windows can read and write FAT32 formatted devices of pretty much any size, its built-in format tools doesn’t support card larger than 32GB.

I found the following command line to do it manually but it took ages to complete (no quick format) and I couldn’t specify the allocation unit size. Format /fs:FAT32 driveletter:

There is much faster and simpler way to do it with the following GUI tool: http://www.ridgecrop.demon.co.uk/guiformat.htm

The GUI is fairly simple and the only thing you need to select is the target drive and allocation unit size. I selected 32768 for the Allocation unit size and thus in order to match what is done on a 16GB card formatted by the X100S it self (FAT32). I also left the volume label blank. Lastly you can safely click on Quick Format as well to speed things up.

I used this tool under a Windows XP virtual machine running on Linux and it worked fine.

For information, there is a simple trick to check the allocation unit size on an already FAT32 formatted card by using the defrag tool found in Windows 2K/XP by right clicking on the drive letter, then click on Properties and select the Tools tab and then click on the Defragment Now button, then Analyze and finally click View Report to check the cluster size.

What’s next?

I have tested this setup on my X100S and didn’t notice any issue nor speed impact. If you want to stick to FAT32 on your 64GB card then you will always have to format the card with a PC rather than a camera but that shouldn’t be a big deal.

Share Comments
comments powered by Disqus