DIY Portable Photo Backup Device
Find out how to make your own backup device for your photos using a Raspberry Pi. This compact and light-weight device packs a lot of the same features other commercially-available products have but for a small fraction of the price.
If you want to know more about other commercially-available options, you can read my Portable Photo Backup Options for Travelers post.
Before we start, I want to send a big shout-out to Dimitri Popov for putting together a series of scripts called the Little Backup Box. His backup scripts pack a lot of features, including some features I will probably never use, like DNLA and file sharing. He also made his script super easy to install. Again, a big shout-out.
Parts List
- Raspberry Pi Zero W (or any other Raspberry Pi device) – $10.00
- Zero4U USB Hub with pogo pins (if using the Pi Zero) – $9.95
- Micro SD card – $8.00
- Memory card reader – $10.00
- Large capacity thumb drive – $37 (256GB); $19.00 (128GB)
(links to purchase all parts at the bottom of this article)
Notice that I am not including a power source in the parts list. I will be using the same power bank I use as a backup charger for my mirrorless camera.
I’m using a Raspberry Pi Zero W and a USB hub but this setup works with any other Raspberry Pi model out there. You will see in my tests that the transfer speeds on the Pi Zero are acceptable but far from resembling anything considered “fast”. If speed is critical to you, consider using the newer Raspberry Pi 4. The Pi 4 not only has more processing power but it sports 2 USB 3.0 connections, which can, theoretically, speed up the transfer process considerably.
The Zero4U USB hub will work as a convenient way to plug in both a storage device (high capacity pen drive) and a memory card reader. I recommend buying a pen drive that is considerably larger (capacity) than the memory card(s) you use in your camera. The last thing you want is to run out of backup space during a trip. For instance, I bring a Canon EOS RP and a GoPro HERO 6 on my travels so I accounted for the capacity for all the memory cards I bring along with me for both cameras.
Building the Device
First and foremost, there is no soldering involved in this project making it less intimidating for first-time DIYers. Although I consider this project to be on the easy side of things, this is still a DIY project and it might require some troubleshooting skills if things don’t go according to plan.
If you are building this device with something other than a Raspberry Pi Zero (W), you can skip step number two.
STEP 1: The Brains and the Heart
Head over to the Raspberry Pi foundation website and download the latest Raspbian image. Raspbian is the operating system (OS) that will turn the two lifeless circuit boards into a gadget. I recommend downloading the “Lite” version of the OS but feel free to download the “Desktop” version if you plan to also use the backup device as a mini-computer.
After you download the OS, it’s time to burn it to the micro SD card. The third step is to enable SSH and configure the WiFi connection. Finally, we’ll turn the Raspberry Pi into an Access Point (AP) so we can connect other devices directly to our backup gadget. I could explain this process at length but I’m just going to direct you to other online resources that do a good explaining the process:
- Download the operating system
- Install the image on the SD card
- Add SSH and edit WiFi Settings
- Boot up the device for the first time
- Connect remotely using an SSH client and install little-backup-box
- Turn on AP mode (don’t follow any steps after “Add routing and masquerade”)
STEP 2: Sandwiching Things Together
Sandwiching the Raspberry Pi and the Zero4U USB hub is as easy as building legos. Line up the two pieces together making sure that their “backs” are facing each other (both the Pi and the Zero4U USB ports should be facing out). The pogo pins on the Zero4U hub will establish data and power connections between the Pi and the USB hub. Put the plastic screws and the spacers that came with the Zero4U board and tighten them by hand. No need to use tools here but make sure the two boards are snuggled up together.
Little Backup Box Scripts
The Raspberry Pi photo backup device will be running a collection of scripts called Little Backup Box. As the name implies, these scripts turn your Pi into a fully-automated backup box. I will be going over two main features: Automatic backup and remote control backup. I will most likely not be using any of the other modes, like backing up using the Pi’s internal storage and I will not be using other features like DNLA and file sharing. You can read more about these other features on the project’s Github page.
Remote Control
This is the control mode I have been using. In AP mode, the Raspberry Pi will broadcast a WiFi signal you can connect to using another device equipped with WiFi. After connecting to the Pi through wifi, point the device’s browser to http://192.168.4.1:8000 (this is the IP address suggested in step 1.6 above).
Card Backup
This is an automatic backup mode that doesn’t require pairing the Pi with another device. Just boot up the Pi and plug in a storage device (pen drive) and a memory card. The Pi will detect the memory card automatically and will start the backup process. Once the backup is complete, the script will shutdown the Pi.
Camera Backup
This mode allows you to plug your camera indirectly into the Pi and perform the backup. I won’t be using this mode since it requires the camera to be kept on wasting precious battery life.
Internal Backup
This is another mode I won’t be using. Internal backup uses the Pi internal microSD card to perform the backup.
Speed Test Results
As you might have already guessed, the Raspberry Pi photo backup device is no speed demon. During my tests, it was able to transfer 16GB of videos and RAW photos in a little less than an hour (58 min to be precise). Keep in mind that backup is incremental, meaning the backup script will only sync new files to the backup device, saving you time if you backup your card frequently – which is the purpose of a backup device anyway.
Parts List Links
Here is a list of relevant products to this post. Some of the links below (Amazon links) are affiliate links and by using these links you are contributing to the site. Affiliate links don’t have any additional cost to you but the site gets a very small commission when you purchase a product through these links. In addition to only providing relevant links to the article, I keep all the ad links at the bottom of the page so they don’t interfere with the article flow.
Non-affiliate Links
Zero4U USB Hub with Pogo Pins – https://www.adafruit.com/product/3298
Raspberry Pi Zero W – https://www.adafruit.com/product/3400
Raspberry Pi 4 – https://www.adafruit.com/product/4292
Wow, i so need this, so I have just made it, the same way, and for some reason nothing will ‘mount ‘ when zero is connected to the hub….software and hub testes on RPI4, no probs…did you do anything special to make the hub be seen??? On the zero??
Hi Kerry, it might be that your Pi Zero is still in USB OTG mode, which would prevent connecting to the USB hub. Under the boot partition, go to config.txt and check if you have dtoverlay=dwc2 and comment it out with a “#”. Also check cmdline.txt for modules-load=dwc2,g_ether after rootwait and remove it.
You would have to add the settings above if you would like to connect your Pi Zero to a computer through USB.
Hope this works.
OMG!!! Your amazing!! all fixed, thx so much you made my XMAS!!! 🙂
Glad to hear that worked! Cheers.
BTW, the new OLED screen is coded up…so all you need do is fit a i2c oled in 128×64 or 32 and update.. the one made to fit the zero is called PIOLED by Adafruit….thx again and all the best!!! K
Wow this is awesome, thanks for the detailed explanation. Does the unit run hot during backup? Without pairing it to your smartphone, how do you tell when it has finished syncing? It would be cool to have a coloued LED light.
Hi Toby, Thanks for the comment. The Raspberry Pi is not any hotter than usual but the USB devices get a little hot, as is normal when constantly transferring data through USB. If your card reader has a light, the script will keep the light blinking while the transfer is in progress. It also turns off the RPi when it is done syncing the file so there is no need to keep track when it is finished. The script also supports a small OLED screen, but the OLED functionality is pretty limited right now. It is a Raspberry Pi after all so you can add LEDs pretty easily if you fancy some.
you can probably enable mDNS, give you raspberry pi a hostname, an access it via `hostname.local` instead of the ip address