Blob: archive/README.md
Archived experiments
Versioned reference implementations for the ESP32-S3-DevKitC-1 N32R16V, excluded from the maintained build and CI.
| Project | Purpose |
|---|---|
| SFU bring-up | Hardware checks, data-channel creation, fan-out and reply permissions |
| FFT benchmark | Opus decoding and floating-point/fixed-point FFT timing during streaming |
| C radio | Single-song C radio with an optional USB signaling bridge |
| str0m probe | Host SFU interoperability with explicit channel IDs and controlled packet loss |
Setup
For the hardware experiments, complete the root setup and preserve an
original flash backup. Keep SIGNALING_URL
exported to the same Worker origin throughout the experiment and restoration.
The Python host tools use a separate environment:
python3 archive/setup.py
python3.11 -m venv .tools/archive-python
.tools/archive-python/bin/pip install -r archive/requirements.txtarchive/setup.py installs the pinned esp_peer checkout used by the older
hardware experiments. The maintained firmware uses str0m. The host-only str0m
probe has its own setup instructions and needs no ESP-IDF installation.
dependencies.json, the firmware lockfiles, and requirements.txt record the historical dependencies. Builders verify these pins before using the installed SDK/vendor checkouts. They reject incompatible revisions; they do not install a separate historical SDK automatically.
Follow an individual project's build and run instructions. Building does not
flash. Explicit archive/flash.py commands interrupt the running board and
require a verified backup. Output goes under the configured SDK directory;
logs and generated media go to ignored artifacts/archive/.
Native transport
The older hardware experiments use esp_peer. Its close operation can hang,
so recovery resets the board and peer configuration stays alive until reset.
Keep the validated 10 ms receive timeout; a 1 ms timeout caused DTLS disconnects.
The native SDK creates robot and spectrum in that order with stream IDs 2 and 4;
its creation API cannot select arbitrary negotiated IDs.
Restore the radio
After an experiment, restore the maintained firmware and its prepared music catalog:
export SIGNALING_URL=https://radio.example.com
make build-firmware
make flash FLASH_ARGS=Use your deployed origin. The restore reads the normal pack in artifacts/radio/.
Archive preparation writes a separate v1 pack, preserving the maintained playlist.
See ERRATA for current integration and compatibility constraints.