A little screen for a lot of compute.
Sparklet turns a Waveshare ESP32-C6 AMOLED touchscreen into a native, Wi-Fi-connected companion for sparkDash. Swipe through your DGX nodes, check GPU allocation and temperature, and see which model is running—all from a small display on your desk.
One node at a time. Real metrics from your existing server. No server changes.
V1 status: phone setup and live five-node operation have been demonstrated on the actual board. V1 implements the daily-use dashboard and has passed bounded setup, transport, memory and interaction checks. The earlier USB stall recovered after physical reconnection; its cause was not isolated. See the validation report. The 24-hour soak test is explicitly excluded.
These close-ups are cropped from real device photographs of an earlier development build. The desk, hands and cable are outside the crop; the photographed UI is unchanged.
![]() |
![]() |
![]() |
| Head node | Worker node | Node details |
The missing-glyph rectangle visible in these photos was subsequently addressed with display-only punctuation normalization. The corrected dash and navigation/dim-wake behavior were subsequently confirmed on the physical device. The cover above is an original generated illustration; the photos preserve the actual recorded screen content. Asset provenance
- Browse your cluster: discover up to 16 nodes in server order; swipe or tap arrows, with wraparound navigation.
- Read the useful numbers: GPU allocation, available memory, utilization, temperature and power; CPU, root storage and network rates in Details.
- Understand node roles: show the first available LLM backend on head/standalone nodes and the head relationship on workers.
- Set up with your phone: scan a Wi-Fi QR, scan the setup-page QR, then enter your local network and server details.
- Turn the screen: automatic rotation through all four orientations, with aligned touch controls and a saved Settings toggle (source build; not included in the v1.0.0 bundle).
- Keep running independently: saved settings, automatic reconnect, cached data during outages and adjustable inactivity dimming.
Sparklet is read-only. It does not shut down, wake, update or otherwise control DGX nodes. “Received Ns ago” describes HTTP receipt time, not collector sample age. Missing values and valid zero are handled separately.
| Component | Configuration |
|---|---|
| Board | Waveshare ESP32-C6-Touch-AMOLED-2.16 |
| Display | 480 × 480 AMOLED, capacitive touch |
| Network | Personal 2.4 GHz Wi-Fi |
| Framework | ESP-IDF 5.5.3, target esp32c6 |
| UI | LVGL 9; partial rendering with 11,520-byte draw and rotation buffers (23,040 bytes total) |
| Power | Primarily USB |
| Server | Existing sparkDash HTTP API; default http://dgx01.local:5555 |
This firmware targets that exact board. Its schematic-corrected display CS and touch interrupt are GPIO15 and GPIO5, respectively. Do not reuse an ESP32-S3 or another display-size pin map. Hardware details · Provenance
Download the v1.0.0 firmware bundle and checksums, or follow the source build instructions below.
With firmware installed:
- Scan the display's join setup Wi-Fi QR code and accept joining
SparkDash-XXXX. - Stay connected when your phone reports “No Internet Connection.” Tap Next: setup page and scan the URL QR, or open
http://192.168.4.1. - Enter your personal 2.4 GHz Wi-Fi credentials and sparkDash URL in the local portal.
- Save, wait for connection, then browse nodes with swipes or the arrow buttons.
The temporary setup password changes each session. Saved credentials survive ordinary firmware updates. The firmware currently keeps the on-device sparkDash label and the SparkDash-XXXX setup SSID; Sparklet is the project/repository name.
Full user guide · Connection troubleshooting
Install the pinned ESP-IDF SDK outside the repository and activate its export.sh. From this repository's root:
idf.py -C firmware/sparkdash build
cmake -S tests/host -B tests/host/build
cmake --build tests/host/build
ctest --test-dir tests/host/build --output-on-failure
python3 tests/host/test_http_fixtures.pyThe dependency lock and build defaults are committed. Shared-code tests use address/undefined-behavior sanitizers. Two separate build directories produced identical candidate firmware binaries; that is separate from runtime acceptance.
For hardware discovery, install uv and run:
uv run scripts/esp32_serial.py listRead the build/flash guide and USB instructions before flashing. Preserve a verified full backup, select the correct USB identity, and use generated flash arguments. Opening USB serial can reboot the display. Factory and custom-snapshot restoration have been physically tested; backups remain private and outside Git.
Start with the complete documentation index.
| Guide | Covers |
|---|---|
| User guide | QR setup, controls, metric interpretation, Settings, rotation and dimming |
| Architecture and API | Task ownership, bounded parsing, data mappings, polling and NVS |
| Development | Pinned SDK, reproducible inputs and normal/QA builds |
| Testing | Host tests, real ESP32 failure tests, live API comparison and physical acceptance |
| Release and operations | Bundles, checksums, flashing, diagnostics and troubleshooting |
| Validation status | Verified results, failed checks and remaining work |
| Recovery | Verified full-flash backup and restore procedure |
| Bring-up notes | Hardware discoveries and implementation evidence |
firmware/sparkdash/ ESP-IDF application, board wrapper and shared core
scripts/ USB discovery and bounded serial monitoring
tests/host/ Shared-code sanitizer and HTTP fixture tests
tools/ Mock server, device validators and release packager
docs/ User/developer guides and visual assets
notes/ Reviewed hardware and validation history
Generated builds, releases, raw logs, flash backups and local configuration are ignored. They are not part of the published source or public screenshots.
V1 focuses on the everyday node-card experience. OTA, charts/history, automatic slideshows, MQTT, Home Assistant, remote actions, audio, IMU, SD storage and battery management are outside this release.
Built around the sparkDash API and the Waveshare board integration, with ESP-IDF, LVGL and their managed components. awesome-esp informed the initial exploration. The research notes and source provenance record the underlying references and license limitations; no blanket license grant for all upstream material is implied.



