Skip to content

The_Real_Cow_Flasher

Parked (2026-10-14, owner) — revisit later, nothing built

  • Cow Updater box (ESP32-S3 USB host: IDENTIFY → @BOOT_LOADER; → DfuSe → re-IDENTIFY). Stack: ESP-IDF usb_host + espressif/usb_host_cdc_acm; DfuSe host is a port of webdfu dfuse.js. Prototype on ESP32-S3-USB-OTG (powers the target). Must keep the board powered through first boot.
  • Paid model: yearly update plan + paid feature unlocks tied to chip UID; Woo/Stripe → Cloudflare Worker signs grants. Requires firmware no longer public.
  • UF2 drag-and-drop bootloader (tinyuf2 has no STM32G0 port; write one from F4/H5). Checks: family ID per board/rev, address range, completeness, image hash, Ed25519 signature, version rule, valid-marker written last, STATUS.TXT/INFO.TXT. Robot can stage (512K); remote writes in place (128K). First test: $4 Pico UF2 copy from iPhone/Android Files app.
  • ST ROM DFU: keep for factory/repair via SWD only; option bytes ignore BOOT0 for customers, RDP1, WRP on bootloader — set only on the Universal Tester (option-byte write bricked 6 boards 2026-09-19).

Log

  • 2026-09-22: Pushed feature/recording-and-unified-firmware at45346f7. Record6.6 and Unified6.16 binaries/catalog, release notes/checksums, explicit Normal6.15 default and preview label, manifest/browser checks. Main/live unchanged. See cow-flasher-configurator-mode-plan.

  • 2026-09-22: At explicit owner request, fast-forwarded and pushed default branch main to45346f7. Existing feature branches retained. Web-app GitHub Pages deployment triggered; status verification ongoing at this log entry. No new source changes.

  • 2026-09-22: Pages run35801150110 succeeded for main45346f7. Live catalog contains both new binaries; downloaded SHA256 values match the manifest. Deliberate stable default code is live; unified remains labelled preview pending hardware checks.

  • 2026-09-22: Added root README.md and pushed to main at8c66802, requested by owner. Covers purpose, usage, build/local setup, tests, related projects and firmware/mode compatibility. Relative links and Git whitespace checked; documentation-only change.

  • 2026-10-14: Plan for a no-computer updater ("Cow Updater" box): board answers @IDENTIFY; (COW_ROBOT_V / COW_REMOTE_V, robot >=4.0, remote >=6.2.4) and @BOOT_LOADER; reboots to ROM DFU 0483:DF11, so a USB-host box can identify -> pick latest -> DFU -> re-identify with no buttons. Owner chose ESP32-S3 as the box MCU (availability). Stack: ESP-IDF usb_host + espressif/usb_host_cdc_acm (Apache-2.0) for IDENTIFY; DfuSe host written on control transfers (port of webdfu dfuse.js). Must keep the board powered through first boot (robot option-byte write bricked 6 boards 2026-09-19). Bug found: web flasher sends unframed BOOT_LOADER\r\n (dfu-util.js:534); the remote only accepts @BOOT_LOADER;. Step 1 = one-click auto-detect web flasher, pending owner go-ahead.