diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5456e57..c5e55ff 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -24,7 +24,6 @@ Thanks for wanting to help out! Here's how to get involved. - Support for new ESL tag sizes and models - NFC tag support for additional ESL formats - UI/UX improvements -- Android companion app improvements ## Pull Request Guidelines diff --git a/README.md b/README.md index bdfdb77..71e2b7c 100644 --- a/README.md +++ b/README.md @@ -31,14 +31,14 @@ This tool is built for IoT security curiosity, learning about obscure protocols, ## Features -- **TagTinker Flipper App:** High-performance, zero-allocation RLE streaming IR engine. +- **TagTinker Flipper App:** High-performance RLE streaming IR engine. - **TagTinker Image Prep (web):** Single-file, dependency-free HTML page that lists every supported tag profile, runs a full image pipeline (tone, contrast, detail, sharpen, dither, photo-grade Oklab 3-colour quantisation) and exports a Flipper-ready BMP. Hosted at **[i12bp8.github.io/TagTinker](https://i12bp8.github.io/TagTinker/)** (source: `web-image-prep/`). -- **Drop-folder image flow:** Drop a prepared BMP into `apps_data/tagtinker/dropped/` on the Flipper SD card, then open `Targeted Payloads → → Set Image` and pick it. The Flipper rescales any BMP on the fly so a single file can target any tag and any page. -- **NFC Tag Scan:** Instantly identify ESL targets by scanning their NFC tag — no manual barcode entry needed. +- **Drop-folder image flow:** Drop a prepared BMP into `apps_data/tagtinker/dropped/` on the Flipper SD card, then open `Targeted Payloads → → Set Image` and pick it. The Flipper rescales the 1-bit and two-plane BMPs that the image preparer exports, so one file can be sent to graphics tags of other sizes and to any page. Type 1626 (SmartTAG Color 2.6) targets only accept files up to 24 KB. +- **NFC Tag Scan:** Add a target by scanning the tag's NFC chip instead of typing its barcode. This works when the tag's NFC data carries an ID TagTinker can decode; otherwise use `+ Type Barcode`. - **WiFi Plugins (optional):** Plug a Flipper WiFi Dev Board (ESP32-S2) into the GPIO header to unlock live, network-rendered tag designs — crypto price cards, weather tiles, identicons, and more — auto-discovered by the FAP. New plugins live entirely on the cloud worker; the Flipper firmware never has to be re-flashed to add one. image -- Display text, custom images, and test-patterns. +- Display text and custom images. - Support for monochrome and accent-color (red/yellow) graphics tags. ## Getting Started @@ -52,7 +52,7 @@ This tool is built for IoT security curiosity, learning about obscure protocols, **Does this require a Flipper Zero?** -No, not at all! You can do this with less than $5 worth of microcontroller hardware (like an ESP32 and an IR LED). The Flipper Zero just happens to be my favorite security research tool, which is why I built the app for this platform. +This app does. The IR protocol itself is simple enough to drive from other cheap microcontroller hardware, such as an ESP32 and an IR LED, but this repository only contains the Flipper implementation. The Flipper Zero just happens to be my favorite security research tool, which is why I built the app for this platform. **Where is the `.fap` release?** diff --git a/cloud-plugins/wrangler.toml b/cloud-plugins/wrangler.toml index 2ca1a64..cebb840 100644 --- a/cloud-plugins/wrangler.toml +++ b/cloud-plugins/wrangler.toml @@ -3,5 +3,6 @@ main = "src/index.ts" compatibility_date = "2024-09-23" # `npm run deploy` will publish to ..workers.dev. -# Once deployed, point the ESP firmware at the resulting URL via -# the FAP "WiFi Setup -> Server URL" field. +# The dev board firmware has no runtime URL setting yet. To use your own +# deployment, set TT_CLOUD_DEFAULT_URL in esp32-wifi-fw/main/cloud_client.h, +# then rebuild and reflash the ESP32-S2. diff --git a/esp32-wifi-fw/main/cloud_client.h b/esp32-wifi-fw/main/cloud_client.h index 50693b5..c9a5cf5 100644 --- a/esp32-wifi-fw/main/cloud_client.h +++ b/esp32-wifi-fw/main/cloud_client.h @@ -2,8 +2,10 @@ * Cloud plugin client. * * Talks to the TagTinker Cloudflare Worker that hosts plugin manifests - * and renders. Default URL is hard-coded below; override at runtime by - * calling cloud_client_set_url() (the value is persisted in NVS). + * and renders. The base URL is TT_CLOUD_DEFAULT_URL below unless NVS + * already holds one. cloud_client_set_url() can store a different URL, but + * nothing calls it yet, so pointing the board at another worker currently + * means editing TT_CLOUD_DEFAULT_URL and reflashing. * * GET /plugins -> JSON manifest list * GET /render/?...-> binary framebuffer (see worker docs)