Skip to content

Plugins

Lucio edited this page May 24, 2026 · 9 revisions

Plugins

Plugins are what make your printer yours. Each plugin is a self-contained package that adds a capability — camera streaming, filament tracking, remote screen, and so on. Plugins install into /userdata/bespok3d/usr/local/plugins/<name>/ and integrate with Klipper, Moonraker, and nginx through symlinks.


Available plugins

All plugins listed here are confirmed working on the Snapmaker U1.

camera-hw-accel

Hardware-accelerated camera streaming using the U1's built-in MIPI camera or a USB camera. Uses the Rockchip NPU for MJPEG encoding — no CPU overhead for the stream.

  • Endpoints: /snapshot.jpg (single frame), /stream.mjpg (MJPEG stream)
  • Requires: root access (kills rkaiq_3A_server to free the camera)
  • Autostart: yes

remote-screen

Mirrors the printer's built-in touchscreen to the web interface via a framebuffer capture stream. Useful for monitoring prints without physically being next to the printer.

  • Autostart: yes, via S90lmd override

rfid-ntag

NTAG215 RFID filament detection using the U1's built-in SPI RFID reader. Reads OpenSpool-compatible tags and writes the filament data to a shared JSON file that Moonraker-aware tools can read.

  • Writes: /userdata/bespok3d/var/db/rfid_data.json
  • Compatible with: OpenSpool tags, custom NTAG215 tags formatted for spool tracking
  • Autostart: yes

spoolman

Integrates with Spoolman — the open source filament spool tracker. Reads rfid_data.json (set by rfid-ntag) on startup and synchronises spool data with your Spoolman instance through a Moonraker component.

  • Requires: rfid-ntag (for RFID-based spool detection) or manual spool entry in Spoolman
  • Config: Spoolman server URL (portable across printers)
  • Autostart: via Moonraker

Installing plugins today

The in-app plugin browser is in development. Until it's ready, plugins install from the command line over SSH using the POC install scripts.

Requirements: SSH access to your printer (enrollment must be complete first).

# Clone the repo
git clone https://github.com/lucio/bespok3d  # replace with actual URL
cd bespok3d/POC_src

# Install a plugin — example: camera
./plugins/camera-hw-accel/install.sh root@<printer-ip>

See POC_src/README.md in the repo for full installation instructions, exact commands, and known issues per plugin.


Plugin persistence across OTA updates

Plugins survive Snapmaker firmware updates. The canonical source of every installed file lives in /userdata/bespok3d/ — the persistent partition that OTA never touches. What OTA wipes is /home/lava/ (Klipper source, Moonraker source). After an OTA update:

  1. Re-run each plugin's install.sh — this recreates symlinks from Klipper/Moonraker dirs into /userdata/bespok3d/
  2. Everything else (nginx, init scripts, Bespok3d config) is already in persistent storage and requires no action

The base layer itself (enrollment) is also persistent — you never need to re-enroll after an OTA.


Coming soon

  • In-app plugin browser with one-click install
  • Plugin updates and version management
  • USB airgap install (drop a signed .b3p bundle on a USB stick, auto-installs on the printer)
  • Plugin configuration UI

Clone this wiki locally