Skip to content

Releases: Mi-Bee-Studio/luatos-esp32s3-a10-camera

MiBeeCam v0.3.0 — ONVIF NVR 支持 & 独立流媒体服务器

17 Jun 22:37

Choose a tag to compare

🎯 重点更新

本版本对齐 seeed-esp32s3-cam 实现,统一端口架构和 ONVIF 协议标准,NVR 现在可以发现并预览视频


✨ 新功能

📺 MJPEG 独立流媒体服务器 (Port 81)

MJPEG 推流从 esp_http_server handler 重构为独立 TCP 服务器(端口 81),对齐 seeed-esp32s3-cam 架构:

  • 长连接推流不再阻塞端口 80 的 Web API / UI
  • 独立 FreeRTOS 任务 pinned to Core 1,最多 2 个并发客户端
  • SO_RCVTIMEO 超时防止半开连接内存泄漏
  • 预览页 preview.html 自动指向 http://host:81/stream

📡 ONVIF 协议对齐 (NVR 兼容)

SOAP 方法 变更
GetStreamUri rtsp://ip:8554/stream(假 RTSP)→ http://ip:81/stream(真实 MJPEG)
GetSystemDateAndTime 新增 — NVR 发现握手必需
HTTP-directed Probe 新增 — 支持 HTTP POST 方式的 WS-Discovery
WS-Discovery Hello 新增 — 启动时 + 每 30 秒主动多播通告

💻 AT 指令接口 (UART0)

新增 20 条 AT 指令,支持串口配置 WiFi、查看系统信息、控制摄像头:

AT+CWJAP=<ssid>,<pass>     — 设置 WiFi
AT+CWJAP2=<ssid>,<pass>    — 设置备用 WiFi
AT+CIFSR                   — 查询 IP 地址
AT+CFGGET=<field>          — 读取配置项
AT+CFGSET=<field>,<value>  — 修改配置项
AT+SAVE                    — 保存到 NVS
AT+RST / AT+RESTORE        — 重启 / 恢复出厂
AT+CWLAP                   — 扫描 WiFi
AT+HEAP / AT+UPTIME / AT+TEMP — 系统信息
...

🧠 内存自适应启动

无 PSRAM 板子上,运动检测在 heap < 30KB 时自动跳过,优先保障 NVR 推流:

if (free_heap < 30000) {
    ESP_LOGW(TAG, "Motion detection skipped (NVR/streaming mode)");
} else {
    motion_detect_start();
}

🐛 Bug 修复

问题 根因 修复
ONVIF 启动崩溃 (Guru Meditation) onvif_discovery_task 栈溢出(4KB 栈 + 4KB 局部缓冲区) 缓冲区移至堆 (malloc)
运行数小时后设备无响应 MJPEG recv() 无超时,半开连接泄漏 4KB/次 添加 SO_RCVTIMEO 5 秒超时
运动检测抢占摄像头 与推流争抢相机互斥锁,malloc(19KB) 失败 heap < 30KB 自动跳过
WiFi 连接不稳定 set_ps()wifi_start() 前调用被忽略 移到 start() 之后
配置并发访问崩溃 AT 任务 + httpd 并发读写配置 config_get_copy() + mutex

📐 端口架构

Port 80       → Web UI + REST API + ONVIF SOAP + WebSocket
Port 81       → MJPEG Stream (独立 TCP 服务器)
Port 3702/UDP → WS-Discovery (Probe + Hello)

📦 升级须知

  1. 刷固件idf.py -p /dev/ttyACM0 flash
  2. 刷 SPIFFS(Web UI 文件,必须单独刷):
    python $IDF_PATH/components/spiffs/spiffsgen.py 0x3CE000 main/web_ui build/spiffs.bin
    python -m esptool --chip esp32s3 -p /dev/ttyACM0 -b 460800 write_flash 0x392000 build/spiffs.bin
  3. 启用 ONVIF(如需 NVR 对接):通过 Web 配置页或 AT+CFGSET=onvif_enabled,1 + AT+SAVE
  4. NVR 对接:NVR 和摄像头需在同一子网,NVR 需支持 MJPEG over HTTP 格式

Full Changelog: v0.2.2...v0.3.0

MiBeeCam v0.2.2

05 Jun 17:18

Choose a tag to compare

MiBeeCam Firmware v0.2.2


What's Changed

666fd91 fix: remove hardcoded test credentials and update IDF version references
59084e1 docs: update to ESP-IDF v5.5.4, add WiFi STA troubleshooting
844a506 fix: resolve WiFi STA connection failure with WPA2-PSK routers (SAE + stack overflow)

Files Changed

 .github/workflows/build.yml   |  2 +-
 README.md                     |  6 +--
 README_CN.md                  |  6 +--
 docs/en/README.md             |  2 +-
 docs/en/hardware.md           |  2 +-
 docs/en/software.md           |  2 +-
 docs/en/troubleshooting.md    | 71 ++++++++++++++++++++++++++++++--
 docs/zh-CN/README.md          |  6 +--
 docs/zh-CN/software.md        |  2 +-
 docs/zh-CN/troubleshooting.md | 71 +++++++++++++++++++++++++++++---
 main/main.c                   |  1 +
 main/wifi_manager.c           | 95 ++++++++++++++++++++++++++++++++++++-------
 sdkconfig.defaults            | 26 ++++++++++--
 13 files changed, 251 insertions(+), 41 deletions(-)

Flash Instructions

  1. Download all files from this release
  2. Linux/Mac: chmod +x flash_all.sh && ./flash_all.sh /dev/ttyUSB0
  3. Windows: flash_all.bat COM3 (replace COM3 with your port)
  4. Or use ESP-IDF: idf.py -p COMx flash (Windows)

Files

File Description
firmware.bin Main firmware
bootloader.bin ESP32 bootloader
partition-table.bin Partition table
spiffs.bin Web UI files
flash_all.sh Flash script (Linux/Mac)
flash_all.bat Flash script (Windows)
checksums.txt SHA256 checksums

Partition Layout

Offset Size Content
0x0 - Bootloader
0x8000 - Partition Table
0x10000 3.5MB Firmware
0x392000 3.94MB SPIFFS (Web UI)

First-time Setup

  1. Flash firmware and SPIFFS
  2. Device starts AP mode: SSID=MiBeeCam, Password=12345678
  3. Connect to AP, open http://192.168.4.1
  4. Configure WiFi credentials
  5. Device reboots in STA mode

MiBeeCam v0.2.0

03 Jun 07:05

Choose a tag to compare

MiBeeCam Firmware v0.2.0


What's Changed

03ef332 ci: generate detailed release notes with changelog from git history
17f5c3a docs: beautify README with badges and improved layout
69827c5 fix: improve WiFi STA compatibility with infinite retry and broader auth support
4434d18  fix: resolve all 13 reliability issues across WiFi,camera,streaming,motion and config
ddb41e9 docs: add MJPEG stream freeze troubleshooting entry (zh-CN + en)
c47a45d fix: resolve MJPEG stream freeze caused by frame buffer contention

Files Changed

 .github/workflows/build.yml   |  45 +++++-
 .gitignore                    |  13 +-
 README.md                     | 313 +++++++++++++++++++++++++----------------
 README_CN.md                  | 320 +++++++++++++++++++++++++-----------------
 docs/en/troubleshooting.md    | 116 +++++++++++++--
 docs/zh-CN/troubleshooting.md | 110 +++++++++++++++
 main/camera_driver.c          |  18 +++
 main/config_manager.c         |   2 +-
 main/main.c                   |  26 +++-
 main/mjpeg_streamer.c         |  28 +++-
 main/motion_detect.c          | 174 +++++++++++++++--------
 main/status_led.c             |  15 +-
 main/status_led.h             |   3 +-
 main/web_server.c             |  63 ++++++++-
 main/web_ui/preview.html      |  31 ++--
 main/wifi_manager.c           |  65 +++++++--
 main/wifi_manager.h           |   7 +
 17 files changed, 980 insertions(+), 369 deletions(-)

Flash Instructions

  1. Download all files from this release
  2. Linux/Mac: chmod +x flash_all.sh && ./flash_all.sh /dev/ttyUSB0
  3. Windows: flash_all.bat COM3 (replace COM3 with your port)
  4. Or use ESP-IDF: idf.py -p COMx flash (Windows)

Files

File Description
firmware.bin Main firmware
bootloader.bin ESP32 bootloader
partition-table.bin Partition table
spiffs.bin Web UI files
flash_all.sh Flash script (Linux/Mac)
flash_all.bat Flash script (Windows)
checksums.txt SHA256 checksums

Partition Layout

Offset Size Content
0x0 - Bootloader
0x8000 - Partition Table
0x10000 3.5MB Firmware
0x392000 3.94MB SPIFFS (Web UI)

First-time Setup

  1. Flash firmware and SPIFFS
  2. Device starts AP mode: SSID=MiBeeCam, Password=12345678
  3. Connect to AP, open http://192.168.4.1
  4. Configure WiFi credentials
  5. Device reboots in STA mode

MiBeeCam v0.1.0

29 Apr 00:38

Choose a tag to compare

MiBeeCam Firmware v0.1.0

Flash Instructions

  1. Download all files from this release
  2. Linux/Mac: Flashing MiBeeCam firmware to /dev/ttyUSB0...
    Done! Reset the device to start.
  3. Windows: (replace COM3 with your port)
  4. Or use ESP-IDF: (Windows)

Files

File Description
firmware.bin Main firmware
bootloader.bin ESP32 bootloader
partition-table.bin Partition table
spiffs.bin Web UI files
flash_all.sh Flash script (Linux/Mac)
flash_all.bat Flash script (Windows)
checksums.txt SHA256 checksums

Partition Layout

Offset Size Content
0x0 - Bootloader
0x8000 - Partition Table
0x10000 3.5MB Firmware
0x392000 3.94MB SPIFFS (Web UI)

First-time Setup

  1. Flash firmware and SPIFFS
  2. Device starts AP mode: SSID=MiBeeCam, Password=12345678
  3. Connect to AP, open http://192.168.4.1
  4. Configure WiFi credentials
  5. Device reboots in STA mode