Custom firmware for BIGTREETECH K-Touch and PandaTouch that mirrors the Snapmaker U1 touchscreen over Wi‑Fi.
Built for printers running Paxx Extended Firmware.
PaxxTouch turns your K-Touch / PandaTouch into a wireless remote panel for the U1:
- Full-screen mirror of the U1 UI (480×320) via HTTP snapshot polling
- Touch forwarding to the printer (
POST /screen/touch) - Same protocol as the browser client at
http://<printer-ip>/screen/ - Wi‑Fi + printer IP setup stored on device (NVS)
After Wi‑Fi and printer IP are configured, the device boots straight into the remote mirror — no home menu, no Moonraker dashboard.
Tap the gear icon (top-right) for WiFi Setup, Printer Manager, and About.
| Component | Requirement |
|---|---|
| Hardware | BTT K-Touch or PandaTouch (ESP32-S3, 16 MB flash) |
| Printer | Snapmaker U1 with Paxx Extended Firmware |
| U1 setting | Remote Screen enabled in firmware-config |
| Network | K-Touch and U1 on the same LAN (reachable IP) |
| Auth | Moonraker username/password or API key if nginx auth is enabled |
- Open PaxxTouch Web Flasher in Chrome or Edge
- Connect USB, click Connect USB, then Flash PaxxTouch
- Firmware downloads from the latest GitHub Release
See docs/flasher/README.md for self-hosting on GitHub Pages.
cd PaxxTouch
pio run -e paxxtouch-remote-arduino-3x -t upload --upload-port COM3Package bins for a GitHub Release:
.\scripts\package-firmware.ps1 -Version "0.3.1"Upload the files from dist/firmware/ as release assets (see flasher docs).
The original multi-screen Moonraker client is still available as a separate build target:
pio run -e paxxtouch -t upload --upload-port COM3.\scripts\package-firmware.ps1 -Version "0.3.1" -Env paxxtouchThis is not what the web flasher ships by default.
- Flash PaxxTouch Remote firmware
- Gear → WiFi Setup — connect to your LAN
- Gear → Printer Connection — enter U1 IP, Moonraker port (7125), auth if needed
- On the U1: enable Remote Screen in firmware-config and reboot if prompted
- The mirror connects automatically (
Connecting to U1 remote screen…→ live panel)
Remote Screen uses PNG/JPEG snapshots (~10 polls/s), not video. Static menus feel near-instant; animated U1 screens are limited by PNG decode time on the ESP32. See docs/REMOTE_SCREEN.md.
src/
├── paxx/ Remote screen, PNG/JPEG decode
├── net/ HTTP, WiFi, OTA
├── moonraker/ REST login (auth token for nginx)
├── storage/ NVS WiFi + printer profiles
├── ui/ LVGL remote mirror + setup screens
└── pt/ BTT display BSP (PandaTouch PlatformIO)
GPL-3.0