Custom firmware for the LilyGO T-Embed CC1101 — a pocket remote that monitors and controls Klipper (Moonraker), Bambu Lab (LAN MQTT), and Prusa (PrusaLink) printers.
Icons in the setup UI and web flasher come from Iconify (mdi set).
- Encoder + 1.9" display UI for status, pause / resume / cancel / e-stop
- On-device setup webapp (SoftAP + LAN) for Wi‑Fi and printer onboarding
- Multi-printer profiles stored in NVS
- Browser flasher (
flasher/) via ESP Web Tools - Optional camera snapshots (Klipper webcam URL, PrusaLink snap, Bambu A1/P1 LAN JPEG)
| Input | Action |
|---|---|
| Turn encoder | Move selection / change detail page (1/3 → 2/3 → 3/3) |
| Short click encoder | Open printer / open Actions / confirm |
| Long-press encoder (~0.7s) | Back (detail → fleet list, actions → detail) |
| Actions → Back | Same as long-press from the Actions screen |
| Pause / Cancel / E-Stop | Ask for Yes / No confirmation (defaults to No) |
Hint on the status page: Click actions · hold back.
- Build firmware (below) so
flasher/*.binis populated. - Serve the flasher folder over HTTP (Web Serial requires a secure context or localhost):
python -m http.server 8080 --directory flasher- Open http://localhost:8080 — click Install firmware.
- Connect to Wi‑Fi T-Print, open http://192.168.4.1, join your home network, then reopen setup from the IP shown on the device.
Hosted flasher: https://techjeeper.github.io/t-print/
Semver lives in VERSION. GitHub deploys bump the patch by default (python scripts/bump_version.py), then rebuild so firmware + flasher manifest match.
python -m pip install platformio
python scripts/fetch_iconify.py
python -m platformio runFlash via USB:
python -m platformio run -t upload| Method | Path | Purpose |
|---|---|---|
| GET | /api/status |
Device / Wi‑Fi status |
| POST | /api/wifi/scan |
Start async Wi‑Fi scan |
| GET | /api/wifi/scan |
Poll scan status / results |
| PUT | /api/wifi |
Start join {ssid,password} |
| GET | /api/wifi |
Poll join status / LAN IP |
| GET/POST | /api/printers |
List / add |
| PUT/DELETE | /api/printers/:id |
Update / remove |
| POST | /api/printers/:id/test |
Connectivity test |
| POST | /api/test-printer |
Test unsaved profile |
| POST | /api/discover |
LAN printer discovery |
| PUT | /api/device |
Name / brightness |
| POST | /api/factory-reset |
Wipe + reboot |
After joining LAN: http://t-print.local (mDNS) or the device IP.
LilyGO T-Embed CC1101 (ESP32-S3, 16MB flash, 8MB PSRAM, ST7789 170×320, rotary encoder). CC1101 Sub‑GHz is unused for printer control.
MIT