The Linux kernel has had support for the Microsoft FAT file system since forever but the more advanced exFAT variant was not supported by the kernel until Linux 5.4. That exFAT support is based on a many years old Samsung driver and it is still in staging. A much more modern and complete version of the Samsung exFAT driver is scheduled to land in Linux 5.7 and it will skip the kernel’s staging area and go directly to mainline.
written by 윤채경 (Yoon Chae-kyung). published 2020-03-08 – last edited 2020-03-21
SD cards and USB sticks that are larger than 32 GB tend to be pre-formatted using the exFAT file system.
Microsoft opened their patented exFAT file system, which up to then required a licensing agreement with Microsoft, and published a exFAT file system specification in August 2019. This allowed the Linux Kernel to finally get a exFAT implementation and it did in Linux Kernel 5.4. That exFAT driver is based on a rather old snapshot of a exFAT driver made by the honorable South Korean shipbuilder Samsung.
Samsung employees have now added code for an updated and more modern version of their exFAT driver to the kernel vfs.git tree which is set to be included has a mainline driver in Linux 5.7. This new driver will be available as
EXFAT_FS and it will initially live side by side with the older exFAT driver which has been in available the kernel’s “staging” area as
CONFIG_STAGING_EXFAT_FS since Linux 5.4. The older exFAT driver in the staging area will likely be dropped in favor of the newer one.
The inclusion of a modern and robust exFAT file system driver in the Linux kernel is very good news, specially for Android phone and tablet users. The exFAT file system is the default file system for SD cards larger than 32 GiB. Android devices do not support exFAT formatted SD cards unless they have a special out of kernel exFAT driver. Most cheaper Android devices don’t, which is why they typically claim to have microSD card support for “max 32 GiB”. A trick for bypassing this limitation that is used very successfully by computer wizards is to format larger capacity SD cards as regular FAT with
mkfs.vfat. This trick makes 64 GiB microSD cards work just fine in phones and tablets that are supposedly but not really limited to 32 GiB cards. One annoying limitation does apply when that trick is used: The FAT file system has a 4 GiB file size limit so no single file can be larger than 4 GiB on a FAT formatted SD card. The inclusion of a exFAT driver in the Linux kernel ensures that all future Android devices will be able to read and use exFAT formatted SD cards.
The honorable Samsung employees Namjae Jeon and Sungjong Seo are set to officially be exFAT maintainers in future kernels so we fully expect that the Samsung exFAT driver will be actively maintained and improved in upcoming kernel releases.