1
0
Fork
You've already forked flashback
0
No description
C++ 65.6%
Python 19.8%
HTML 11.1%
Just 1.5%
C 1%
Other 1%
2025年11月28日 18:05:35 -08:00
configurator Characteristics for udrop config. 2025年11月16日 22:58:11 -08:00
include Progress towards getting a minimal display working. 2025年11月25日 14:12:57 -08:00
patches minimal working version of descriptor fetching 2025年11月11日 01:53:17 -08:00
src Progress towards getting a minimal display working. 2025年11月25日 14:12:57 -08:00
test Initial stab at using OTG devboard 2025年11月04日 00:25:29 -08:00
udrop Support for ujournal. 2025年11月28日 18:05:35 -08:00
.envrc Add documentation (kind of) and build tooling. 2025年11月11日 11:52:49 -08:00
.gitignore Tiny server for testing uploads. 2025年11月16日 13:29:44 -08:00
CMakeLists.txt Very hacky progress on uploading from flashback to udrop. 2025年11月17日 04:43:12 -08:00
dependencies.lock Work on BLE pairing, display task management, etc. 2025年11月14日 11:34:23 -08:00
Justfile Characteristics for udrop config. 2025年11月16日 22:58:11 -08:00
LICENSE add license 2025年11月04日 00:27:49 -08:00
platformio.ini Start of WiFi support. 2025年11月16日 13:27:50 -08:00
README.md Added more docs and comments. 2025年11月11日 12:11:22 -08:00
sdkconfig.esp32s3usbotg Progress towards getting a minimal display working. 2025年11月25日 14:12:57 -08:00
shell.nix Add documentation (kind of) and build tooling. 2025年11月11日 11:52:49 -08:00

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

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.