Skip to content

Plugins

Lucio edited this page May 25, 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: /oem/printer_data/config/bespok3d/data/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

Browsing the catalog

The plugin catalog is available in the main app window. When you have at least one printer configured, the catalog shows all available plugins with:

  • Category-colored cards with name, description, publisher trust tier, version, and install count
  • Search — filters by name, identifier, and tagline
  • Category chips — narrow to Camera, Filament, or Screen; or view all grouped by section
  • Trust filter — show only Project, Community, or any tier
  • Grid / list view — switch between a grid of cards and a compact list
  • Density — Compact, Comfortable, or Spacious column widths (set in Settings → General)

Click any plugin to open its detail panel, which shows the full description, required capabilities, configuration fields, dependencies, and which files and endpoints it creates on the printer.

One-click install is not yet available. The Install button is present but disabled. Until it's wired up, plugins install over SSH using the POC install scripts below.


Installing plugins today

Until the in-app install flow is 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

  • One-click install from the in-app catalog
  • Plugin updates and version management
  • Plugin configuration UI (config fields are already shown in the detail panel)
  • USB airgap install (drop a signed .b3p bundle on a USB stick, auto-installs on the printer)
  • Third-party plugin sources — subscribe to community-curated catalogs

Clone this wiki locally