Raspberry Pi NTFS: Adding Support for NTFS File System

In this Raspberry Pi NTFS guide, we will be showing you how you can add support for the NTFS file system to your Raspberry Pi.

Raspberry Pi NTFS

While the Linux Kernel has some NTFS support, it is strictly read-only access. This read-only means that we have to install a separate userspace driver to be able to write to the NTFS drives.

For those who do not know, NTFS (New Technology File System) is a proprietary file system developed by Microsoft to supersede both FAT (File Allocation Table) and HPFS (High-Performance File System).

It is used by the Windows operating system quite extensively, and large external hard drives often come pre-formatted as NTFS. For this reason, it is one of the best file systems to get up and running on your Raspberry Pi.

I found that when setting up some network attached storage, I needed to have this file system installed as my external drives were formatted in NTFS.

We also have a guide on adding support for exFAT on the Raspberry Pi so be sure to check out that guide if you also need the exFAT file system.

Equipment List

Below are all the pieces of equipment that I made use of for this NTFS on the Raspberry Pi tutorial.

Recommended

Raspberry Pi 2 or 3

Power Adapter

Micro SD Card

USB Drive

Ethernet Cord (Recommended) or Wifi dongle (Pi 3 has Wifi inbuilt)

Optional

Raspberry Pi Case

Adding support for NTFS

1. Before we install the package that we need to enable support for the NTFS file systems we need first to update Raspbian and its package list.

To update the Raspberry Pi and its package list we need to run the following two commands within the terminal.

sudo apt-get update
sudo apt-get upgrade

2. With our Raspberry Pi now up to date, we can proceed to the next step of installing the package that we require to enable support for the NTFS file system on the Pi.

To enable support for the NTFS file system, we will have to make use of a package designed for a piece of software called FUSE.

For those who do not know what FUSE is, it is a bridge between the kernel and the userspace. This bridge allows developers like Tuxera (The developer of NTFS-3G) to implement a new file system without having to have it baked in the Kernel itself.

Best of all FUSE makes it dead easy for the end user to add support, as you will see shortly we need to download a specific package to add support for the NTFS file system.

To add support for the NTFS file system to our Raspberry Pi all we need to do is enter the following command into the terminal to install the NTFS-3G package.

sudo apt-get install ntfs-3g

3. With the NTFS-3g package now installed to the Raspberry Pi, it is now ready to accept NTFS drives.

Since the kernel already had read-only support for the NTFS file system, there is a chance that they may already be mounted to your Raspberry Pi.

The operating system will automatically try to detect any NTFS drives when they are connected and utilize the NTFS-3g FUSE driver that we just installed to interact with it.

To ensure that the operating system chooses the correct driver to read your NTFS drives that are currently plugged into your device, you may have to unplug them and plug them back in.

Doing this will force the kernel to have to re-evaluate the partitions and choose the correct file system driver.

We hope by the end of this Raspberry Pi NTFS tutorial you can utilize NTFS formatted file systems on your Raspberry Pi. If you have any thoughts, feedback or anything else, then be sure to leave a comment below.

4 Comments

  1. Yan on

    This is very good post. Thanks.

    I have installed pi4 this week. I have done some testing with Seagate 2T USB disk connected on USB3.0 port. I enabled SMB on PI4, then copy a large file from win10 to Seagate on PI4 back and forth.

    when copy a large file (3.5GB) from win10 to PI4, the speed is about 30~35MB/s while the process mount.ntfs takes 80% cpu usage on PI4
    when copy a large file (3.5GB) from PI4 to win10, the speed is about 75~100MB/s while the process mount.ntfs takes about 55% cpu usage on PI4.

    I would wonder why writing to Seagate is much slower than reading from Seagate via USB3.0 port, Is there any way to optimize the NTFS writing? I assume that CPU is the limitation, but I could be wrong.

    Cheers.
    Yan

    1. Emmet on

      Hi Yan,

      Glad to hear that the post has been helpful for you.

      Yes, I think you are correct with saying that the CPU limitation is to blame for the slower write speeds to the Raspberry Pi.

      The implementation that we are relying on can be very CPU heavy.

      Cheers,
      Emmet

  2. Marmite Sandwich on

    Very useful post. I have seen references to ntfs performance issues with RPi, although they may be old. Is there any truth in this, or is it something that has been cleared up?

    1. Emmet on

      Hi Marmite,

      Since ntfs-3g is a userland implementation of the NTFS protocol it will be by its very nature be more performance hungry when compared to file formats that are supported within the kernel itself.

      While this isn’t as much of a problem with computers with a powerful enough CPU, the ARM processor featured on the Pi’s will become a limitation.

      It’s performance on the Pi 3 and Pi 4 should be decent, but I haven’t had the chance to test this thoroughly.

      Cheers,
      Emmet

Leave a Reply

Your email address will not be published. Required fields are marked *