In this Raspberry Pi exFAT guide, we will be showing you how you can enable support for the exFAT file system format on your Raspberry Pi.
For those who do not know, exFAT (Extended File Allocation Table) is a proprietary file system format developed by Microsoft, and is designed to be optimal for flash memory such as USB flash drives and SD cards.
Due to exFAT being patented by Microsoft it cannot become an official part of Linux despite a kernel implementation being released by Samsung. Due to this limitation, we must implement support for the exFAT file system another way.
This limitation is where the FUSE kernel implementation comes in handy. FUSE will allow us to implement support for the exFAT format without having to recompile the kernel.
There are many reasons why you might need to enable exFAT support on your Raspberry Pi. For example, you might need it for when you set up a Samba server with the Raspberry Pi. You may also need it for other projects such as running Owncloud or basically anything that may require removable media.
Equipment List
Below are all the pieces of equipment that I made use of for this Raspberry Pi exFAT tutorial.
Recommended
- Raspberry Pi ( Amazon )
- Micro SD Card ( Amazon )
- USB Drive ( Amazon )
- Ethernet Cable ( Amazon ) (Recommended) or Wi-Fi ( Amazon )
Optional
- Raspberry Pi Case ( Amazon )
Adding Support for exFAT
1. Before we get started with adding support for the exFAT file system to our Raspberry Pi, we must first ensure that our Raspberry Pi operating system is completely up to date and has the latest package list.
To update the Raspberry Pi and grab the package list we need to enter the following two commands into the terminal. You can do it by either using the terminal on the Pi itself or over SSH.
sudo apt update
sudo apt upgrade
2. Now that we have updated the Raspberry Pi and have grabbed the latest package list we can now install the packages we need.
To enable support for the exFAT file system on the Raspberry Pi, we will need to utilize two particular packages.
The two packages that we will be installing to the Pi is exfat-fuse and exfat-utils. These two packages work together to allow the operating system to talk to hard drives that are in the exFAT format.
Exfat-fuse
works as a module to FUSE (Filesystem in Userspace) software system that allows the Raspberry Pi OS to mount and interpret exFAT drives without requiring extra privileges.
FUSE acts as a bridge between the kernel and userspace to allow developers to add support for additional file systems without having to release a customized kernel.
Additionally, thanks to FUSE being baked into the Raspberry Pi OS kernel we are not required to install any special kernels to add support. This makes this Raspberry Pi exFat tutorial a lot easier.
Exfatprogs
provides all the utilities that you need to be able to deal with the exFAT format, including the ability to format drives on your Linux devices.
To install these two essential packages, we need to enter the following two commands into the terminal.
sudo apt install exfat-fuse
sudo apt install exfatprogs
Mounting an exFAT Drive Manually from Terminal
1. While Raspberry Pi OS should automatically detect and mount your exFAT drives after installing the previous two packages, there may be a time where you have to mount it manually.
Mounting an exFAT drive can’t be done in the same way you would mount any other partition. Instead, you will be utilizing the “-t exfat
” argument to tell the mount command to recognize the file system as exFAT.
To begin, we must first create a folder where we will mount our desired drives. For our tutorial, we will be just calling this folder exfat.
Create this new exfat folder by running the following command on the Raspberry Pi.
sudo mkdir /media/exfat
2. With the folder now created we need to mount a drive. In our example below, we have already found where our device is located, in our case, this is “/dev/sdb1
“.
To mount the device to the folder we created in the previous step, we need to utilize the following command. We need to reference the SD Card location, the folder location and that we want to utilize exFAT.
sudo mount -t exfat /dev/sdb1 /media/exfat
3. You should now be able to interact with your device at the “/media/exfat
” location.
Automatically Mounting an exFAT Drive
1. If you wish to have the drive automatically mounted at boot, then you need to edit the fstab file. Make sure you back up this file as mistakes may cause your Pi to fail when booting.
You can find the fstab file at the following location.
sudo nano /etc/fstab
If you’re unsure of what to add then check out the tutorial on mounting a USB drive. Just make sure you specify exfat as the file system.
Below is an example of an exFAT fstab entry. You can find the UUID by using the “sudo blkid
” command.
UUID=CA1C-06BC /media/exfat exfat defaults,auto,umask=000,users,rw 0 0
Formatting a Drive as exFAT
1. If you want to format your drive in the exFAT format, then you can do this by utilizing a piece of software that came in the “exfatprogs
” package.
This piece of software is called mkfs.exfat, to use it you need to specify a drive location as we have shown in the command below.
mkfs.exfat /dev/sdb1
Once this command has finished your drive will now be formatted exFAT. Keep in mind that formatting a drive will erase anything on it.
We hope by the end of this Raspberry Pi exFAT tutorial you should now be able to successfully utilize exFAT formatted filesystems on your Raspberry Pi. If you have any thoughts, feedback or anything else then be sure to leave a comment below.
I receive an error when trying to install exfat-utils:
E: Package ‘exfat-utils’ has no installation candidate
I also see package in no more available by the link: https://packages.debian.org/stretch/exfat-utils – so this article is outdated?
Can somebody suggent me what to do to support exFAT on raspi (I’m using Pi 4 with Pi OS Lite 64-bit relased 2023-12-11)
Hi stseraf,
Thank you for the heads up. At some point it looks like the “exfat-utils” package was renamed to “exfatprogs”.
I have quickly updated the tutorial to reflect this change.
Kind regards,
Emmet
The FUSE exFat driver feels like a terrible mess to me right now… Especially on low powered devices like the Pi family…
The CPU overhead during file transfers is so high that it will max out the CPU on a Raspberry Pi 4… The OS was just etched to the card, and then upgraded with the latest packages..
Then I installed exfat-utils and exfat-fuse..
Then I did a reboot before mounting the drive and started testing…
CPU load bounced wildly up and down between 100% and 65% on all CPU cores and that slows everything down even more…
Is this still an issue?
Hi Louie,
Unfortunately this will always be a potential issue with the FUSE-exfat driver just due to the way it works.
Cheers,
Emmet
Hi,
There’s an error in the second chapter : the first package to install isn’t fuxe-exfat but exfat-fuse.
Regards.
Thank you for pointing that out! We have fixed the naming, so it is now correct.
Hey, I was having trouble here:
sudo mount -t exfat /dev/sdb1 /media/exfat
, I kept gettingfuse: device not found, try 'modprobe fuse'
Turns out my raspberry pi kernel was an older one.
To update my kernel:
(https://www.raspberrypi.org/documentation/linux/kernel/updating.md)
Then
reboot
.After that I was able to mount.