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:
- Download the latest release from GitHub
- Flash using
esptool.pyor your favorite flasher:
esptool.py --chip esp32s3 write_flash 0x0 firmware.bin
2. Configure WiFi
- Connect to the WiFi hotspot
ESP32-CAM-XXXX - Open
192.168.4.1in your browser - Enter your WiFi credentials
- 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
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)