DEV Community

ZhengZhiCong
ZhengZhiCong

Posted on • Originally published at blog.mickeyzzc.tech

Building a Privacy-First Open Source ESP32-S3 Camera with RTSP for MiBee NVR

Introduction

Like many self-hosted enthusiasts, I've been frustrated with the state of affordable IP cameras for years. Most cheap cameras:

  • Phone home to unknown servers
  • Require cloud subscriptions for basic features
  • Don't support standard RTSP streams
  • Run closed-source firmware you can't audit

So I built seeed-esp32s3-cam - a 100% open source, privacy-first camera firmware that works natively with MiBeeNvr, Blue Iris, and every self-hosted NVR system.

The Hardware

This firmware is optimized for the Seeed Studio ESP32-S3 Sense board - an incredibly capable camera module for around $15 USD.

Specs:

  • ESP32-S3 dual-core processor
  • OV2640 2MP camera sensor
  • Built-in WiFi
  • Microphone support
  • SD card slot

Perfect for monitoring garages, sheds, entrances, or anywhere you want an inexpensive camera without sacrificing privacy.

✨ Key Features

Feature Status
πŸ“Ή Native RTSP Server βœ… Works with MiBeeNvr / Blue Iris / VLC
🌐 HTTP MJPEG Streaming βœ… Low latency browser preview
πŸ” On-device Motion Detection βœ… Configurable sensitivity
πŸŒ™ Night Mode βœ… Auto exposure adjustment
βš™οΈ Web Configuration UI βœ… Full settings via browser
⚑ Pre-built Binaries βœ… Flash in 2 minutes, no compiling
πŸ”’ 100% Local Only βœ… No cloud, no phone home
πŸ“„ MIT Licensed βœ… Open source forever

πŸš€ Getting Started in 5 Minutes

1. Flash the Firmware

No compiling needed! Use the pre-built binaries:

  1. Download the latest release from GitHub
  2. Flash using esptool.py or your favorite flasher:
esptool.py --chip esp32s3 write_flash 0x0 firmware.bin
Enter fullscreen mode Exit fullscreen mode

2. Configure WiFi

  1. Connect to the WiFi hotspot ESP32-CAM-XXXX
  2. Open 192.168.4.1 in your browser
  3. Enter your WiFi credentials
  4. The camera will reboot and connect to your network

3. Access the Web UI

Find your camera's IP address in your router, then open it in a browser. You'll see:

  • Live video preview
  • Stream quality settings
  • Motion detection configuration
  • Network settings

🎯 MiBeeNvr Integration (The Good Stuff)

This is why I built this - native MiBeeNvr compatibility.

Add this to your MiBeeNvr configuration:

cameras:
  esp32_cam:
    url: rtsp://your-camera-ip:8554/stream
    name: Garage Camera
    record: true
    detect_motion: true
Enter fullscreen mode Exit fullscreen mode

That's it! No hacks, no custom scripts, just standard RTSP. Your camera will show up instantly in the MiBeeNvr web UI.

MiBeeNvr GitHub: https://github.com/Mi-Bee-Studio/MiBeeNvr

πŸ”§ Technical Details

Built with ESP-IDF v5.x using:

  • Hardware-accelerated JPEG encoding
  • Optimized memory management for 24/7 operation
  • Lightweight RTSP server implementation
  • Non-blocking WiFi handling

The firmware is designed to run stable indefinitely - I've had cameras running for months without a single reboot.

πŸ“– Full Documentation

For a complete step-by-step guide including:

  • Advanced MiBeeNvr configuration
  • Performance tuning
  • Troubleshooting common issues
  • Motion detection optimization

Check out the full tutorial:
πŸ‘‰ https://blog.mickeyzzc.tech/en/posts/iot/esp32s3-cam-monitor/

πŸ’» Both Projects Are Open Source

Camera Firmware: https://github.com/Mi-Bee-Studio/seeed-esp32s3-cam

MiBeeNvr NVR Server: https://github.com/Mi-Bee-Studio/MiBeeNvr

PRs, feature requests, and bug reports are all welcome! This is a community project - let's build the best open source camera + NVR ecosystem together.

Why This Matters

In an era where every IoT device seems to want your data, having fully open, local-only options is more important than ever. This camera + NVR stack:

  • βœ… Never sends data anywhere
  • βœ… You can audit every line of code
  • βœ… You control all configuration
  • βœ… Works with your existing self-hosted tools

No subscriptions, no accounts, no tracking. Just a complete surveillance system that works.

What's Next?

I'm actively working on:

  • Auto-discovery between cameras and MiBeeNvr
  • MQTT support for Home Assistant
  • SD card recording on cameras
  • Two-way audio
  • ONVIF support

Let me know what features you'd like to see!

Top comments (0)