Raspberry Zero W as USB mass storage drive

Hi, I’m new to Nerves and as a first project I was planning to create project where Zero is used as “smart” USB drive. Host would be storing video files on the drive and I would have some sort of file watcher on Nerves and it would react (upload to some cloud storage) when new files appears on the drive etc. And maybe running Phoenix web server for browsing files by connecting to Zero wifi.

Any pointers that could get me started on right track?

You might want to look into ConfigFS. Check out this article for a start on how to configure different USB gadgets, especially the “Mass Storage” section: http://www.isticktoit.net/?p=1383

The article is written with Raspbian in mind, but you can do the same in Nerves. You can take inspiration from this proof-of-concept repo where I setup the RPi4 USB-C as a USB Keyboard gadget: https://github.com/lucaong/nerves_rpi4_hid_gadget_poc

My repo is based on a RPi4, but it shows one possible approach to do what the article says on Nerves. In the case of the RPi Zero, the USB port is already configured in OTG mode, but you might to do something similar to this pull request to enable ConfigFS: https://github.com/nerves-project/nerves_system_rpi0/pull/62/files

One thing: most Nerves systems do not include the Debian version of common command line utilities, and use BusyBox instead. For this reason, things like echo -n ... or ln do not work exactly like in Raspbian. Pay attention to that when porting the scripts in the article :wink:

1 Like

Thanks @lucaong, I’m too newbie with a) Nerves b) Linux systems to understand how to put all together :frowning:

What would help me to get forward is some clear step-by-step guide howto pull this through.