From eed5e3d468344c28cf374966ecb1f7ffc046b949 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bio=20Coutada?= Date: Sun, 9 Aug 2026 01:41:34 +0100 Subject: [PATCH] =?UTF-8?q?feat:=20Aur=C3=A9lio=20Embroidery=20=E2=80=94?= =?UTF-8?q?=20the=20first=20art=20of=20the=20Omniscient=20Replica?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Initial commit with: - README.md: vision, philosophy, roadmap — from artisans to AI - AGENTS.md: agent guide for the embroidery subsystem - vendor-registry/registry.yaml: 14 vendors, 40+ formats, universal bridge reference - Submodules: FlashFloppy (hw/), pyembroidery (lib/), libembroidery (lib/) The universal embroidery machine bridge. Open-source digitizing, machine control, and the tools to set textile creation free. --- .gitmodules | 9 + AGENTS.md | 87 ++++++++ README.md | 167 ++++++++++++++++ hw/flashfloppy | 1 + lib/libembroidery | 1 + lib/pyembroidery | 1 + vendor-registry/registry.yaml | 367 ++++++++++++++++++++++++++++++++++ 7 files changed, 633 insertions(+) create mode 100644 .gitmodules create mode 100644 AGENTS.md create mode 100644 README.md create mode 160000 hw/flashfloppy create mode 160000 lib/libembroidery create mode 160000 lib/pyembroidery create mode 100644 vendor-registry/registry.yaml diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..78d06d6 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,9 @@ +[submodule "hw/flashfloppy"] + path = hw/flashfloppy + url = https://github.com/keirf/flashfloppy.git +[submodule "lib/pyembroidery"] + path = lib/pyembroidery + url = https://github.com/EmbroidePy/pyembroidery.git +[submodule "lib/libembroidery"] + path = lib/libembroidery + url = https://github.com/Embroidermodder/libembroidery.git diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..ed771f4 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,87 @@ +# Aurélio Embroidery — Agent Guide + +The embroidery subsystem of the Portugal Futurista platform. This repo holds the +universal vendor bridge, MCP server, IDE plugins, and all knowledge needed to +connect any embroidery machine to the Aurélio fleet. + +## Repository layout + +| Path | What | Language/Toolchain | +|------|------|-------------------| +| `README.md` | Vision, philosophy, roadmap | — | +| `AGENTS.md` | This file — agent instructions | — | +| `vendor-registry/` | Machine vendor database (formats, connectivity, hacks) | YAML | +| `mcp/` | Aurélio Embroidery MCP server | Python, FastMCP | +| `plugins/desktop/` | Aurélio Desktop IDE plugin | TypeScript | +| `plugins/web/` | Aurélio Web IDE plugin | TypeScript | +| `hardware/universal-bridge/` | ESP32/RPi bridge firmware | C, ESP-IDF | +| `hw/flashfloppy/` | FlashFloppy submodule | C | +| `lib/pyembroidery/` | Python embroidery library submodule | Python | +| `lib/libembroidery/` | C embroidery library submodule | C | +| `lib/inkstitch/` | Ink/Stitch Inkscape extension submodule | Python | +| `lib/embroidermodder/` | Embroidermodder 2 submodule | C++, Qt | + +## Philosophy + +Every submodule added to this repo must be accompanied by a clear statement of **why +it matters** — what philosophy or grand dream for society made us include it. The +README.md serves as that statement. When adding new submodules, update README.md with +the same pattern: one heading, one paragraph of context, one paragraph of why. + +## Submodule management + +Submodules are pinned to specific commits. To update: + +```bash +# Update all submodules to latest remote +git submodule update --remote + +# Update a specific submodule +cd lib/pyembroidery && git pull origin main && cd ../.. +git add lib/pyembroidery && git commit -m "chore(submodule): update pyembroidery" +``` + +## Vendor registry + +`vendor-registry/registry.yaml` is the single source of truth for all known +embroidery machines. Each entry declares: + +- `vendor`: manufacturer name +- `models`: list of model names/patterns +- `format`: native stitch format(s) +- `media`: how designs get into the machine (floppy, card, usb, serial, network) +- `interface`: electrical interface type (ibmpc, shugart, custom) +- `jumpers`: Gotek jumper configuration for floppy emulation +- `hacks`: known community modifications +- `notes`: quirks, gotchas, references + +## MCP server + +The MCP server (`mcp/server.py`) exposes embroidery tools to the Aurélio fleet: + +- `embroidery_convert` — convert between any supported formats +- `embroidery_machines` — list known machines from vendor registry +- `embroidery_preview` — generate stitch preview (PNG/SVG) +- `embroidery_send` — push design to a connected machine +- `embroidery_formats` — list supported formats with read/write capabilities + +Built on FastMCP. Loads vendor registry at startup. Uses pyembroidery for all +format operations. + +## Build & test + +```bash +# MCP server +cd mcp +pip install -r requirements.txt +python server.py + +# Vendor registry validation +python -c "import yaml; yaml.safe_load(open('vendor-registry/registry.yaml'))" +``` + +## Related repos in the fleet + +- `replica-omnisciente/` — parent monorepo, contains this repo's context +- `aurelio-backend-native/` — C23/C++23 backend, may host native digitizing engine +- `infra/` — CDP bridge, lab gateway for hardware access diff --git a/README.md b/README.md new file mode 100644 index 0000000..ee75fbd --- /dev/null +++ b/README.md @@ -0,0 +1,167 @@ +# Aurélio Embroidery + +> *"From artisans to AI. The first art of the Omniscient Replica."* + +**Aurélio Embroidery** is the embroidery digitizing, machine control, and universal +vendor bridge for the Portugal Futurista platform. It plugs into Aurélio Web IDE and +Aurélio Desktop IDE, giving every artisan the power to draw, digitize, and "print" +embroidery designs — as easily as 3D printing. + +--- + +## The Grand Dream + +My family has a long history of textile creation. I grew up surrounded by fabrics, +threads, sewing machines, and the slow, beautiful craft of turning raw material into +adorned cloth. This project is a love letter to that heritage. + +The dream is simple: **small embroidery machines that work like a CNC for thread**. +You draw or create something, press "print," and the machine stitches it out. No +$2,000 software. No proprietary dongles. No vendor lock-in. Just art → thread → fabric. + +But the dream is bigger than convenience. It's about **preserving and teaching the +old ways** — the *ofícios* — while giving them new life through technology. Imagine +Guitar Hero, but for learning embroidery. A platform that guides your hands through +the motions of satin stitch, chain stitch, cross stitch, until muscle memory takes +over and you're no longer following lights on a screen — you're creating. + +This is the start of the **Omniscient Replica**: the first real art, for artists and +from artisans. + +--- + +## What This Repo Contains + +| Path | What | +|------|------| +| `README.md` | You are here — vision, philosophy, roadmap | +| `AGENTS.md` | Agent guide — how AI agents should work in this repo | +| `vendor-registry/` | Universal machine database — every vendor, every format, every hack | +| `mcp/` | MCP server — Aurélio's embroidery bridge (FastMCP) | +| `plugins/desktop/` | Aurélio Desktop IDE embroidery plugin | +| `plugins/web/` | Aurélio Web IDE embroidery plugin | +| `hardware/universal-bridge/` | ESP32/RPi universal floppy emulator design | +| `hw/flashfloppy/` | [FlashFloppy](https://github.com/keirf/flashfloppy) — the #1 floppy emulator firmware | +| `lib/pyembroidery/` | [pyembroidery](https://github.com/EmbroidePy/pyembroidery) — Python lib: 46 read, 20 write formats | +| `lib/libembroidery/` | [libembroidery](https://github.com/Embroidermodder/libembroidery) — C library: 45+ formats, CLI tool | +| `lib/inkstitch/` | [Ink/Stitch](https://github.com/inkstitch/inkstitch) — full Inkscape-based digitizing platform | +| `lib/embroidermodder/` | [Embroidermodder 2](https://github.com/Embroidermodder/Embroidermodder) — Qt GUI for editing embroidery files | + +--- + +## Why These Projects Matter + +### FlashFloppy — the universal key +Embroidery machines from the 1990s-2010s read designs from floppy disks. FlashFloppy +lets you replace that floppy drive with a USB stick. Drop a Gotek ($25) into any +Tajima, Barudan, Brother, Melco, or Toyota machine, flash this firmware, and you +have a modern machine that reads designs from USB. **This is the hardware hack that +unlocks the entire ecosystem.** + +### pyembroidery — the universal translator +Reads 46 embroidery formats, writes 20. Every brand, every variant. This is the +Rosetta Stone that lets Aurélio speak to any machine ever made. If a format exists, +pyembroidery can read it, convert it, and write it. + +### libembroidery — the embedded engine +A single C file you drop into any project. 45+ formats, command-line tool (`sew`), +permissive license. This is what runs on the ESP32 inside the universal bridge. + +### Ink/Stitch — the free digitizer +The ONLY open-source alternative to Wilcom EmbroideryStudio. Full Inkscape +integration: draw in SVG, export to PES/DST/EXP/JEF/VP3. Satin stitch, fill +stitch, lettering, auto-column. This is the design tool every artisan deserves. + +### Embroidermodder 2 — the free editor +A Qt-based GUI for viewing, editing, and converting embroidery files. Still in +alpha, but the vision is complete: a free, cross-platform embroidery editor. + +--- + +## The Universal Bridge + +The missing piece — the thing we're building here — is the **Universal Embroidery +Machine Bridge**: a $15 ESP32-S3 that emulates a floppy drive, serves designs over +WiFi, and speaks every embroidery format through libembroidery. + +``` +┌──────────────────────────────────────────────────────────┐ +│ Aurélio IDE / MCP │ +│ (draw → digitize → convert → send) │ +└──────────────────────┬───────────────────────────────────┘ + │ +┌──────────────────────┴───────────────────────────────────┐ +│ Universal Embroidery Bridge │ +│ ┌─────────────┐ ┌──────────────┐ ┌─────────────────┐ │ +│ │ Gotek + FF │ │ FlashAir SD │ │ ESP32 Bridge │ │ +│ │ (floppy bay) │ │ (card slot) │ │ (direct GPIO) │ │ +│ └─────────────┘ └──────────────┘ └─────────────────┘ │ +│ ┌──────────────────────────────────────────────────────┐ │ +│ │ Machine Vendor Registry │ │ +│ │ tajima → dst, floppy, ibmpc, jc-s1 │ │ +│ │ brother → pes, floppy_or_card, cf-adapter │ │ +│ │ barudan → dst, floppy, ibmpc, jc-s1 │ │ +│ │ janome → jef, floppy_or_cf, usb-cable │ │ +│ │ bernina → art, usb_stick, wifi_sd │ │ +│ │ pfaff → vp3, floppy, ibmpc, jc-s1 │ │ +│ └──────────────────────────────────────────────────────┘ │ +└──────────────────────────────────────────────────────────┘ +``` + +--- + +## Roadmap + +### Phase 1 — Foundation (now) +- [x] Repository created, vision documented +- [x] Key submodules added (FlashFloppy, pyembroidery, libembroidery, Ink/Stitch) +- [ ] Vendor registry populated with all known machines +- [ ] MCP server skeleton (FastMCP): convert formats, list machines, preview stitches + +### Phase 2 — The Bridge +- [ ] ESP32 universal floppy emulator firmware (based on FlashFloppy logic) +- [ ] WiFi design upload (drag & drop PES/DST → machine) +- [ ] Aurélio Desktop IDE plugin: embroidery panel with live preview +- [ ] Aurélio Web IDE plugin: same, in the browser + +### Phase 3 — The Art +- [ ] Auto-digitizing pipeline (GPU-accelerated: raster/vector → stitches) +- [ ] 4× 8GB VRAM GPU cluster for batch digitizing +- [ ] "Guitar Hero for embroidery" — interactive learning mode +- [ ] Integration with the full Omniscient Replica fleet + +### Phase 4 — The Movement +- [ ] Open hardware reference design published +- [ ] Community-contributed machine profiles +- [ ] Teaching curriculum (traditional Portuguese embroidery techniques) + +--- + +## Philosophy + +This project exists because **the tools of creation should belong to the creators**. + +Wilcom costs $2,000+. Pulse costs $3,000+. The machines are locked to Windows 95 +floppy drives and proprietary dongles. The artisans who keep textile traditions alive +are locked out by software they can't afford and hardware they can't connect to. + +We're breaking that open. + +Every line of code in this repo is free. Every machine profile is community-owned. +Every design you make is yours. The GPUs in our lab (4× 8GB when the fleet is back +online) will accelerate the hard parts — auto-digitizing, stitch simulation, preview +rendering — so your laptop doesn't have to. + +This is Portugal Futurista's contribution to the world's textile heritage: +**the tools, the knowledge, and the bridge between tradition and tomorrow.** + +--- + +## Related Repos + +- [FlashFloppy](https://github.com/keirf/flashfloppy) — floppy emulator firmware +- [pyembroidery](https://github.com/EmbroidePy/pyembroidery) — Python embroidery library +- [libembroidery](https://github.com/Embroidermodder/libembroidery) — C embroidery library +- [Ink/Stitch](https://github.com/inkstitch/inkstitch) — Inkscape digitizing extension +- [Embroidermodder](https://github.com/Embroidermodder/Embroidermodder) — Qt embroidery editor +- [GreaseWeazle](https://github.com/keirf/greaseweazle) — USB floppy imager diff --git a/hw/flashfloppy b/hw/flashfloppy new file mode 160000 index 0000000..483077a --- /dev/null +++ b/hw/flashfloppy @@ -0,0 +1 @@ +Subproject commit 483077a26651a9b8a19959e84900577ff5b0c2c6 diff --git a/lib/libembroidery b/lib/libembroidery new file mode 160000 index 0000000..1138e04 --- /dev/null +++ b/lib/libembroidery @@ -0,0 +1 @@ +Subproject commit 1138e043b811f891d2bf88fce5b2e414dac92391 diff --git a/lib/pyembroidery b/lib/pyembroidery new file mode 160000 index 0000000..c16d1b4 --- /dev/null +++ b/lib/pyembroidery @@ -0,0 +1 @@ +Subproject commit c16d1b46390a1632ee36ff98eb8b3ec01934a8e9 diff --git a/vendor-registry/registry.yaml b/vendor-registry/registry.yaml new file mode 100644 index 0000000..7bf4118 --- /dev/null +++ b/vendor-registry/registry.yaml @@ -0,0 +1,367 @@ +# Aurélio Embroidery — Universal Machine Vendor Registry +# +# Single source of truth for every embroidery machine known to the fleet. +# Used by the MCP server, IDE plugins, and the universal bridge firmware. +# +# Schema per entry: +# vendor: Manufacturer name +# models: List of model names/patterns (can use wildcards for families) +# formats: Native stitch format(s) — what the machine reads +# media: Physical interface for design transfer +# floppy: Floppy drive specs (if applicable) +# jumpers: Gotek/FlashFloppy jumper configuration +# hacks: Known community hardware modifications +# notes: Quirks, gotchas, references +# connectivity: Modern connectivity options beyond floppy +# +# File formats key: +# dst — Tajima stitch (de facto universal, no color info) +# pes — Brother/Baby Lock/Bernina Deco (most common consumer format) +# exp — Melco expanded +# jef — Janome +# hus — Husqvarna Viking +# shv — Husqvarna Viking (alternate) +# vip — Husqvarna Viking/Pfaff (alternate) +# vp3 — Pfaff/Husqvarna Viking +# art — Bernina Artista +# emb — Wilcom native (full design data, NOT stitch-level) +# pec — Brother/Baby Lock (card format) +# pcs — Pfaff (card format) +# xxx — Singer/Compucon +# sew — Elna/Janome/Kenmore +# jef+ — Janome (extended) +# dsb — Tajima/Barudan stitch +# dsz — Tajima ZSK +# tbf — Tajima +# u01 — Barudan +# 10o — Toyota +# ksm — Pfaff +# max — Pfaff +# phb/phc — Baby Lock/Bernina/Brother +# cnd — Melco condensed +# ofm — Melco +# fdr — Barudan +# fmc — Barudan +# dat — Barudan/Sunstar +# stx — Stitchmax/Toyota +# sst — Sunstar + +vendors: + - vendor: Tajima + models: + - "TME*" # TME series (multi-head electronic) + - "TMB*" # TMB series (bridge type) + - "TMEX*" # TMEX series + - "TF*" # TF series + formats: [dst, dsb, dsz, tbf] + media: floppy + floppy: + interface: ibmpc + density: hd # 1.44MB + sectors: 18 + tracks: 80 + jumpers: [JC, S1] + connectivity: + - gotek_flashfloppy # Drop-in Gotek + FlashFloppy (JC+S1) + - tajima_dgml_network # Official Tajima LAN adapter (expensive) + notes: | + The industry standard. DST is the universal format — every machine reads it. + Most Tajima machines use IBM PC floppy interface. Some older models (pre-1995) + use Shugart (jumper S0 only). DST has no color information — color sequence + must be managed separately. + + - vendor: Barudan + models: + - "BE*" # BE series + - "BEX*" # BEX series + - "BES*" # BES series + formats: [dst, dsb, u01, fdr, fmc, dat] + media: floppy + floppy: + interface: ibmpc + density: hd + jumpers: [JC, S1] + connectivity: + - gotek_flashfloppy + - barudan_ethernet + notes: | + Barudan machines are workhorses. Same interface as Tajima for floppy. + The U01 format is Barudan-specific. FDR/FMC are older Barudan formats. + + - vendor: Brother + models: + - "PR*" # PR series (professional) + - "PE*" # PE series (home/consumer) + - "NV*" # Innov-is series + - "LB*" # Labelle / limited edition + - "BES*" # BES series + - "HE*" # HE series + formats: [pes, pec, phb, phc] + media: [floppy, card, usb] + floppy: + interface: ibmpc + density: hd + jumpers: [JC, S1] + connectivity: + - gotek_flashfloppy + - brother_card_writer # USB card reader/writer + - flashair_wifi_sd # WiFi SD in card slot + - usb_direct # USB port on newer models (PR1050X+) + notes: | + PES is the most common consumer embroidery format. Brother machines from the + 2000s used proprietary memory cards; later models added USB. The Brother + card writer is a commercial product but expensive. FlashAir WiFi SD in a + card adapter is the popular hack. + + - vendor: Melco + models: + - "EMT*" # EMT series + - "EP*" # EP series + - "Amaya*" + - "Bravo*" + formats: [exp, cnd, ofm] + media: [floppy, serial, network] + floppy: + interface: ibmpc + density: hd + jumpers: [JC, S1] + connectivity: + - gotek_flashfloppy + - melco_actifeed # Melco network adapter + - melco_usb_interface + notes: | + Melco created the first embroidery sample head (1980). EXP is Melco's + format. The Amaya/Bravo lines have networking built-in but older EMT/EP + machines are floppy-only or RS-232 serial. + + - vendor: Janome + models: + - "MC*" # Memory Craft series + - "MB*" # MB series + formats: [jef, jef+, sew] + media: [floppy, compactflash, usb] + floppy: + interface: ibmpc + density: hd + jumpers: [JC, S1] + connectivity: + - gotek_flashfloppy + - cf_to_sd_adapter # CompactFlash → SD adapter + - janome_usb_cable # Janome USB cable (commercial) + - clothset # Janome Clothset USB + notes: | + JEF is Janome's format. Machines from the MC series used floppy, then CF. + CF-to-SD adapters work for newer machines. Older MC models require the + proprietary USB cable. + + - vendor: "Husqvarna Viking" + models: + - "Designer*" + - "Ruby*" + - "Diamond*" + - "Topaz*" + - "Sapphire*" + - "Opal*" + formats: [hus, shv, vip, vp3] + media: [floppy, card, usb] + floppy: + interface: ibmpc + density: hd + jumpers: [JC, S1] + connectivity: + - gotek_flashfloppy + - viking_usb_stick # Viking USB embroidery stick + notes: | + HUS/SHV/VIP/VP3 are all Viking/Pfaff formats. VP3 is the most modern. + Viking machines use a proprietary USB stick (not a standard USB port). + + - vendor: Pfaff + models: + - "Creative*" + - "Performance*" + formats: [vp3, pcs, ksm, max] + media: [floppy, card, usb] + floppy: + interface: ibmpc + density: hd + jumpers: [JC, S1] + connectivity: + - gotek_flashfloppy + - pfaff_usb_stick + notes: | + Pfaff and Viking share formats (both owned by SVP Worldwide). VP3 is the + modern format. PCS is the older card format. + + - vendor: Bernina + models: + - "Artista*" + - "880*" + - "790*" + - "770*" + - "570*" + formats: [art, exp] + media: [usb_stick, card] + connectivity: + - bernina_usb_stick # Bernina-branded USB stick + - flashair_wifi_sd # WiFi SD in card slot + notes: | + ART is Bernina's proprietary format — it's encrypted/DRM'd. Third-party + software can write ART but Bernina machines may reject files not signed + by Bernina software. The USB stick must be Bernina-branded (or hacked). + EXP (Melco) is also supported on some models. + + - vendor: Toyota + models: + - "ES*" # ES series + - "ESP*" # ESP series + - "8600*" + formats: ["10o", stx] + media: floppy + floppy: + interface: ibmpc + density: hd + jumpers: [JC, S1] + connectivity: + - gotek_flashfloppy + notes: | + Toyota uses the .10o format. Less common but Gotek + FlashFloppy works. + + - vendor: Happy + models: + - "HCS*" + - "HCD*" + formats: [dst] + media: floppy + floppy: + interface: ibmpc + density: hd + jumpers: [JC, S1] + connectivity: + - gotek_flashfloppy + notes: | + Happy machines read standard Tajima DST. IBM PC floppy interface. + + - vendor: SWF + models: + - "SWF/E*" + - "SWF/S*" + - "SWF/M*" + formats: [dst] + media: floppy + floppy: + interface: ibmpc + density: hd + jumpers: [JC, S1] + connectivity: + - gotek_flashfloppy + notes: | + SWF (SunStar) machines read DST. Standard IBM PC floppy. + + - vendor: ZSK + models: + - "ZSK*" + - "Sprint*" + formats: [dst, dsz] + media: floppy + floppy: + interface: ibmpc + density: hd + jumpers: [JC, S1] + connectivity: + - gotek_flashfloppy + notes: | + ZSK is a German manufacturer. DSZ is the ZSK-specific variant of DST. + Both work with IBM PC floppy interface. + + - vendor: Singer + models: + - "Futura*" + - "CE*" + - "XL*" + formats: [xxx, pes] + media: [floppy, usb] + floppy: + interface: ibmpc + density: hd + jumpers: [JC, S1] + connectivity: + - gotek_flashfloppy + - usb_direct # Newer Futura models + notes: | + Singer Futura machines use .XXX format (which is essentially Compucon + format). Most also read PES. Newer models have USB. + + - vendor: Elna + models: + - "eXperience*" + - "eXpressive*" + - "8300*" + formats: [sew, jef, emd] + media: [floppy, usb] + floppy: + interface: ibmpc + density: hd + jumpers: [JC, S1] + connectivity: + - gotek_flashfloppy + - usb_direct + notes: | + Elna is closely related to Janome. SEW and JEF are the main formats. + EMD is Elna-specific. + + - vendor: Babylock + models: + - "Enterprise*" + - "Destiny*" + - "Meridian*" + - "Spirit*" + formats: [pes, pec, phb, phc] + media: [floppy, usb, card] + floppy: + interface: ibmpc + density: hd + jumpers: [JC, S1] + connectivity: + - gotek_flashfloppy + - usb_direct + notes: | + Babylock machines are essentially re-badged Brother machines. Same + formats, same interfaces. + +# ─── Gotek / FlashFloppy Reference ────────────────────────────────────── +# +# Universal floppy emulator configuration: +# +# Standard IBM PC (95% of embroidery machines): +# Jumpers: JC + S1 +# FF.CFG: interface = ibmpc +# Image: FAT32 USB, 1.44MB IMG files +# +# Shugart (older machines, pre-1995): +# Jumpers: S0 only +# FF.CFG: interface = shugart +# Image: FAT32 USB, 720KB or 1.44MB IMG files +# +# Other interface modes available in FlashFloppy: +# ibmpc-hdout, akai-s950, amiga, jc, shugart, ibmpc, pc98, ensoniq +# +# USB stick preparation: +# 1. Format USB stick as FAT32 +# 2. Copy blank IMG files (created with dd or HxCFloppyEmulator) +# 3. Rename to DSKA0000.IMG, DSKA0001.IMG, etc. +# 4. On the machine, format each "disk" before use +# 5. Use pyembroidery or Embird to write designs to the IMG files on PC +# +# FlashAir WiFi SD hack: +# 1. Get Toshiba FlashAir W-04 (or ezShare WiFi SD) +# 2. Configure as AP or station mode +# 3. Map the SD card as a network drive on PC +# 4. Insert into machine's SD/PCMCIA card slot via adapter +# 5. Designs dropped into the network folder appear on the machine +# +# ESP32 Universal Bridge (TO BE BUILT): +# - ESP32-S3 bitbangs floppy signals on GPIO +# - SD card slot for local storage +# - WiFi for network design upload +# - pyembroidery running on-device for format conversion +# - Web interface at http://embroidery.local