Introduction: Mounting a USB Thumb Drive With the Raspberry Pi

About: Scott Kildall is an new media artist and researcher. He works at Autodesk, Pier 9 and is an artist-in-residence with the SETI Institute
This is another one of my "meat-and-potatoes" Raspberry Pi Instructables.

What this Instructable will show you how to do is to configure your Raspberry Pi to recognize and automatically mount a USB thumb drive. This is especially useful for exchanging files, running backups and using your Pi as a media device.

Before doing this Instructable, please make sure you have your Raspberry Pi up and running, which you can do with The Ultimate Raspberry Pi Configuration Guide Instructable.

I'm using the Mac OS for this guide, but you can extend the principles to other operating systems.

Step 1: Format the Thumb Drive

Using Disk Utility, format the thumb drive as an MS-DOS (FAT) volume, which is a format that the Pi can easily recognize.

Step 2: Run Package Updates

I'm using ssh to access to Raspberry Pi. My IP address for the SD card for this is 10.0.1.62. Your IP address may be different — just change the address accordingly.

Open the Terminal window and on the command line, type:
ssh pi@10.0.1.62

If you are running directly hooked into the monitor, you can skip this step.

Run the latest package update and upgrades, just to make sure everything is current — you will have to have wifi access for this step.

First the update:
sudo apt-get update
Then the upgrade:
sudo apt-get upgrade
You'll see a spool of package updates, which will take several minutes.

Step 3: Set Up a "mounting Point" for the USB Drive

Now, unplug your USB power cable. Put the formatted USB drive into the Raspberry Pi. And turn the Pi back on.

I'm not sure if this matters, but I always leave the wi-fi dongle in the lower USB port and use the upper one for the external USB drive/keyboard/other things.

Wait a few seconds and then ssh back into the Pi.
ssh pi@10.0.1.62
What we then type in;
mkdir usbdrv
What we are going to set up is a mount point — a way to always map this directory to the USB drive.

now, type in:
sudo blkid
check out output — we are looking for the USB drive device info, which is easy to identify because we called it GITPI when we initialized it.

Mine reads:
/dev/sda1: LABEL="GITPI" UUID="6D34-1514" TYPE="vfat"

This should be the similar on yours: /dev/sda1 is the USB thumb drive device.

Now, we are going to edit what is called the file systems table to make the USB drive map into the usbdrv directory

Type in:
sudo nano /etc/fstab
Here is the tricky part. We are going to modify the fstab file so that this device maps to the usbdrv directory.

add the line to the end of the file (you can copy and paste this line)

/dev/sda1        /home/pi/usbdrv       vfat    uid=pi,gid=pi,umask=0022,sync,auto,nosuid,rw,nouser 0   0

important: this is 1 line, not broken up over two lines  (the Instructable is doing weird things to the formatting).

What this does is to map the /dev/sda1 device — any thumb USB drive to the usbdrv directory. The flags are ones that I cribbed from the Thomas Loughlin guide. Admittedly, I'm not sure exactly what they do, except for allow the drive to be a read-write drive and not tied to a specific user.

Cntl-X, Y, Return to save.

Then restart:
sudo reboot
If you want to learn more about drive-mapping and mounting (and I'm sure you do) this eLinux Guide has a lot more information.


Step 4: Test It

After you've rebooted and have gotten back into the pi via ssh, navigate to your usbdrv directory:
cd usbdrv
create a simple text file
sudo nano test.txt
in the editor type in whatever you want — any sort of text message.

Cntl-X, Y will save it.

Turn off the power to your Pi and pull out the USB drive.

Check out the USB drive on your computer and it you should see your text file there.

Step 5: Extras: Unmounting and Mounting From the Command Line

I usually just yank the drive out and then reboot the Pi, as needed, but you may find yourself in situations where you don't want to do this.

If you want to "eject" your drive, like you would on the Mac, you need to issue a command to unmount the drive.

It looks like this:
sudo umount usbdrv
if you want to remount it, i.e. put another drive in, since there is no mounting point setup, you have to use the device info, with the command
sudo mount /dev/sda1

Step 6: Done!

It's that easy. This is a super-short Instructable.

I hope this was helpful!
Scott Kildall

For more on Raspberry Pi code and other projects, you can find me here:
@kildall or www.kildall.com/blog