Run the BigTreeTech KNOMI / KNOMI 2 display with OctoPrint. The stock KNOMI firmware only talks to Moonraker (Mainsail/Fluidd). This fork adds a full OctoPrint backend, so the round Voron Stealthburner display works with OctoPrint + OctoKlipper. It also still supports Moonraker.
Important
Only tested on a KNOMI 2 with OctoPrint on a Raspberry Pi 5. The KNOMI 1 build compiles but hasn't been tested on hardware, and neither have other Pi models or hosts. Reports and PRs are welcome.
Companion plugin: OctoPrint-KNOMI (needed for the homing / QGL / bed mesh / pause animations and for Bluetooth).
Coaster is this firmware's mascot and every face on the KNOMI. Instead of looping a GIF, it's drawn live from the KNOMI 2's accelerometer, so it rides along with your toolhead. Its eyes slosh with every move. It gets excited on fast moves and screams on hard travel, then gets used to it. It flinches at endstop hits, shivers through input shaper tests, rides the elevator during QGL and dozes off when nothing moves. It strains to heat the hotend (steam, gritted teeth, sweat), focuses on the first layer, gets sad when a print is cancelled, lonely when WiFi drops, hungry on filament runout and dozes off with the screen. It celebrates when a print finishes, and giggles when you poke it.
It also has a life of its own. It glances around, winks, yawns, hums and sneezes on its own, nods at each layer and cheers at 25, 50 and 75 %. It has feelings that last: printing and finished prints make it happy; failed prints, getting dizzy, being left off for days or heating up with nothing to print make it unhappy or mad. Every Coaster is born with its own likes and dislikes (a favorite season, long or quick prints, fast moves, being poked...), learns your printing habits, and reacts when a print breaks them. It talks (speech bubbles for milestones, the filament and whatever's on its mind), has a favorite filament, keeps an album of your prints together, and shows a clock when idle. It dresses up for the seasons too: holiday lights and snow, New Year and 4th of July fireworks, Halloween bats, spring petals, summer sunglasses and a party hat on its birthday.
Tune how it reacts on the KNOMI's Coaster face page, or put it on your print screen in the designer.
- OctoPrint support. Temps, progress, file list, print/pause/resume/cancel, preheat, extrude, home, QGL and bed mesh from the KNOMI touchscreen, authenticated with an OctoPrint application key.
- Live updates over OctoPrint's websocket (push, not polling), with an HTTP fallback.
- Find OctoPrint on network. One click on the settings page finds OctoPrint over mDNS.
- Bluetooth LE link to the plugin (optional). No API key needed. WiFi can switch off while Bluetooth is connected and comes back automatically if the link drops.
- All settings from OctoPrint, even with WiFi off: the KNOMI describes its settings (
/settings.json, seesrc/settings_schema.cpp) and the plugin builds its settings tab from that. Add a setting there and it shows up in OctoPrint with no plugin change. - Custom GIF animations without reflashing. Upload a GIF to any slot from the web page (homing, probing, QGL, printing, done and more), stored on the KNOMI's flash.
- More animation states: input shaper calibration, PID tuning, nozzle cleaning, filament load/unload and paused (M600, PAUSE, MMU/ERCF).
- Printing screen with useful info: time left, nozzle/bed temps, Z height and layer (on OctoPrint the plugin works the layer out from the file, like the G-code viewer), file name.
- Coaster, the mascot: every face on the KNOMI is drawn live from the accelerometer and printer state, with quirks, lasting feelings, its own likes and dislikes, learned habits and seasonal decorations (see above).
- One-click updates from GitHub, straight from the KNOMI's settings page.
- Self-rescue: if new firmware crashes three times right after starting, the KNOMI goes back to the firmware it had before, no USB cable needed.
- Log page at
/logfor troubleshooting without a USB cable. - Display messages:
M117/SET_DISPLAY_TEXTshow as Coaster speech bubbles. - Print screen designer: a drag-and-drop editor on the KNOMI's web page. Place text with live values, progress rings, gauges, bars and animations, and rotate between up to 4 pages (e.g. a face most of the time, stats every 30 s).
- Auto-dim and screen-off, saved brightness, and wake on touch or printer activity.
- Animations can follow the UI color instead of always being red.
- Redesigned web settings page with dark, medium, light and high-contrast modes.
- Dark boot and WiFi setup screens, with QR-code setup. Scan the KNOMI's screen to join its setup network, then scan again to open the setup page.
- Update check. The settings page tells you when a newer release is out and links the right
.bin. - Backup and restore of all settings and custom animations as one file.
- WiFi fixes:
- joins WPA2-only, WPA3-mixed, WEP and hidden networks
- no longer forgets your WiFi when the router is slow to come back after a power cut (it opens its setup access point alongside and keeps retrying)
- Accelerometer bars that work on any mounting: gravity is removed and the axes are detected automatically.
- Moonraker/Klipper still works. Switch backends on the settings page.
| Status | |
|---|---|
| BTT KNOMI 2 (ESP32-S3) | ✅ tested |
| BTT KNOMI 1 (ESP32) | |
| OctoPrint + OctoKlipper on Raspberry Pi 5 | ✅ tested |
| Other Raspberry Pi models / OctoPrint hosts | |
| Moonraker (Mainsail / Fluidd) | ✅ same as stock |
| Marlin + OctoPrint |
- Download
knomiv2-octoprint-firmware.binfrom the latest release. Every release is built automatically by GitHub Actions. - Open
http://<knomi-ip>/updateand upload it (OTA). Your WiFi and printer settings carry over from stock firmware. - On the KNOMI settings page, set Backend → OctoPrint, press Find OctoPrint on network, and paste an OctoPrint application key.
- Install the OctoPrint-KNOMI plugin for the animations.
Full setup covers Klipper macros, Bluetooth pairing, display settings and the API mapping. See OCTOPRINT.md.
| KNOMI settings page | Custom animations |
|---|---|
![]() |
![]() |
The KNOMI screen images are mockups built from the firmware's real animations and screen layout.
Does the BTT KNOMI work with OctoPrint? Not with the stock firmware, which needs Moonraker. With this firmware, yes: set the backend to OctoPrint and add an application key.
Do I still need Mainsail or Moonraker running just for the KNOMI? No. That's the point of this fork. The KNOMI talks to OctoPrint directly over WiFi or Bluetooth.
Can I use my own GIFs on the KNOMI without rebuilding the firmware?
Yes. Open http://<knomi-ip>/gifs and upload a GIF to any slot. It shows up immediately.
Can the KNOMI connect over Bluetooth instead of WiFi?
Yes, the KNOMI 2 has Bluetooth LE. Pair it once from the Pi with bluetoothctl, then enable it in the plugin. See OCTOPRINT.md.
How do I go back to stock?
Flash BTT's knomi2_firmware.bin from /update. Stock firmware resets the settings to defaults, so you'll re-enter WiFi through its access point.
Is this affiliated with BIGTREETECH? No. It's a community fork of their open firmware source.
pio pkg install -e knomiv2
cp "lv_disp_(bugfix_backup).c" .pio/libdeps/knomiv2/lvgl/src/core/lv_disp.c # LVGL display fix
pio run -e knomiv2
Before releasing, run the checks (GitHub Actions runs them too and won't publish a release that fails):
python tools/check.py --build # stack per task, web routes, tables, page scripts, size
python tools/check.py --device <knomi-ip> --soak 180 # after flashing: watches it for 3 minutes
python tools/check.py --device <knomi-ip> --flash # flash the build over WiFi, then watch it
python tools/check.py --device <knomi-ip> --perf 600 # measure fps, draw time, CPU per core/task and memory over WiFi; saves knomi-perf.csv
Output: .pio/build/knomiv2/firmware.bin. Flash it from /update, or with pio run -e knomiv2 -t upload over USB. Use -e knomiv1 for the KNOMI 1.
The original firmware, UI and animations are by BIGTREETECH. The upstream repository has no license file (bigtreetech/KNOMI#54). The changes in this fork are provided on the same terms as the upstream code.




