From fb98d40beb21f9d7f387cb8090f438cd09193d6b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 20 Feb 2026 10:51:55 +0000 Subject: [PATCH 1/3] Initial plan From 4c5287b35411b282d649752821c1d0a31f8d5555 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 20 Feb 2026 10:56:51 +0000 Subject: [PATCH 2/3] Add printer remote setup documentation (Klipper/Mainsail, multi-camera, Tailscale) Co-authored-by: falkorichter <50506+falkorichter@users.noreply.github.com> --- README.md | 6 + docs/printer-remote-setup.md | 339 +++++++++++++++++++++++++++++++++++ 2 files changed, 345 insertions(+) create mode 100644 docs/printer-remote-setup.md diff --git a/README.md b/README.md index 8b13789..32e80f5 100644 --- a/README.md +++ b/README.md @@ -1 +1,7 @@ +# Agentic Sessions +Documentation and configuration for the **Elegoo OrangeStorm Giga** 3D printer remote setup. + +## Guides + +- [Printer Remote Setup](docs/printer-remote-setup.md) – Remote monitoring and control via Klipper/Mainsail, multiple cameras, and Tailscale VPN diff --git a/docs/printer-remote-setup.md b/docs/printer-remote-setup.md new file mode 100644 index 0000000..bbafd2b --- /dev/null +++ b/docs/printer-remote-setup.md @@ -0,0 +1,339 @@ +# OrangeStorm Giga – Remote Setup Guide + +This guide covers remote monitoring and control of the **Elegoo OrangeStorm Giga** 3D printer +using its built-in Klipper firmware, a Raspberry Pi for multi-camera streaming, and Tailscale +for secure remote access from anywhere in the world. + +--- + +## Table of Contents + +1. [Architecture Overview](#architecture-overview) +2. [OctoPrint vs Mainsail/Fluidd](#octoprint-vs-mainsailfluidd) +3. [Printer's Built-in Web Interface](#printers-built-in-web-interface) +4. [Raspberry Pi Setup](#raspberry-pi-setup) +5. [Multi-Camera Setup with Crowsnest](#multi-camera-setup-with-crowsnest) +6. [Tailscale Remote Access](#tailscale-remote-access) +7. [Moonraker Configuration](#moonraker-configuration) +8. [Camera Placement Recommendations](#camera-placement-recommendations) +9. [Mobile Access](#mobile-access) +10. [References](#references) + +--- + +## Architecture Overview + +``` + ┌──────────────────────────────┐ + │ OrangeStorm Giga Printer │ + │ • Klipper firmware │ + │ • Moonraker API (port 7125) │ + │ • Mainsail web UI (port 80) │ + └────────────┬─────────────────┘ + │ LAN (Ethernet or WiFi) + ┌────────────┴─────────────────┐ + │ Raspberry Pi 4 / 5 │ + │ • Crowsnest (multi-camera) │ + │ • Camera 1 – filament view │ + │ • Camera 2 – overview │ + │ • Camera 3 – detail/nozzle │ + │ • Tailscale node │ + └────────────┬─────────────────┘ + │ Tailscale VPN (WireGuard) + ┌────────────┴─────────────────┐ + │ Remote Device │ + │ (phone, laptop, tablet) │ + │ • Mainsail / Fluidd UI │ + │ • Mobileraker app │ + │ • Live camera feeds │ + └──────────────────────────────┘ +``` + +--- + +## OctoPrint vs Mainsail/Fluidd + +> **Short answer: use Mainsail or Fluidd, not OctoPrint.** + +The OrangeStorm Giga runs **Klipper** firmware (not Marlin). OctoPrint was designed primarily +for Marlin-based printers and, while it can be made to work with Klipper, it requires additional +plugins and misses many Klipper-specific features. + +| Feature | OctoPrint + Klipper | Mainsail / Fluidd | +|---|---|---| +| Native Klipper support | ⚠️ via plugin | ✅ built-in | +| Moonraker API | ⚠️ partial | ✅ full | +| Pressure advance / input shaper | ⚠️ limited | ✅ full | +| Exclude objects mid-print | ❌ | ✅ | +| Plugin ecosystem | ✅ large | growing | +| Already on the printer | ❌ | ✅ | + +The OrangeStorm Giga ships with Mainsail (or a compatible Klipper UI) accessible directly via +the printer's IP address. **No extra hardware or software is needed to get a full web-based +control panel.** + +For advanced users who want a fully open-source stack without any Elegoo-specific services, +the community project [OpenOrangeStorm](https://github.com/OpenNeptune3D/OpenOrangeStorm) +installs vanilla Klipper + Moonraker + Fluidd/Mainsail. + +--- + +## Printer's Built-in Web Interface + +The printer supports WiFi and Ethernet (LAN) connections. + +1. Connect the printer to your local network (WiFi or Ethernet cable). +2. Check the IP address shown on the printer's touchscreen display. +3. Open a browser on any device on the **same network** and navigate to: + + ``` + http:// + ``` + + Example: `http://192.168.1.100` + +The Klipper web interface provides: + +- **Temperature Display** – hotend and heated bed temperatures with preheating controls +- **Movement Control** – move the printhead along X/Y/Z axes; set compensation after levelling +- **Console** – send raw G-code commands; view executed commands +- **Task List** – drag-and-drop G-code files from ELEGOO Cura for printing +- **Fan and Output** – control part cooling fan and LED lights +- **Printer Limit** – maximum acceleration control (normally no need to change) + +--- + +## Raspberry Pi Setup + +A Raspberry Pi acts as: + +- A **multi-camera streaming host** (Crowsnest service, USB cameras) +- A **Tailscale node** to bridge the local printer network to the internet + +### Recommended Hardware + +- Raspberry Pi 4 (2 GB RAM minimum) or Raspberry Pi 5 +- MicroSD card (16 GB+) or USB SSD +- Powered USB hub (if connecting more than 2 cameras) +- 2–4 USB webcams (UVC-compatible, e.g. Logitech C270, C920, or similar) + +### OS Installation + +Flash [Raspberry Pi OS Lite (64-bit)](https://www.raspberrypi.com/software/) using the Raspberry +Pi Imager. Enable SSH and configure WiFi credentials in the imager before flashing. + +Alternatively, flash [MainsailOS](https://docs-os.mainsail.xyz/) which includes Klipper, +Moonraker, Mainsail, and Crowsnest pre-installed — useful if you want the Pi to also act as a +secondary Klipper host or print server. + +### Install Crowsnest (camera streaming) + +```bash +# Update the system +sudo apt update && sudo apt upgrade -y + +# Install Crowsnest +cd ~ +git clone https://github.com/mainsail-crew/crowsnest.git +cd crowsnest +sudo make install +``` + +--- + +## Multi-Camera Setup with Crowsnest + +### Identify Camera Devices + +After plugging in USB cameras, list them using persistent paths (these do not change on reboot): + +```bash +ls /dev/v4l/by-id/ +``` + +Example output: +``` +usb-Logitech_Webcam_C270_AABBCCDD-video-index0 +usb-Logitech_HD_Webcam_C920_EEFF0011-video-index0 +usb-Generic_USB_Camera_22334455-video-index0 +``` + +### Configure Crowsnest + +Edit `/etc/crowsnest/crowsnest.conf`: + +```ini +[crowsnest] +log_level: verbose +log_path: /var/log/crowsnest/crowsnest.log +delete_log: false + +# Camera 1 – overview (wide angle, full printer) +[cam overview] +mode: ustreamer +device: /dev/v4l/by-id/usb-Logitech_Webcam_C270_AABBCCDD-video-index0 +port: 8080 +resolution: 1280x720 +max_fps: 15 + +# Camera 2 – filament view (spool / filament path) +[cam filament] +mode: ustreamer +device: /dev/v4l/by-id/usb-Logitech_HD_Webcam_C920_EEFF0011-video-index0 +port: 8081 +resolution: 1280x720 +max_fps: 15 + +# Camera 3 – detail / nozzle view +[cam detail] +mode: ustreamer +device: /dev/v4l/by-id/usb-Generic_USB_Camera_22334455-video-index0 +port: 8082 +resolution: 640x480 +max_fps: 10 +``` + +Replace the `device` paths with the actual paths from your `ls /dev/v4l/by-id/` output. + +### Restart Crowsnest + +```bash +sudo systemctl restart crowsnest +sudo systemctl status crowsnest +``` + +### Add Camera Streams to Mainsail + +In the Mainsail UI → **Settings → Webcams → Add Webcam** for each camera: + +| Name | URL | +|---|---| +| Overview | `http://:8080/?action=stream` | +| Filament | `http://:8081/?action=stream` | +| Detail | `http://:8082/?action=stream` | + +Replace `` with your Raspberry Pi's local IP address. + +--- + +## Tailscale Remote Access + +Tailscale creates a secure peer-to-peer WireGuard VPN, allowing you to access the printer and +camera streams from anywhere in the world — without exposing any ports to the internet. + +### Install Tailscale on the Raspberry Pi + +```bash +curl -fsSL https://tailscale.com/install.sh | sh +sudo tailscale up +``` + +Follow the authentication link shown in the terminal to connect the Pi to your Tailscale account. + +### Install Tailscale on Remote Devices + +- **macOS / Windows**: download from [tailscale.com/download](https://tailscale.com/download) +- **iOS / Android**: install the Tailscale app from the App Store / Play Store + +Sign in with the same Tailscale account on all devices. + +### Find the Pi's Tailscale IP + +```bash +tailscale ip -4 +# Example output: 100.64.0.1 +``` + +### Access the Printer Remotely + +Once Tailscale is running on both the Pi and your remote device, access Mainsail: + +``` +http:// +``` + +Access camera streams: +``` +http://:8080/?action=stream # Overview +http://:8081/?action=stream # Filament +http://:8082/?action=stream # Detail +``` + +> **Security note**: Never forward printer ports directly to the internet via your router. +> Tailscale's VPN ensures all traffic is encrypted and authenticated. + +--- + +## Moonraker Configuration + +If the Pi also runs Moonraker (e.g. via MainsailOS), configure it to trust Tailscale IP ranges. +Edit `~/printer_data/config/moonraker.conf`: + +```ini +[server] +host: 0.0.0.0 +port: 7125 + +[authorization] +trusted_clients: + 127.0.0.1 + 192.168.0.0/16 # local LAN (adjust to your subnet) + 10.0.0.0/8 # local LAN alternative + 100.64.0.0/10 # Tailscale subnet +cors_domains: + http://localhost + http://localhost:7136 + http://*.local + http://*.lan +``` + +Restart Moonraker after changes: + +```bash +sudo systemctl restart moonraker +``` + +--- + +## Camera Placement Recommendations + +The OrangeStorm Giga has an 800 × 800 × 1000 mm build volume. Suggested camera positions: + +| Camera | Position | Purpose | +|---|---|---| +| **Overview** | Front-top corner, wide angle | Full print bed and Z progress; print start/end check | +| **Filament** | Near the filament spool(s) | Monitor filament runout, tangles, or colour changes | +| **Detail / Nozzle** | Side of the printhead carriage (magnetic mount) | Close-up of the nozzle area; layer adhesion, stringing, blobs | + +Tips: +- Use cameras with a manual focus ring or macro capability for the nozzle/detail camera. +- Ensure adequate lighting — the printer's built-in LED can be controlled via the web UI. +- Use flexible/gooseneck USB mounts to aim cameras precisely without permanent attachment. +- A powered USB hub on the Pi avoids power drop issues with multiple cameras. + +--- + +## Mobile Access + +**Mobileraker** is a mobile app for controlling Klipper printers, available for iOS and Android. + +1. Install Mobileraker from the App Store / Play Store. +2. Add printer: + - **Host**: `` (when remote) or `` (when on LAN) + - **Port**: `7125` (Moonraker default) +3. Mobileraker shows temperatures, print progress, camera feeds, and allows you to change + print speed and extrusion rate (flow) mid-print via the Klipper `SET_VELOCITY_LIMIT` and + `M220`/`M221` G-code commands. + +--- + +## References + +- [Elegoo OrangeStorm Giga Wiki](https://wiki.elegoo.com/orangeStorm-giga) +- [Elegoo OrangeStorm Giga User Manual (PDF)](https://download.elegoo.com/06%20FDM%20Printer/03%20OrangeStorm%20Giga/1.User%20Manual/OrangeStorm%20Giga-User%20Manual-V1.5-20240604.pdf) +- [OpenOrangeStorm – community open-source firmware](https://github.com/OpenNeptune3D/OpenOrangeStorm) +- [Moonraker documentation](https://moonraker.readthedocs.io/en/latest/configuration/) +- [Mainsail documentation](https://docs.mainsail.xyz/) +- [Crowsnest – webcam service for multiple cameras](https://github.com/mainsail-crew/crowsnest) +- [Tailscale installation](https://tailscale.com/download) +- [Mobileraker app](https://github.com/Clon1998/mobileraker) From ca10927b8cddb68e4a56bf8160fd6af81c9dfe34 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 20 Feb 2026 12:34:54 +0000 Subject: [PATCH 3/3] docs: add Crowsnest vs MotionEyeOS streaming comparison section Co-authored-by: falkorichter <50506+falkorichter@users.noreply.github.com> --- docs/printer-remote-setup.md | 58 ++++++++++++++++++++++++++++++++---- 1 file changed, 52 insertions(+), 6 deletions(-) diff --git a/docs/printer-remote-setup.md b/docs/printer-remote-setup.md index bbafd2b..662d15b 100644 --- a/docs/printer-remote-setup.md +++ b/docs/printer-remote-setup.md @@ -12,12 +12,13 @@ for secure remote access from anywhere in the world. 2. [OctoPrint vs Mainsail/Fluidd](#octoprint-vs-mainsailfluidd) 3. [Printer's Built-in Web Interface](#printers-built-in-web-interface) 4. [Raspberry Pi Setup](#raspberry-pi-setup) -5. [Multi-Camera Setup with Crowsnest](#multi-camera-setup-with-crowsnest) -6. [Tailscale Remote Access](#tailscale-remote-access) -7. [Moonraker Configuration](#moonraker-configuration) -8. [Camera Placement Recommendations](#camera-placement-recommendations) -9. [Mobile Access](#mobile-access) -10. [References](#references) +5. [Camera Streaming: Crowsnest vs MotionEyeOS](#camera-streaming-crowsnest-vs-motioneyeos) +6. [Multi-Camera Setup with Crowsnest](#multi-camera-setup-with-crowsnest) +7. [Tailscale Remote Access](#tailscale-remote-access) +8. [Moonraker Configuration](#moonraker-configuration) +9. [Camera Placement Recommendations](#camera-placement-recommendations) +10. [Mobile Access](#mobile-access) +11. [References](#references) --- @@ -141,6 +142,50 @@ sudo make install --- +## Camera Streaming: Crowsnest vs MotionEyeOS + +Two common solutions for multi-camera streaming on a Raspberry Pi are **Crowsnest** and +**MotionEyeOS**. Here is a comparison to help you choose. + +| Feature | Crowsnest | MotionEyeOS | +|---|---|---| +| **Primary purpose** | 3D printer webcam streaming | General-purpose video surveillance | +| **Klipper / Mainsail integration** | ✅ Native — streams appear directly in the UI | ❌ Separate system, no Klipper awareness | +| **Stream latency** | Very low (mjpeg/ustreamer or WebRTC) | Higher — tuned for surveillance, not real-time | +| **Multi-camera support** | ✅ Multiple `[cam]` sections, separate ports | ✅ Multiple cameras via web dashboard | +| **Motion detection** | ❌ Not included | ✅ Built-in, configurable per camera | +| **Recording / snapshots** | Via timelapse plugins in Mainsail/Fluidd | ✅ Continuous or event-triggered recording | +| **Notifications / alerts** | ❌ | ✅ Email/push on motion events | +| **Cloud backup** | ❌ | ✅ Dropbox, Google Drive, NAS | +| **Resource usage on Pi** | Lightweight | Heavier — increases with camera count | +| **Runs alongside Klipper** | ✅ Same OS, single Pi | ⚠️ Separate OS image (or separate Pi) | +| **Active development** | ✅ Actively maintained | ⚠️ Slowed after 2020; new pre-releases in 2025 | +| **Setup complexity** | Simple (part of MainsailOS) | Moderate — separate image or install | + +### Recommendation for this setup + +**Crowsnest is the right choice** for the OrangeStorm Giga monitoring use case because: + +- Streams integrate directly into the Mainsail/Fluidd web UI — no extra browser tabs or apps + needed to watch the print alongside the temperature graph and G-code console. +- It runs on the same Raspberry Pi OS as Tailscale and Moonraker — a single Pi handles + everything. +- Latency is lower, which is important when reacting to print problems (stringing, layer shifts) + in real time. +- Timelapse recording is available through the Mainsail timelapse plugin. + +**Consider MotionEyeOS if you also need**: + +- Motion-triggered recording and email/push alerts (e.g. detecting unauthorized access to the + printer room when not printing). +- Cloud backup of recorded footage. +- A dedicated surveillance setup independent of the 3D printing workflow. + +A hybrid approach is possible: run Crowsnest on the main Pi for print monitoring, and set up a +second Pi (or a spare camera) with MotionEyeOS for room surveillance. + +--- + ## Multi-Camera Setup with Crowsnest ### Identify Camera Devices @@ -335,5 +380,6 @@ Tips: - [Moonraker documentation](https://moonraker.readthedocs.io/en/latest/configuration/) - [Mainsail documentation](https://docs.mainsail.xyz/) - [Crowsnest – webcam service for multiple cameras](https://github.com/mainsail-crew/crowsnest) +- [MotionEyeOS – surveillance-focused camera OS for Raspberry Pi](https://github.com/motioneye-project/motioneyeos/wiki) - [Tailscale installation](https://tailscale.com/download) - [Mobileraker app](https://github.com/Clon1998/mobileraker)