Disclaimer: This is an independent resource site. Not affiliated with the Voron project or its development team.

Voron Webcam Streaming Guide — Camera Setup, Moonraker, and Mobile Viewing

Klipper Guide Mod

Watching your Voron print from across the room — or across the world — is one of the great pleasures of owning a 3D printer. A well-configured webcam lets you monitor first layers, check for failures, and share timelapses. This guide covers camera selection, mounting, streaming software (Crowsnest vs MJPG-Streamer), Moonraker integration, remote access via VPN/OctoEverywhere, and multi-camera setups. Last updated: May 2025.

Camera Options for Voron

The best camera for your Voron depends on your budget, enclosure, and what you want to see.

Budget: USB Webcams ($20-$60)

Mid-Range: IP Cameras ($50-$150)

High-End: Machine Vision Cameras ($150-$500)

Mounting Your Camera

Camera placement matters more than camera quality. A poorly positioned 4K camera is worse than a well-positioned 720p camera. Here are the three standard mounting positions for Voron printers:

Position 1: Corner Mount (Full Bed View)

Mount the camera in the top-front corner of the enclosure, looking diagonally across the build plate. This gives you a view of the entire print area. Best for monitoring multi-part prints and detecting overall failures.

Position 2: Toolhead Mount (Nozzle View)

The camera is attached to the toolhead (via a printed mount) and moves with it. This gives you an extreme close-up of the nozzle.

Position 3: Side/Front Mount (Print Progress View)

Camera mounted on the front or side extrusion, looking at the print from a low angle. Popular in Voron builds with acrylic doors.

Streaming Software: Crowsnest vs MJPG-Streamer

There are two main streaming solutions for Klipper-based printers:

Crowsnest (Recommended)

Crowsnest is a modern streaming service developed specifically for Klipper/Moonraker setups. It's included in most KIAUH installations and is the recommended choice for new builds.

# Install/Update via KIAUH
cd ~/kiauh
./kiauh.sh
# Option 5 (Webcam) → Install Crowsnest

Configure in ~/printer_data/config/crowsnest.conf:

[crowsnest]
log_path: ~/printer_data/logs/crowsnest.log
log_level: verbose

[cam 1]
mode: usb
port: 8080
device: /dev/video0
resolution: 1920x1080
max_fps: 30
custom_flags:
v4l2_decoder: hw
rotate: 0

# For a second camera
[cam 2]
mode: usb
port: 8081
device: /dev/video1
resolution: 1280x720
max_fps: 15

Key features:

MJPG-Streamer (Legacy)

MJPG-Streamer is the older, simpler option. It's stable and well-documented but lacks modern features like hardware acceleration and dynamic quality adjustment.

# Install MJPG-Streamer
sudo apt install cmake libjpeg8-dev
cd ~
git clone https://github.com/jacksonliam/mjpg-streamer.git
cd mjpg-streamer/mjpg-streamer-experimental
make
sudo make install

# Run (single camera)
mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 1920x1080 -f 30"               -o "output_http.so -p 8080 -w /usr/local/www"

# Run with two cameras
mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 1280x720 -f 15"               -o "output_http.so -p 8080 -w /usr/local/www" &
mjpg_streamer -i "input_uvc.so -d /dev/video1 -r 640x480 -f 10"               -o "output_http.so -p 8081 -w /usr/local/www" &

Both services provide the same snapshot URL format: http://localhost:{port}/?action=snapshot. Moonraker doesn't care which backend you use — it just needs a valid JPEG URL.

Moonraker Webcam Configuration

Once your streaming service is running, tell Moonraker about the camera. Add to moonraker.conf:

[webcam 1]
# Camera name shown in Mainsail/Fluidd
name: Main View
# Stream URL (MJPG stream)
stream_url: http://localhost:8080/?action=stream
# Snapshot URL (single JPEG frame)
snapshot_url: http://localhost:8080/?action=snapshot
# Icon shown in the UI
icon: camera
# Service type (mjpgstreamer or crowsnest)
service: crowsnest
# Target FPS for the stream
target_fps: 15
# Audio support (rarely used on 3D printer webcams)
audio: False

# Second camera (e.g., nozzle cam)
[webcam 2]
name: Nozzle Cam
stream_url: http://localhost:8081/?action=stream
snapshot_url: http://localhost:8081/?action=snapshot
icon: camera
service: crowsnest
target_fps: 10

Restart Moonraker after making changes:

sudo systemctl restart moonraker

The cameras should appear automatically in Mainsail and Fluidd. If not, check ~/printer_data/logs/moonraker.log for webcam-related errors.

Mainsail / Fluidd Camera Configuration

Mainsail and Fluidd read your webcam configuration from Moonraker. No additional setup is needed. However, you can customize the camera layout in each UI:

Mainsail

Fluidd

Mobile Viewing

Watching your Voron from your phone is essential for remote monitoring. Here are the best options:

Method 1: Direct Moonraker Access (Local Network)

On your home WiFi, simply open Mainsail or Fluidd in your phone's browser:

http://voron-printer-ip:7125
or
http://voron-printer-ip:7125/webcam?stream=1  (direct stream)

Bookmark it on your home screen for one-tap access. Mainsail and Fluidd are fully responsive and work well on mobile.

Method 2: VPN (Tailscale / WireGuard)

For secure remote access without exposing your printer to the internet, use a VPN:

# Tailscale (easiest — free for personal use)
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
# Follow the auth URL — your printer now has a private Tailscale IP
# Access: http://100.x.x.x:7125 from any device on your Tailscale network

WireGuard is a more technical alternative but uses less overhead. Install via:

sudo apt install wireguard
# Follow standard WireGuard peer setup for your printer

Method 3: OctoEverywhere (Cloud Tunneling)

OctoEverywhere provides free cloud-based remote access to your Klipper printer. It creates a secure tunnel from your printer to their cloud, then proxies it to your browser or phone app.

# Install OctoEverywhere
cd ~
git clone https://github.com/QuinnDK/OctoEverywhere.git
cd OctoEverywhere
./install.sh

# Follow the prompts:
# - Enter your printer's local URL (http://localhost:7125)
# - Create an account at https://octoeverywhere.com
# - Link the setup code to your account

Once set up, access your printer at https://app.octoeverywhere.com from any browser — no VPN needed. The free tier supports one printer with 1080p streaming.

Method 4: Native Mobile Apps

Optimizing Stream Quality and Performance

Streaming video on a Raspberry Pi 4 or CB1 can be CPU-intensive. Here's how to optimize:

Lighting for Better Camera Quality

Good lighting improves camera quality more than a better camera. Voron enclosures are dark — the orange or black panels absorb light. Add LED lighting inside the enclosure:

For timelapse, consistent lighting is critical. Use LEDs (not room lights) and disable any auto-exposure features on your camera. The illumination should not change during the print.

Multi-Camera Setup

Running multiple cameras on a single Raspberry Pi is straightforward with Crowsnest. Each camera gets its own device (/dev/video0, /dev/video1, etc.) and port.

Identify your cameras:

# List video devices
ls -la /dev/video*
# Output: /dev/video0, /dev/video1, /dev/video2, /dev/video3

# Check which is which
v4l2-ctl --list-devices
# Shows camera names mapped to /dev/video nodes

# Test each camera
ffplay -f v4l2 /dev/video0
ffplay -f v4l2 /dev/video1

Note: On Raspberry Pi, the CSI camera often appears as /dev/video0 and also /dev/video10 (metadata), plus /dev/video11//dev/video12 for different formats. Use the one that provides the correct format — typically /dev/video0 for the main stream.

For USB cameras, you can use an ID_PATH based symlink to ensure the same camera always gets the same device name, even after reboot:

# Get the ID_PATH for each camera
udevadm info --name=/dev/video0 | grep ID_PATH
# udevadm info --name=/dev/video1 | grep ID_PATH

# Create a udev rule
sudo nano /etc/udev/rules.d/99-camera.rules

SUBSYSTEM=="video4linux", ENV{ID_PATH}=="platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1:1.0", SYMLINK+="cam_main"
SUBSYSTEM=="video4linux", ENV{ID_PATH}=="platform-fd500000.pcie-pci-0000:01:00.0-usb-0:2:1.0", SYMLINK+="cam_nozzle"

# Then use /dev/cam_main and /dev/cam_nozzle in crowsnest.conf

Troubleshooting

Example: Complete Camera Setup

Hardware:
- Raspberry Pi 4B (4GB) — Klipper host
- Logitech C920 — corner mount, full bed view
- Raspberry Pi Camera Module 3 — nozzle view
- WS2812B LED strip — enclosure lighting

Software:
- Crowsnest — webcam streaming
- Tailscale — remote VPN access
- OctoEverywhere — cloud backup access

Config:

# crowsnest.conf
[cam 1]
mode: usb
port: 8080
device: /dev/video0
resolution: 1920x1080
max_fps: 15
v4l2_decoder: hw

[cam 2]
mode: csi
port: 8081
device: /dev/video1
resolution: 1280x720
max_fps: 10
v4l2_decoder: hw

# moonraker.conf
[webcam 1]
name: Full Bed
stream_url: http://localhost:8080/?action=stream
snapshot_url: http://localhost:8080/?action=snapshot
service: crowsnest

[webcam 2]
name: Nozzle
stream_url: http://localhost:8081/?action=stream
snapshot_url: http://localhost:8081/?action=snapshot
service: crowsnest

# Access:
# Local: http://voron.local:7125
# VPN: http://100.64.0.1:7125
# Cloud: https://app.octoeverywhere.com

With this setup, you have full visibility of your Voron from anywhere. The wide-angle camera catches overall print progress and failures, while the nozzle cam lets you inspect first layers and detect clogs early. Combined with LED lighting and remote access, you can keep an eye on your prints from work, bed, or vacation.

Need Camera Mounts and Parts?

We stock Voron-compatible camera mounts, USB cables, LED strips, and CSI ribbon cables — all tested on V2.4, Trident, and Switchwire builds. China-direct sourcing saves you 30-50%.

Shop Camera Gear →
🚨

Voron LDO 商标 · 域名 打包出售

Trademark & domains sold as one package

Voron LDO 商标 (中国区 · China)
voron.cn
voronldo.com
ldovoron.com

有意者请联系 · Contact us:

📧 346290742@qq.com
📞 +86 13522926174