Complete feature list for the advanced KNOMI multi-display system.
Active → 60s idle → Idle GIF → 5min → Sleep
- Best for: Standalone displays
- Configuration: Adjustable timeouts
- Wake: Touch or status change
Klipper Active → Klipper Idle → 30s delay → Display Sleep
- Best for: Integrated printer systems
- Configuration: Delay after Klipper idle
- Wake: Automatic on print/heating/homing
- Safety: Never sleeps during restart or errors
LEDs ON → Display Active
LEDs OFF → Display Sleep
- Best for: Synchronized lighting systems
- Configuration: External LED controller
- Wake: Instant when LEDs turn on
- Active: ~300mA per display
- Sleep: ~50mA per display
- Savings: 83% reduction
- 6 displays: Save ~1500mA (1.5A) when sleeping!
✅ Touch input
✅ Print start
✅ Homing begins
✅ Bed heating starts
✅ Nozzle heating starts
✅ Probing/QGL active
✅ Klipper state change
✅ Manual command (API)
- 6 independent displays (expandable)
- Auto-detection via hostname (
knomi-t0toknomi-t5) - Tool-specific GIFs from filesystem
- Individual control or synchronized
- No master/slave - fully distributed
- Circular progress ring (animated)
- Percentage display (0-100%)
- Layer counter (current/total)
- ETA calculation with adaptive buffering
- Tool indicator showing active toolhead
- Temperature display for current tool
- Real-time plotting of nozzle/bed temps
- Auto-scaling Y-axis (0-300°C)
- 120-second history window
- Smooth curves with data interpolation
- Clean black background (no artifacts)
- Homing - Animated axis movement
- Probing - Bed leveling visualization
- QGL - Quad gantry leveling
- Heating - Progress bars with temps
- Print Complete - Success animation (10s)
- Tool Standby - Tool-specific GIF loop
- Swipe gestures for navigation
- Tap for menu access
- Long press for settings
- Multi-touch capable
- Instant wake from sleep
- Station Mode (STA) - Connect to existing WiFi
- Access Point Mode (AP) - Create hotspot for setup
- Web Portal for configuration (192.168.4.1)
- mDNS support (
knomi-t0.local) - Automatic reconnection with exponential backoff
POST /api/sleep - Put display to sleep
POST /api/wake - Wake display up
GET /api/sleep/status - Get current sleep state
# Sleep display
curl -X POST http://knomi-t0.local/api/sleep
# Wake display
curl -X POST http://knomi-t0.local/api/wake
# Check status
curl http://knomi-t0.local/api/sleep/status
# Returns: {"sleeping": false, "mode": "klipper_sync"}- Password masking in logs (WiFi credentials)
- No plaintext passwords in serial output
- Secure web interface for configuration
- Rate limiting on API endpoints
KNOMI_SLEEP # Sleep all displays
KNOMI_WAKE # Wake all displaysKNOMI_SLEEP_ALL_RETRY # 3 retries per display
KNOMI_WAKE_ALL_RETRY # Parallel executionDisplays automatically wake on:
G28 # Homing
M109 # Wait for nozzle temp
M190 # Wait for bed temp
QUAD_GANTRY_LEVEL
BED_MESH_CALIBRATE
PRINT_START- Real-time print progress (via Moonraker)
- Temperature updates (1Hz)
- Layer information from slicer
- Print time remaining (ETA)
- Tool changes reflected instantly
Located in src/gif/:
gif_homing.c- Axes movinggif_probing.c- Bed meshgif_qgling.c- Gantry levelinggif_heated.c- Heating indicatorgif_print.c- Printing animationgif_print_ok.c- Success checkmarkgif_printed.c- Completion screengif_voron.c- VORON logogif_wifi.c- WiFi connecting
Located in data/gifs/:
tool_0.gifthroughtool_5.gif- Tool-specificprint_progress_bg.gif- Background animation
Specifications:
- Resolution: 240x240 pixels
- Frame rate: 15-30fps recommended
- Duration: 2-5 seconds (looping)
- Format: GIF89a with transparency
- Size: <200KB recommended (<500KB max)
Optimization:
- Use ezgif.com for compression
- Reduce colors to 64-128 palette
- Remove dithering for cleaner look
- Test on actual hardware before deploying
- Purpose: Input shaper, vibration analysis
- Axes: X, Y, Z
- Range: ±2g / ±4g / ±8g / ±16g (configurable)
- Sample rate: Up to 1600Hz
- Interface: I2C
- Status: Displayed during printing
- Temperature: -40°C to +125°C (±0.2°C accuracy)
- Humidity: 0-100% RH (±1.8% accuracy)
- Update rate: 1Hz
- Use cases:
- Chamber monitoring
- Filament drying tracking
- Enclosure temperature
- Resolution: 240x240 (round)
- Colors: 65K (16-bit RGB565)
- Interface: SPI (80MHz)
- Refresh rate: ~60fps
- Viewing angle: 170° (all directions)
- Brightness: 400 cd/m² typical
- Type: Capacitive
- Points: 1 simultaneous touch
- Gestures: Swipe, tap, long-press
- Response time: <10ms
- Interface: I2C
- Sleep current: <2µA
Note: Camera and Buttons/LEDs share pins - choose one!
- Buttons: 3x tactile switches
- LEDs: 3x RGB LEDs
- Use cases: Tool status, manual control
- Camera: OV2640 (2MP)
- Use cases: Time-lapse, monitoring
- Framerate: ~60fps typical
- UI thread: 10ms budget (LVGL)
- Buffer: Full-screen double-buffer (PSRAM)
- Animations: Smooth 30fps GIF playback
- API latency: <50ms (local network)
- Moonraker polling: 1Hz (configurable)
- Multi-display sync: <500ms (6 displays)
- Retry success: 95% (3 attempts)
- Flash: ~4MB firmware + 6MB filesystem
- PSRAM: ~2MB (GIFs, UI buffers)
- SRAM: ~200KB (stacks, variables)
- Heap fragmentation: <5% typical
build_flags =
-DKNOMIV2 # Hardware version
-DBOARD_HAS_PSRAM # Enable PSRAM
-Os # Optimize for size#define KNOMI_USE_BUTTONS_LEDS // Enable buttons/LEDs
// OR
#define KNOMI_USE_CAMERA // Enable camera (mutually exclusive)#define DISPLAY_IDLE_TIMEOUT_SEC 60 // Idle after 60s
#define DISPLAY_SLEEP_TIMEOUT_SEC 300 // Sleep after 5min
#define DISPLAY_SLEEP_DELAY_AFTER_KLIPPER_IDLE_SEC 30 // Klipper sync delay- WiFi credentials
- Display hostname
- Backlight brightness
- Theme colors
SET_KNOMI_MODE MODE=manual # Set sleep mode
SET_KNOMI_TIMEOUT IDLE=30 SLEEP=120 # Adjust timeouts
KNOMI_ENABLE_SLEEP ENABLE=0 # Disable auto-sleep- Baud rate: 115200
- Logs: Color-coded by severity
- Categories:
[Display Sleep]- Power management[FS]- Filesystem operations[Moonraker]- API communication[Touch]- Input events[LVGL]- UI rendering
// Uncomment in platformio.ini
upload_protocol = custom
upload_url = http://knomi-t0.local/update- English (current)
- German (planned)
- French (planned)
- Spanish (planned)
- Chinese (planned)
- VORON Red (default)
- Classic Blue
- Midnight Dark
- Custom RGB
- Deep sleep mode (WiFi off)
- Adaptive timeouts (learning)
- MQTT integration
- Multi-language UI
- OTA updates over WiFi
- Theme editor (web interface)
- Custom status screens
- Widget system
- Voice control integration
- Camera support (time-lapse)
- Mobile app companion
- Cloud sync (optional)
- Display per toolhead shows active tool
- Independent status for each color
- Track temperatures per extruder
- Visual confirmation of tool changes
- Monitor multiple printers from one location
- Synchronized sleep saves power
- Remote wake via API
- Consistent UI across all machines
- Serial debugging with live UI
- API testing without Klipper
- Rapid prototyping of new screens
- Isolated testing per display
- Home automation (Home Assistant)
- LED synchronization
- Custom notification system
- Event-driven displays
- Reduce GIF sizes for faster loading
- Use Klipper sync mode for best power savings
- Adjust brightness to reduce eye strain
- Enable serial logs only when debugging
- mDNS not working? Use IP addresses directly
- Displays not syncing? Increase retry count
- Wake-up unreliable? Check Moonraker connection
- High power usage? Verify sleep is actually active
- Name displays consistently (
knomi-t0,knomi-t1, etc.) - Keep WiFi signal strong (avoid metal enclosures blocking)
- Update all displays to same firmware version
- Backup configuration before major changes
- Test sleep/wake after firmware updates
For detailed implementation and setup, see:
- README.md - Main documentation
- CHANGELOG.md - Version history
- docs/ - Detailed guides
Last Updated: January 28, 2025 Version: 1.0.0