Flashback
A small application for ESP32-S3 microcontrollers that backs up mass storage devices over WiFi to remote servers such as NAS devices or cloud backup services.
Status: Not yet an alpha!
Note that this project is very much so in progress, such that many of the features listed below are not yet implemented. Consider this README as being aspirational for now.
Also note that this is a hobby project. I reserve the right to ignore issues and pull requests, please do not consider the existence of this project as a promise of any level of maintenance. I hope to maintain it, but that is again an aspirational statement, not a guarantee or SLA.
Finally, if this project is useful to you, please consider leaving a tip at https://ko-fi.com/xgranade.
Usage
Recommended Hardware
Flashback is intended for use with the ESP32-S3-USB-OTG (docs, DigiKey) development board. When Flashback is uploaded to a dev board, the USB_DEV plug (USB-A plug) on the left-hand side of the board is only used to provide power, while the USB_HOST port on the right-hand side is used to attach mass storage devices like flash drives and devices that appear to hosts as flash drives (e.g.: Freewrite and other e-typewriters).
To hook up Flashback, you'll need a Micro USB-B cable to connect the upload/monitoring port on the dev board to your desktop or laptop, as well as a cable from USB-A to the device you'd like to use Flashback with (typically an A-to-C cable), or a device with a captive USB-A plug (e.g.: most commonly available flash drives).
If you want to use Flashback with a battery, you'll additionally need to provide one yourself and solder it on to the dev board.
Configuring Flashback
Flashback includes a web-based tool for configuring the firmware with WiFi credentials, and for getting basic logging information without the need for a serial monitor (though serial monitoring will give far more complete information). To use the configurator tool, run just serve to start the web application, then go to http://localhost:8000 in a Chromium-based browser with WebBluetooth enabled (Firefox is not supported).
Developing
If you already have Nix (or Lix) and direnv up and running, allowing the .envrc file for this project will supply all needed dependencies:
$ cd flashback
$ direnv allow
Otherwise, this project assumes that you have just and uv installed and on your PATH.
Either way, once you have all dependencies available, just can be used to run all commands for the project:
# Build the project.
$ just build
# Build the project and upload it to a connected board.
$ just upload
# Watch serial output from the project over a connected
# UART port.
$ just monitor
When run without arguments, just will present a list of available commands for you to choose from. Alternatively, just --list will print a list of commands.