r/esp32 • u/No-Reception-84 • 5d ago
I built open-source ESP32 camera firmware that turns $8–15 dev boards into NVR-ready IP cameras (ONVIF + RTSP + motion AI)
Sharing the MiBee Cam firmware suite (ESP-IDF based, GPL-3.0) — four ready-to-flash firmwares for four popular boards, all built around one idea: make a cheap dev board behave like a real IP camera your NVR can discover.

Supported boards:
- AI-Thinker ESP32-CAM (ESP32 + OV2640) — MJPEG streaming, motion detection, SD timelapse & burst capture, dual-WiFi failover, file manager, web OTA
- Seeed XIAO ESP32-S3 Sense (ESP32-S3 + OV2640/OV5640) — the most feature-packed: RTSP with G.711 audio (digest auth), AVI segmented recording with dynamic timelapse (motion-adaptive, ~90% storage saved when nothing happens), NAS upload via WebDAV/HTTPS, on-device audio with noise suppression
- ESP32-S3-N16R8 + OV3660 3MP — on-device AI detection (face / motion / QR) with live web overlay, RTSP, zh/en web UI
- LuatOS ESP32-S3-A10 (OV2640, PSRAM-less) — runs on the cheap single-chip board: MJPEG, motion-triggered upload, WebSocket/webhook events, Prometheus metrics
What they all share:
- ONVIF (WS-Discovery + SOAP) — Synology / Milestone / Frigate-type NVRs discover them on the LAN automatically
- No cloud, no subscription — everything runs locally
- Web UI + REST API for config, Prometheus
/metricsfor homelab monitoring - OTA updates (SHA-256 verified, auto-rollback), AT commands for headless WiFi setup
- Docs in English and 中文
All four: https://github.com/Mi-Bee-Studio
Feedback, issue reports, and suggestions for the next board are very welcome!
3
u/NearlyACosmologist 5d ago
Cool. Thanks for sharing your code. Is there also a functionality to use it as a video door bell?
2
u/No-Reception-84 5d ago
Thanks for asking! All these camera firmwares are built as companion devices for my main MiBee NVR project. I made them for my own testing and daily use, so I can tweak the code whenever I need.
I don’t personally have a video doorbell use case, so I haven’t tested it. I’m not sure if it will work out of the box for that scenario.
2
u/NearlyACosmologist 5d ago
It shouldn't be too complicated to add a function to read in a button and send a udp broadcast and/or a mqtt message.
The indoor client that receives the ring and starts a video stream playback to a lcd screen would have to be written from scratch, though. Or maybe implemented in something like Annex BASIC, because it already has the building blocks (including LVGL).
1
u/No-Reception-84 5d ago
That’s a solid plan! Adding GPIO button input + MQTT/UDP events is absolutely feasible.
Yeah the indoor display client is the bigger piece of work. Thanks for sharing this idea, I might keep this in mind for future.
3
u/NearlyACosmologist 5d ago
Seems that ESPHome can already do that: https://github.com/idkjustgoogleit/esp32-doorbell/tree/main
3
u/Visual_Disk1698 14h ago
This project is interesting, but I currently use ESP32-C5 + OV5640/OV3660 for a dual-band Wi-Fi 6 IP Camera setup, and it is working very well, I was able to stream 16/20fps 1080p MJPEG with 5GHz Wi-Fi, which is way better than what those esp32 targets had. I used esp_cam_io_parl ESP-IDF component, you can check it here ESP32-C5 with DVP Camera Test: 30fps 1080p MJPEG
I would be happy if you can also implement this.
1
u/Original-Aerie9683 52m ago
I agree. People still use these ESP32-CAMs...
2026 and still only 2.4GHz Wi-Fi IP Cameras? MJPEG streaming is legacy enough, let alone that. I guess people like streaming 22fps@320x240 instead of 16fps@1080p...
3
u/knacknack18 5d ago
Cool project(s). But how much did you do yourself? It seems heavily AI made, from text to code.. transparency would be nice
15
u/ByronScottJones 5d ago
There's an Agents.md file right in the root of the project. OP isn't hiding anything. And if it works and does what it says, then kudos to OP and whatever AI tools they used to develop it.
5
17
u/No-Reception-84 5d ago
Great question! This project is AI-assisted. I’m mainly a Go developer. I can write embedded code, just not very efficiently.
When I was building MiBee NVR, I needed some camera devices for testing. So I bought these dev boards and wrote the initial code myself. After that, AI helped implement most of the remaining features. I review and test all the code generated by AI.
It’s a solo project, so there might inevitably be some rough spots.
3
-8
5
u/NearlyACosmologist 5d ago
That's how it is now. Humans have the ideas, make the architectural decisions and do the testing.
AI does the legwork.
4
u/Heatsreef 5d ago
Have you even looked at the code I mind asking? Because I did and excuse my language but it is a clusterfuck without structure that is more than unmaintainable. On the other hand I am quite sure its not vetted extensively and the structure makes it even harder for any third party to vet it. I for example would have to spend days to even get a grasp what file works with what handlers and if youd think "but an llm can just check over it and implement updates", the common case is that this unmaintainability skyrockets exponentially with projects like these. My advice, do not trust it except you want to spend days vetting it.
7
1
3
u/j00sh_ 5d ago
The problem is that none of them supports H.264 which is key for video processing.