Skip to content

Virtual Printer

Marko@VMHOMELAB edited this page Jun 13, 2026 · 2 revisions

Virtual Printer

Printbuddy's Virtual Printer feature lets a supported slicer send jobs to Printbuddy as if it were a Bambu Lab printer. Printbuddy can then archive the file, hold it for review, add it to the queue, or proxy it to a real printer.

When to use it

Use a virtual printer when you want slicer uploads to go through Printbuddy instead of sending directly to the physical printer.

Typical workflows:

  • Archive — store the uploaded file immediately.
  • Review — keep the upload pending until you approve it in Printbuddy.
  • Queue — archive the upload and add it to the Printbuddy queue.
  • Proxy — relay the upload to a real printer while Printbuddy remains in the path.

Requirements

  • Printbuddy must be reachable from the slicer machine on your LAN.
  • The Docker host or native host should have a stable IP address or DNS name.
  • Host firewall rules must allow the virtual-printer ports.
  • Bambu Studio / OrcaSlicer must trust the Virtual Printer CA certificate shown in Printbuddy.
  • Docker users should prefer network_mode: host on Linux. Docker Desktop users must publish the listed ports manually.

Required ports

The compose file in the Printbuddy repository documents the required port block. Keep these open between the slicer and the Printbuddy host:

  • 3000/tcp and 3002/tcp — virtual-printer bind/detect services
  • 8883/tcp — MQTT over TLS
  • 990/tcp — FTPS control
  • 6000/tcp — file transfer tunnel
  • 322/tcp — RTSP camera proxy where applicable
  • 2024-2026/tcp — A1/P1S proprietary compatibility ports
  • 50000-50100/tcp — FTP passive data ports

For Docker bridge mode, also set VIRTUAL_PRINTER_PASV_ADDRESS to the Docker host IP so passive FTP advertises an address the slicer can actually reach.

Docker setup

On Linux, the default compose file uses host networking:

services:
  printbuddy:
    image: docker.io/vmhomelabde/printbuddy:latest
    network_mode: host
    cap_add:
      - NET_BIND_SERVICE

For macOS or Windows Docker Desktop, comment out network_mode: host, uncomment the ports: block from docker-compose.yml, and set VIRTUAL_PRINTER_PASV_ADDRESS=<docker-host-ip>.

Setup in Printbuddy

  1. Open Settings → Virtual Printer.
  2. Set an Access Code. Use the same code later in the slicer.
  3. Select the virtual-printer mode: Archive, Review, Queue, or Proxy.
  4. If using Proxy mode, select the target printer.
  5. Download the Virtual Printer CA certificate from Printbuddy.
  6. Import/trust that CA on the machine running the slicer.
  7. Enable the virtual printer.

Setup in the slicer

  1. Add a new Bambu Lab compatible printer connection in Bambu Studio or OrcaSlicer.
  2. Use the Printbuddy host IP or DNS name as the printer address.
  3. Use the access code configured in Printbuddy.
  4. Send a small test print/upload.
  5. Confirm the job appears in Printbuddy according to the selected mode.

Tailscale option

If Printbuddy can access the host Tailscale socket, the Tailscale toggle can expose the virtual printer through the host's Tailscale/MagicDNS address and request a trusted certificate for that name.

This does not remove the need for slicer connectivity. The slicer still has to reach the advertised host/ports.

Troubleshooting

  • Slicer cannot find the virtual printer: verify host firewall rules, Docker networking, and that the slicer can reach the Printbuddy host IP.
  • Upload starts but file transfer fails: check 990/tcp and 50000-50100/tcp; in bridge mode verify VIRTUAL_PRINTER_PASV_ADDRESS.
  • Certificate/trust errors: import the CA certificate from Printbuddy on the slicer machine and restart the slicer.
  • Privileged port errors: keep cap_add: NET_BIND_SERVICE for Docker, or run the native service with the required bind capability.
  • Proxy mode does not relay: confirm the selected target printer is reachable from the Printbuddy host.

Related docs

Clone this wiki locally