Code Monkey home page Code Monkey logo

esp32cam-rtsp's Introduction

ESP32CAM-RTSP

Platform IO CI

Simple RTSP, HTTP JPEG Streamer and image server with configuration through the web interface.

Important

New branch available! Here branch: develop This branch supports all the current devices and the Seeed Studio Xiao esp32s3! Please use this and let me know if this works for you!

Flashing this software on a ESP32CAM module will make it a RTSP streaming camera server, a HTTP Motion JPEG streamer and a HTTP image server.

Supported protocols

  • RTSP The RTSP protocol is an industry standard and allows many CCTV systems and applications (like for example VLC) to connect directly to the ESP32CAM camera stream. It is also possible to stream directly to a server using ffmpeg. This makes the module a camera server allowing recording and the stream can be stored on a disk and replayed later. The URL is rtsp://<ip address>:554/mjpeg/1

  • HTTP Motion JPEG The HTTP JPEG streamer makes it possible to watch the camera stream directly in your browser. The URL is http://<ip address>/stream

  • HTTP image The HTTP Image returns an HTTP JPEG image of the camera. The URL is http://<ip address>/snapshot

This software supports the following ESP32-CAM (and alike) modules:

  • AI THINKER
  • EspressIf ESP-EYE
  • EspressIf ESP32S2-CAM
  • EspressIf ESP32S3-CAM-LCD
  • EspressIf ESP32S3-EYE
  • Freenove WROVER KIT
  • M5STACK ESP32CAM
  • M5STACK_PSRAM
  • M5STACK_UNITCAM
  • M5STACK_UNITCAMS3
  • M5STACK_V2_PSRAM
  • M5STACK_PSRAM
  • M5STACK_WIDE
  • M5STACK
  • Seeed Studio XIAO ESP32S3 SENSE
  • TTGO T-CAMERA
  • TTGO T-JOURNAL

The software provides a configuration web server, that can be used to:

  • Provide information about the state of the device, wifi connection and camera,
  • Set the WiFi parameters,
  • Set the timeout for connecting to the access point,
  • Set an access password,
  • Select the image size,
  • Select the frame rate,
  • Select the JPEG quality
  • Enable the use of the PSRAM
  • Set the number of frame buffers
  • Configure the camera options:
    • Brightness
    • Contrast
    • Saturation
    • Special effect (Normal, Negative, Gray-scale, Red/Green/Blue tint, Sepia)
    • White balance
    • Automatic White Balance gain
    • Wite Balance mode
    • Exposure control
    • Auto Exposure (dsp)
    • Auto Exposure level
    • Manual exposure value
    • Gain control
    • Manual gain control
    • Auto gain ceiling
    • Black pixel correction
    • White pixel correction
    • Gamma correction
    • Lens correction
    • Horizontal mirror
    • Vertical flip
    • Downside enable
    • Color bar

The software provides contains also a mDNS server to be easily discoverable on the local network. It advertises HTTP (port 80) and RTSP (port 554)

Required

  • ESP32-CAM module or similar,
  • USB to Serial (TTL level) converter, piggyback board ESP32-CAM-MB or other way to connect to the device,
  • PlatformIO software (free download)

Boards

There are a lot of boards available that are all called ESP32-CAM. However, there are differences in CPU (type/speed/cores), how the camera is connected, presence of PSRAM or not... To select the right board use the table below and use the configuration that is listed below for your board:

Board Image CPU SRAM Flash PSRAM Camera Site
Espressif ESP32-Wrover CAM img ESP32 520KB 4Mb 4MB OV2640
AI-Thinker ESP32-CAM img img ESP32-S 520KB 4Mb 4MB OV2640 https://docs.ai-thinker.com/esp32-cam
Espressif ESP-EYE img ESP32 520KB 4Mb 4MB OV2640
Espressif ESP-S3-EYE img ESP32-S3 520KB 4Mb 4MB OV2640 https://www.espressif.com/en/products/devkits/esp-eye/overview
LilyGo camera module img ESP32 Wrover 520KB 4Mb 4MB OV2640 / OV5640
LilyGo Simcam img OV2640
LilyGo TTGO-T Camera img OV2640
M5Stack ESP32CAM img ESP32 520Kb 4Mb - OV2640 Microphone https://docs.m5stack.com/en/unit/esp32cam
M5Stack UnitCam img img ESP32-WROOM-32E 520KB 4Mb - OV2640 https://docs.m5stack.com/en/unit/unit_cam
M5Stack Camera img ESP32 520Kb 4Mb - OV2640 https://docs.m5stack.com/en/unit/m5camera
M5Stack Camera PSRAM img ESP32 520Kb 4Mb 4Mb OV2640 https://docs.m5stack.com/en/unit/m5camera
M5Stack UnitCamS3 img img ESP32-S3-WROOM-1-N16R8 520Kb 16Mb 8Mb OV2640 https://docs.m5stack.com/en/unit/Unit-CamS3
Seeed studio Xiao ESP32S3 Sense img ESP32-S3R8 520KB 8Mb 8MB OV2640 Microphone https://www.seeedstudio.com/XIAO-ESP32S3-Sense-p-5639.html

Installing and running PlatformIO

PlatformIO is available for all major operating systems: Windows, Linux and MacOS. It is also provided as a plugin to Visual Studio Code. More information can be found at: https://docs.platformio.org/en/latest/installation.html below the basics.

Install Visual Studio Code and install the PlatformIO plugin.

Putting the ESP32-CAM in download mode

ESP32-CAM-MB

When using the ESP32-CAM-MB board, press and hold the GP0 button on the ESP32-CAM-MB board. Then press short the reset button (on the inside) on the ESP32-CAM board and release the GP0 button. This will put the ESP32-CAM board in download mode.

FTDI adapter

When using an FTDI adapter, make sure the adapter is set to 3.3 volt before connecting. Use the wiring schema below.

ESP FTDI wiring

After programming remove the wire to tge GPIO0 pin to exit the download mode.

Compiling and deploying the software

Open a command line or terminal window and clone this repository from GitHub.

git clone https://github.com/rzeldent/esp32cam-rtsp.git

go into the folder

cd esp32cam-rtsp

Next, the firmware has to be build and deployed to the ESP32. There are to flavours to do this; using the command line or the graphical interface of Visual Studio Code.

Using the command line

Make sure you have the latest version of the Espressif toolchain.

pio pkg update -g -p espressif32

First the source code has to be compiled to build all targets

pio run

if only a specific target is required, for example the esp32cam_ttgo_t_journal type:

pio run -e esp32cam_ttgo_t_journal

When finished, firmware has to be uploaded. Make sure the ESP32-CAM is in download mode (see previous section) and type:

 pio run -t upload

or, again, for a specific target, for example esp32cam_ai_thinker

pio run -t upload -e esp32cam_ai_thinker

When done remove the jumper when using a FTDI adapter or press the reset button on the ESP32-CAM. To monitor the output, start a terminal using:

 pio device monitor

Using Visual studio

Open the project in a new window. Run the following tasks using the Terminal -> Run Task or CTRL+ALT+T command in the menu (or use the icons below on the toolbar). Make sure the ESP32-CAM is in download mode during the uploads.

  • PlatformIO: Build (esp32cam)
  • PlatformIO: Upload (esp32cam)

To monitor the behavior run the task, run: PlatformIO: Monitor (esp32cam)

Setting up the ESP32CAM-RTSP

After the programming of the ESP32, there is no configuration present. This needs to be added. To connect initially to the device open the WiFi connections and select the WiFi network / access point called ESP32CAM-RTSP. Initially there is no password present.

After connecting, the browser should automatically open the status page. In case this does not happens automatically, connect to http://192.168.4.1. This page will display the current settings and status. On the bottom, there is a link to the config. Click on this link.

This link brings up the configuration screen when connecting fot the first time.

Configuration screen

Configure at least:

  • The access point to connect to. No dropdown is present to show available networks!
  • A password for accessing the Access point (AP) when starting. (required)
  • Type of the ESP32-CAM board

When finished press Apply to save the configuration. The screen will redirect to the status screen. Here it is possible to reboot the device so the settings take effect. It is also possible to restart manually by pressing the reset button.

Connecting to the configuration

After the initial configuration and the device is connected to an access point, the device can be configured over http.

When a connection is made to http://esp32cam-rtsp the status screen is shown.

Status screen

In case changes have been made to the configuration, this is shown and the possibility to restart is given.

Clicking on the change configuration button will open the configuration. It is possible that a password dialog is shown before entering. If this happens, for the user enter 'admin' and for the password the value that has been configured as the Access Point password.

Connecting to the RTSP stream

RTSP stream is available at: rtsp://esp32cam-rtsp.local:554/mjpeg/1. This link can be opened with for example VLC.

Connecting to the JPEG motion server

The JPEG motion server server is available using a normal web browser at: http://esp32cam-rtsp.local:/stream.

Connecting to the image server

The image server server is available using a normal web browser at: http://esp32cam-rtsp.local:/snapshot.

‼️ Please be aware that there is no password present!. Everybody with network access to the device can see the streams or images! Beware of :trollface:!

API

There is a minimum API present to perform some tasks using HTTP requests. For some requests authentication is required. The authentication used is basic authentication. The user is always admin and the password the access point key.
If using a browser, remember that the authentication is stored in the browser session so needs to be entered only once.

The URLs are below:

GET: /restart

Calling this URL will restart the device. Authentication is required.

GET: /config

Calling this URL will start the form for configuring the device in the browser. Authentication is required.

GET: /snapshot

Calling this URL will return a JPEG snapshot of the camera in the browser. This request can also be used (for example using cURL) to save the snapshot to a file.

Issues / Nice to know

  • The red LED on the back of the device indicates the device is not connected.
  • Sometimes after configuration a reboot is required. If the error screen is shown that it is unable to make a connection, first try to reboot the device,
  • When booting, the device waits 30 seconds for a connection (configurable). You can make a connection to the SSID and log in using the credentials below,
  • When connected, go to the ip of the device and, when prompted for the credentials, enter 'admin' and the AP password. This is a required field before saving the credentials,
  • When the password is lost, a fix is to completely erase the ESP32 using the pio run -t erase command. This will reset the device including configuration. If using the esptool, you can do this using esptool.py --chip esp32 --port /dev/ttyUSB0 erase_flash. However, after erasing, re-flashing of the firmware is required.
  • When finished configuring for the first time and the access point is entered, disconnect from the wireless network provided by the device. This should reset the device and connect to the access point. Resetting is also a good alternative...
  • There are modules that have no or faulty PSRAM (despite advertised as such). This can be the case if the camera fails to initialize. It might help to disable the use of the PSRAM and reduce the buffers and the screen size.

Power

Make sure the power is 5 volts and stable, although the ESP32 is a 3.3V module, this voltage is created on the board. If not stable, it has been reported that restarts occur when starting up (probably when power is required for WiFi). The software disables the brown out protection so there is some margin in the voltage. Some people suggest to add a capacitor over the 5V input to stabilize the voltage.

PSRAM / Buffers / JPEG quality

Some esp32cam modules have additional ram on the board. This allows to use this ram as frame buffer. The availability of PSRAM can be seen in the HTML status overview.

Not all the boards are equipped with PSRAM:

Board PSRAM
WROVER_KIT 8Mb
ESP_EYE 8Mb
ESP32S3_EYE 8Mb
M5STACK_PSRAM 8Mb
M5STACK_V2_PSRAM Version B only
M5STACK_WIDE 8Mb
M5STACK_ESP32CAM No
M5STACK_UNITCAM No
M5STACK_UNITCAMS3 8Mb
AI_THINKER 8Mb
TTGO_T_JOURNAL No
ESP32_CAM_BOARD ?
ESP32S2_CAM_BOARD ?
ESP32S3_CAM_LCD ?

Depending on the image resolution, framerate and quality, the PSRAM must be enabled and/or the number of frame buffers increased to keep up with the data generated by the sensor. There are (a lot of?) boards around with faulty PSRAM. If the camera fails to initialize, this might be a reason. See on Reddit. In this case disable the use of PSRAM in the configuration and do not use camera modes that require PSRAM,

For the setting JPEG quality, a lower number means higher quality. Be aware that a very high quality (low number) can cause the ESP32 cam to crash or return no image.

The default settings are:

  • No PSRAM

    • SVGA (800x600)
    • 1 frame buffer
    • JPEG quality 12
  • With PSRAM

    • UXGA (1600x1200)
    • 2 frame buffers
    • JPEG quality 10

Camera module

Be careful when connecting the camera module. Make sure it is connected the right way around (Camera pointing away from the board) and the ribbon cable inserted to the end before locking it.

Credits

esp32cam-rtsp depends on PlatformIO, Bootstrap 5 and Micro-RTSP by Kevin Hester.

Change history

  • January 2024
    • Moved settings to board definitions
    • Added new boards
    • Removed OTA to increase performance
  • Oktober 2023
    • Added support for Seeed Xiao esp32s3
    • New build system
    • Updated documentation
  • March 2023
    • Added options to set PSRAM / Frame buffers
    • Added JPEG Motion streaming
  • Feb 2023
    • Added additional settings for camera configuration
  • Nov 2022
    • Added OTA
    • Fix for grabbing frame
    • Fixed bug: Increased WiFi password length
  • Sep 2022
    • Added GUI with bootstrap
    • More information in web page
    • Added camera preview in HTML
  • Jul 2022
    • Initial version

esp32cam-rtsp's People

Contributors

rzeldent avatar uniquename avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

esp32cam-rtsp's Issues

Unable to auth wifi with +32 chars

Hi guys,

I can't authenticate to my AP when the WiFi password is longer than 32 characters:

00:29:45.090 > [ 51937][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 10 - AP_START
00:29:45.096 > [ 51969][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 11 - AP_STOP
00:29:45.104 > [ 51972][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 0 - WIFI_READY
00:29:45.110 > [ 51986][V][WiFiGeneric.cpp:97] set_esp_interface_ip(): Configuring Station static IP: 0.0.0.0, MASK: 0.0.0.0, GW: 0.0.0.0
00:29:45.120 > [ 51984][V][WiFiGeneric.cpp:338] _arduino_event_cb(): STA Started
00:29:45.126 > [ 51995][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 2 - STA_START
00:29:45.136 > State changed from: 2 to 3
00:29:48.215 > [ 55094][V][WiFiGeneric.cpp:360] _arduino_event_cb(): STA Disconnected: SSID: TestWifi, BSSID: *************, Reason: 15
00:29:48.224 > [ 55095][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 5 - STA_DISCONNECTED
00:29:48.232 > [ 55102][W][WiFiGeneric.cpp:950] _eventCallback(): Reason: 15 - 4WAY_HANDSHAKE_TIMEOUT
00:30:15.073 > Giving up.

I've tried to remove all the characters of the same password until ending with 32 and it works perfectly.

If it's impossible to fix this and reach the maximum length (63 characters), I think this should be documented somewhere :)

Thanks for your work!

Not saving SSID and pass.

I've uploaded to the esp32cam, login in to the AP, I change the SSID and password for my network, apply the new setting. It shows them in the log, but it just goes back to the default and does not request the ip reservation I had created in my router.

any ideas?

Advertised mDNS-based link on web info page not working

First, nicely done! Echt geweldig, eigenlijk! Echte!!! Thank you for your work on this project - next time I'm in NL visiting in-laws, I'd be happy to buy you a few rounds of beer or coffee. The quality of the image, the granularity of the adjustments/config, and the look of the webpage are best-in-class, from what I've seen.

Now to the point, when I flashed my AI-Thinker module, I had to initially use the ip address in order to view it, rather than using the mDNS link that is shown near the bottom of the webpage (port 80) - after the words "The camera stream can be found at the following location:". Neither VLC nor HA could resolve the mDNS link to the correct IP. After experiencing this, I went to the webpage and changed the "ThingName" to something else & saved the new config, and then after that my *nix systems (MacOS, Debian) would correctly resolve the host using the new mDNS alias, ie. using VLC or avahi-browser, for instance.

My hunch is that it is not a peculiarity in my network here... I peek around in the code and couldn't find anything obvious that would cause it, but maybe its something between the (new-ish) hostname on the webpage feature and the hand-off/call to mDNS or rtsp server.

Please close this issue if you can't reproduce it. If you'd like me to test something, I'll be happy to do that. [I have 3 unflashed/new AI-Thinker modules that I could use as "guinea-pig"/test cases...]

Again, thanks!

LED Flash Brightness Issue

Caveat: I Could be mistaken due to being a total N00B.

I ultimately intend to use this with HomeAssistant and integrate the LED brighness control over there, however, in my initial testing, I used chrome with the link in the instructions (http://192.168.x.xxx/flash?v=100 as the parameter (100) and the following test tool

Both these methods returned the following responses:

image

Change Wifi Mode

Hello, how can I change the Wifi mode ? I don't want it to run as an AP but use the Station mode so I can access the rtsp url in my local network.

Trouble initializing the camera

Hi @rzeldent

I have an ESP32 camera mounted with the ESP32-CAM-MB USB programmer. I have successfully uploaded and configurated the camera WiFi SSID and WiFi password. However, when I monitor the serial output I receive the following error (it's at the end of the log):

09:18:21.856 > rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
09:18:21.861 > configsip: 0, SPIWP:0xee
09:18:21.864 > clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
09:18:21.870 > mode:DIO, clock div:2
09:18:21.872 > load:0x3fff0030,len:1184
09:18:21.875 > load:0x40078000,len:13132
09:18:21.877 > load:0x40080400,len:3036
09:18:21.877 > entry 0x400805e4
09:18:22.284 > [ 2][V][WiFiServer.h:42] WiFiServer(): WiFiServer::WiFiServer(port=�␘D␂rrrJj
09:18:22.290 > [ 3][V][WebServer.cpp:87] WebServer(): WebServer::Webserver(port=80)
09:18:22.295 > [ 9][D][esp32-hal-cpu.c:244] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz
09:18:22.743 > [ 462][I][esp32-hal-psram.c:96] psramInit(): PSRAM enabled
09:18:22.777 > [ 496][I][main.cpp:267] setup(): CPU Freq: 240 Mhz
09:18:22.781 > [ 497][I][main.cpp:268] setup(): Free heap: 245772 bytes
09:18:22.786 > [ 497][I][main.cpp:269] setup(): Starting ESP32CAM-RTSP...
09:18:22.792 > Config version: 1.2
09:18:22.803 > Config size: 330
09:18:22.803 > Loading configurations
09:18:22.803 > [iwcAll]
09:18:22.803 > |-- [iwcSys]
09:18:22.803 > | |-- 'iwcThingName' with value: 'raspicart03_cam'
09:18:22.803 > | |-- 'iwcApPassword' with value:
09:18:22.808 > | |-- [iwcWifi0]
09:18:22.808 > | | |-- 'iwcWifiSsid' with value: 'TP-Link_84EE'
09:18:22.813 > | | -- 'iwcWifiPassword' with value:
09:18:22.819 > | -- 'iwcApTimeout' with value: '30'
09:18:22.822 > |-- [iwcCustom]
09:18:22.824 > | -- [settings]
09:18:22.824 > | |-- 'config' with value: 'ESP32CAM'
09:18:22.830 > | |-- 'fd' with value: '20'
09:18:22.833 > | |-- 'fs' with value: 'SVGA (800x600)'
09:18:22.836 > | |-- 'fb' with value: '2'
09:18:22.838 > | |-- 'q' with value: '12'
09:18:22.841 > | -- 'li' with value: '1'
09:18:22.844 > -- [hidden]
09:18:22.847 > State changing from: 0 to 2
09:18:22.869 > [ 588][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 0 - WIFI_READY
09:18:22.960 > Setting up AP: raspicart03_cam
09:18:22.963 > Use password:
09:18:22.963 > [ 679][V][WiFiGeneric.cpp:390] _arduino_event_cb(): AP Started
09:18:22.968 > [ 680][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 10 - AP_START
09:18:23.528 > AP IP address: 192.168.4.1
09:18:23.529 > [ 1250][V][WiFiGeneric.cpp:393] _arduino_event_cb(): AP Stopped
09:18:23.534 > [ 1250][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 11 - AP_STOP
09:18:23.542 > [ 1251][V][WiFiGeneric.cpp:390] _arduino_event_cb(): AP Started
09:18:23.548 > [ 1257][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 10 - AP_START
09:18:23.557 > AP timeout (ms): 30000
09:18:23.557 > State changed from: 0 to 2
09:18:53.547 > State changing from: 2 to 3
09:18:53.559 > [ 31279][V][WiFiGeneric.cpp:393] _arduino_event_cb(): AP Stopped
09:18:53.565 > [ 31279][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 11 - AP_STOP
09:18:53.571 > [ 31283][V][WiFiGeneric.cpp:390] _arduino_event_cb(): AP Started
09:18:53.577 > E (44951) wifi_init_default: esp_wifi_get_mac failed with 12289
09:18:53.582 > Connecting to [TP-Link_84EE] (password is hidden)
09:18:53.588 > WiFi timeout (ms): 30000
09:18:53.590 > [ 31292][V][WiFiGeneric.cpp:393] _arduino_event_cb(): AP Stopped
09:18:53.737 > [ 31447][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 4 - STA_CONNECTED
09:18:53.746 > [ 31466][V][WiFiGeneric.cpp:367] _arduino_event_cb(): STA Got New IP:192.168.0.152
09:18:53.752 > [ 31466][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 7 - STA_GOT_IP
09:18:53.760 > [ 31469][D][WiFiGeneric.cpp:991] _eventCallback(): STA IP: 192.168.0.152, MASK: 255.255.255.0, GW: 192.168.0.1
09:18:53.768 > WiFi connected
09:18:53.771 > IP address: 192.168.0.152
09:18:53.774 > State changing from: 3 to 4
09:18:56.873 > Active mDNS services: 1
09:18:56.874 > Accepting connection
09:18:56.876 > [ 34593][V][main.cpp:238] on_connected(): on_connected
09:18:56.886 > [ 34605][I][ArduinoOTA.cpp:141] begin(): OTA server at: esp32-5443b2abcb1c.local:3232
09:18:56.892 > [ 34605][V][main.cpp:221] start_rtsp_server(): start_rtsp_server
09:18:56.898 > [ 34607][V][main.cpp:200] initialize_camera(): initialize_caera
09:18:56.903 > [ 34613][I][main.cpp:201] initialize_camera(): Camera config: ESP32CAM
09:18:56.911 > [ 34619][I][main.cpp:203] initialize_camera(): Frame size: SVGA (800x600)
09:18:56.917 > [ 34625][I][main.cpp:205] initialize_camera(): Frame buffers: 2
09:18:56.921 > [ 34631][I][main.cpp:207] initialize_camera(): JPEG quality: 12
09:18:56.928 > [ 34637][I][main.cpp:209] initialize_camera(): Frame rate: 20 ms
09:18:56.956 > E (48340) camera: Camera probe failed with error 0x105(ESP_ERR_NOT_FOUND)
09:18:56.962 > [ 34676][E][main.cpp:225] start_rtsp_server(): Failed to initialize camera: 0x105. Type: ESP32CAM, frame size: SVGA (800x600), frame buffers: 2, frame rate: 20 ms, jpeg quality: 12
09:18:56.980 > State changed from: 3 to 4

I would appreciate any help. Thank you so much in advance!

Trouble compiling in VSCode

image

Compiling .pio\build\esp32cam\src\main.cpp.o
In file included from src\main.cpp:9:0:
include/frame_size.h:18:17: error: 'FRAMESIZE_240X240' was not declared in this scope
{"240x240", FRAMESIZE_240X240},
^
include/frame_size.h:21:24: error: 'FRAMESIZE_HVGA' was not declared in this scope
{"HVGA (480x320)", FRAMESIZE_HVGA},
^
include/frame_size.h:25:23: error: 'FRAMESIZE_HD' was not declared in this scope
{"HD (1280x720)", FRAMESIZE_HD},
^
src\main.cpp: In function 'void stream_text_file_gzip(const unsigned char*, size_t, const char*)':
src\main.cpp:55:73: error: no matching function for call to 'WebServer::sendContent(const char*, size_t&)'
web_server.sendContent(reinterpret_cast<const char *>(content), length);
^
In file included from .pio\libdeps\esp32cam\IotWebConf\src/IotWebConf.h:25:0,
from src\main.cpp:4:
C:\Users\Bain.platformio\packages\framework-arduinoespressif32\libraries\WebServer\src/WebServer.h:130:8: note: candidate: void WebServer::sendContent(const String&)
void sendContent(const String& content);
^
C:\Users\Bain.platformio\packages\framework-arduinoespressif32\libraries\WebServer\src/WebServer.h:130:8: note: candidate expects 1 argument, 2 provided
src\main.cpp: In function 'void handle_root()':
src\main.cpp:80:25: error: 'class EspClass' has no member named 'getChipModel'

Cannot compile

Hi !

I didn't manage to compile it :

doudz@big:~/esp32cam-rtsp$ pio run 
Processing esp32cam (platform: espressif32; board: esp32cam; framework: arduino)
--------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32cam.html
PLATFORM: Espressif 32 (1.12.4) > AI Thinker ESP32-CAM
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (esp-prog) External (esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES: 
 - framework-arduinoespressif32 @ 3.10004.210126 (1.0.4) 
 - tool-esptoolpy @ 1.20600.0 (2.6.0) 
 - toolchain-xtensa32 @ 2.50200.80 (5.2.0)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 31 compatible libraries
Scanning dependencies...
Dependency Graph
|-- IotWebConf @ 3.2.1
|   |-- DNSServer @ 1.1.0
|   |   |-- WiFi @ 1.0
|   |-- WebServer @ 1.0
|   |   |-- WiFi @ 1.0
|   |   |-- FS @ 1.0
|   |-- WiFi @ 1.0
|   |-- EEPROM @ 1.0.3
|   |-- ESPmDNS @ 1.0
|   |   |-- WiFi @ 1.0
|-- Micro-RTSP @ 0.1.6
|   |-- WiFi @ 1.0
|-- micro-moustache @ 1.0.0
|-- ArduinoOTA @ 1.0
|   |-- Update @ 1.0
|   |-- WiFi @ 1.0
|   |-- ESPmDNS @ 1.0
|   |   |-- WiFi @ 1.0
|-- ESPmDNS @ 1.0
|   |-- WiFi @ 1.0
|-- RTSPServer @ 1.0.0
|   |-- arduino-timer @ 2.3.1
|   |-- Micro-RTSP @ 0.1.6
|   |   |-- WiFi @ 1.0
|   |-- ESPmDNS @ 1.0
|   |   |-- WiFi @ 1.0
|   |-- WiFi @ 1.0
Building in release mode
Compiling .pio/build/esp32cam/src/main.cpp.o
Generating partitions .pio/build/esp32cam/partitions.bin
Compiling .pio/build/esp32cam/lib9fc/WiFi/ETH.cpp.o
Compiling .pio/build/esp32cam/lib9fc/WiFi/WiFi.cpp.o
Compiling .pio/build/esp32cam/lib9fc/WiFi/WiFiAP.cpp.o
In file included from src/main.cpp:9:0:
include/frame_size.h:18:17: error: 'FRAMESIZE_240X240' was not declared in this scope
     {"240x240", FRAMESIZE_240X240},
                 ^
include/frame_size.h:21:24: error: 'FRAMESIZE_HVGA' was not declared in this scope
     {"HVGA (480x320)", FRAMESIZE_HVGA},
                        ^
include/frame_size.h:25:23: error: 'FRAMESIZE_HD' was not declared in this scope
     {"HD (1280x720)", FRAMESIZE_HD},
                       ^
src/main.cpp: In function 'void stream_text_file_gzip(const unsigned char*, size_t, const char*)':
src/main.cpp:55:73: error: no matching function for call to 'WebServer::sendContent(const char*, size_t&)'
   web_server.sendContent(reinterpret_cast<const char *>(content), length);
                                                                         ^
In file included from .pio/libdeps/esp32cam/IotWebConf/src/IotWebConf.h:25:0,
                 from src/main.cpp:4:
/home/doudz/.platformio/packages/framework-arduinoespressif32/libraries/WebServer/src/WebServer.h:130:8: note: candidate: void WebServer::sendContent(const String&)
   void sendContent(const String& content);
        ^
/home/doudz/.platformio/packages/framework-arduinoespressif32/libraries/WebServer/src/WebServer.h:130:8: note:   candidate expects 1 argument, 2 provided
src/main.cpp: In function 'void handle_root()':
src/main.cpp:80:25: error: 'class EspClass' has no member named 'getChipModel'
       {"ChipModel", ESP.getChipModel()},
                         ^
src/main.cpp:83:31: error: 'class EspClass' has no member named 'getChipCores'
       {"CpuCores", String(ESP.getChipCores())},
                               ^
src/main.cpp: In function 'void handle_snapshot()':
src/main.cpp:168:36: error: no matching function for call to 'WebServer::sendContent(const char*&, unsigned int&)'
   web_server.sendContent(fb, fb_len);
                                    ^
In file included from .pio/libdeps/esp32cam/IotWebConf/src/IotWebConf.h:25:0,
                 from src/main.cpp:4:
/home/doudz/.platformio/packages/framework-arduinoespressif32/libraries/WebServer/src/WebServer.h:130:8: note: candidate: void WebServer::sendContent(const String&)
   void sendContent(const String& content);
        ^
/home/doudz/.platformio/packages/framework-arduinoespressif32/libraries/WebServer/src/WebServer.h:130:8: note:   candidate expects 1 argument, 2 provided
src/main.cpp: In function 'void handle_flash()':
src/main.cpp:185:27: error: 'analogWrite' was not declared in this scope
   analogWrite(LED_FLASH, v);
                           ^
src/main.cpp: In function 'void on_config_saved()':
src/main.cpp:194:55: error: 'analogWrite' was not declared in this scope
   analogWrite(LED_FLASH, atoi(flash_led_intensity_val));
                                                       ^
src/main.cpp: In function 'esp_err_t initialize_camera()':
src/main.cpp:213:17: error: 'struct camera_config_t' has no member named 'fb_location'
   camera_config.fb_location = psramFound() ? CAMERA_FB_IN_PSRAM : CAMERA_FB_IN_DRAM;
                 ^
src/main.cpp:213:46: error: 'CAMERA_FB_IN_PSRAM' was not declared in this scope
   camera_config.fb_location = psramFound() ? CAMERA_FB_IN_PSRAM : CAMERA_FB_IN_DRAM;
                                              ^
src/main.cpp:213:67: error: 'CAMERA_FB_IN_DRAM' was not declared in this scope
   camera_config.fb_location = psramFound() ? CAMERA_FB_IN_PSRAM : CAMERA_FB_IN_DRAM;
                                                                   ^
src/main.cpp: In function 'void on_connected()':
src/main.cpp:242:55: error: 'analogWrite' was not declared in this scope
   analogWrite(LED_FLASH, atoi(flash_led_intensity_val));
                                                       ^
src/main.cpp: In function 'void setup()':
src/main.cpp:260:27: error: 'analogWrite' was not declared in this scope
   analogWrite(LED_FLASH, 0);
                           ^
Compiling .pio/build/esp32cam/lib9fc/WiFi/WiFiClient.cpp.o
Compiling .pio/build/esp32cam/lib9fc/WiFi/WiFiGeneric.cpp.o
Compiling .pio/build/esp32cam/lib9fc/WiFi/WiFiMulti.cpp.o
*** [.pio/build/esp32cam/src/main.cpp.o] Error 1
========================== [FAILED] Took 2.53 seconds ==========================

how do I set an permanent ip for the camera

in configuration i want to add permanent IP for the cam, so the RTSP stream will run on that URL (and maybe run a couple of cameras with this code)
can I set the IP maybe through the code? can't find a way
thanks

Working config on ESP32-S (Waveshare) with ESP-CAM-MB

Thought I'd leave my experience here after much playing around with settings to get this working on a Waveshare ESP32CAM module (ESP32-S - ESP32-D0WD-V3 rev. 3). I had many of the same faults that people are posting here (reboots on connection, camera not initialised, RTSP not started, snapshot freezing) and this combination seems to work (with some catches).

  1. Set the type to AI Thinker, not ESPCAM. This seemed to resolve the reboot on connection issue.
  2. Disabled PSRAM. This module apparently has "4MB external PSRAM" but this enabling this seems to be causing the camera not initialized issue.

I am still having UDP issues, but I am confident that when I switch to an external antenna these issues will resolve themselves (also seen on micro-rtsp comments). If I set it to 640x480 and 1 fps, then it's very stable with no errors at some distance from the AP.

One thing I do find is that if I hit the HTTP streams or configs before RTSP, then RTSP doesn't seem to initialise properly and I have to reset the unit to get RTSP to work. If I hit RTSP first before hitting any of the HTTP protocols, RTSP works fine. Hitting HTTP after this point stops the RTSP stream, but once the HTTP request is complete, RTSP works again.

reboot on connect

15:33:07.182 > WiFi connected
15:33:07.185 > IP address: 192.168.1.119
15:33:07.210 > State changing from: 3 to 4
15:33:07.783 > Active mDNS services: 20 
15:33:07.783 > Accepting connection
15:33:07.786 > [ 32178][V][main.cpp:310] on_connected(): on_connected
15:33:07.800 > [ 32194][I][ArduinoOTA.cpp:141] begin(): OTA server at: esp32-7c9ebd606f90.local:3232
15:33:07.806 > [ 32194][V][main.cpp:302] start_rtsp_server(): start_rtsp_server
15:33:07.815 > [ 32196][V][WiFiServer.h:42] WiFiServer(): WiFiServer::WiFiServer(port=554, ...)
15:33:07.819 > [ 32203][I][rtsp_server.cpp:9] rtsp_server(): Starting RTSP server
15:33:07.825 > State changed from: 3 to 4
15:33:32.917 > Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.
15:33:32.923 > 
15:33:32.923 > Core  1 register dump:
15:33:32.926 > PC      : 0x400e5493  PS      : 0x00060930  A0      : 0x80164a24  A1      : 0x3ffb26f0  
15:33:32.934 > A2      : 0x00000000  A3      : 0x3ffe9af0  A4      : 0x00000000  A5      : 0x00000008  
15:33:32.942 > A6      : 0x00000000  A7      : 0x3ffc7168  A8      : 0x800e5490  A9      : 0x3ffb26d0  
15:33:32.948 > A10     : 0x3ffe88e8  A11     : 0x3ffe9350  A12     : 0x0000180c  A13     : 0x00000001  
15:33:32.956 > A14     : 0x00000004  A15     : 0x3ffb6cb0  SAR     : 0x0000000d  EXCCAUSE: 0x0000001c  
15:33:32.964 > EXCVADDR: 0x00000008  LBEG    : 0x4008b2e8  LEND    : 0x4008b2fe  LCOUNT  : 0xffffffff  
15:33:32.973 > 
15:33:32.973 > 
15:33:32.973 > Backtrace: 0x400e5490:0x3ffb26f0 0x40164a21:0x3ffb2710 0x400e68a6:0x3ffb2730 0x400e69ff:0x3ffb2770 0x400e6625:0x3ffb27c0 0x400e6660:0x3ffb27e0 0x400d692f:0x3ffb2800 0x400ea009:0x3ffb2820
15:33:32.989 > 
15:33:32.989 > 
15:33:32.989 > 
15:33:32.989 > 
15:33:32.989 > ELF file SHA256: fe331861685ab646
15:33:33.013 > 
15:33:33.195 > Rebooting...
15:33:33.196 > ets Jun  8 2016 00:22:57
15:33:33.198 > 
15:33:33.198 > rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
15:33:33.203 > configsip: 0, SPIWP:0xee
15:33:33.203 > clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
15:33:33.216 > mode:DIO, clock div:2
15:33:33.216 > load:0x3fff0030,len:1184
15:33:33.216 > load:0x40078000,len:13104
15:33:33.218 > load:0x40080400,len:3036
15:33:33.242 > entry 0x400805e4
15:33:33.651 > [     3][V][WiFiServer.h:42] WiFiServer(): WiFiServer::WiFiServer(port=80, ...)
15:33:33.656 > [     4][V][WebServer.cpp:87] WebServer(): WebServer::Webserver(port=80)
15:33:33.678 > [    32][D][esp32-hal-cpu.c:244] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz
15:33:34.129 > [   481][I][esp32-hal-psram.c:96] psramInit(): PSRAM enabled
15:33:34.150 > [   505][I][main.cpp:350] setup(): CPU Freq: 240 Mhz
15:33:34.155 > [   505][I][main.cpp:351] setup(): Free heap: 236616 bytes
15:33:34.160 > [   505][I][main.cpp:352] setup(): Starting ESP32CAM-RTSP...
15:33:34.166 > Config version: 1.4
15:33:34.169 > Config size: 450
15:33:34.169 > Loading configurations
15:33:34.172 > [iwcAll]
15:33:34.172 > |-- [iwcSys]
15:33:34.174 > |   |-- 'iwcThingName' with value: 'ESP32CAM-RTSP'
15:33:34.177 > |   |-- 'iwcApPassword' with value: <hidden>
15:33:34.183 > |   |-- [iwcWifi0]
15:33:34.183 > |   |   |-- 'iwcWifiSsid' with value: 'BT-gowno'
15:33:34.188 > |   |   \-- 'iwcWifiPassword' with value: <hidden>
15:33:34.194 > |   \-- 'iwcApTimeout' with value: '30'
15:33:34.197 > |-- [iwcCustom]
15:33:34.197 > |   |-- [board]
15:33:34.199 > |   |   \-- 'bt' with value: 'AI THINKER'
15:33:34.202 > |   |-- [camera]
15:33:34.205 > |   |   |-- 'fd' with value: '100'
15:33:34.208 > |   |   |-- 'fs' with value: 'VGA (640x480)'
15:33:34.210 > |   |   |-- 'q' with value: '12'
15:33:34.213 > |   |   |-- 'b' with value: '0'
15:33:34.216 > |   |   |-- 'c' with value: '0'
15:33:34.219 > |   |   |-- 's' with value: '0'
15:33:34.224 > |   |   |-- 'e' with value: 'Normal'
15:33:34.227 > |   |   |-- 'wb' with value: '1'
15:33:34.230 > |   |   |-- 'awbg' with value: '1'
15:33:34.233 > |   |   |-- 'wbm' with value: 'Auto'
15:33:34.235 > |   |   |-- 'ec' with value: '1'
15:33:34.238 > |   |   |-- 'aec2' with value: '1'
15:33:34.241 > |   |   |-- 'ael' with value: '0'
15:33:34.244 > |   |   |-- 'aecv' with value: '300'
15:33:34.249 > |   |   |-- 'gc' with value: '1'
15:33:34.252 > |   |   |-- 'agcg' with value: '0'
15:33:34.255 > |   |   |-- 'gcl' with value: '2X'
15:33:34.258 > |   |   |-- 'bpc' with value: '0'
15:33:34.260 > |   |   |-- 'wpc' with value: '1'
15:33:34.263 > |   |   |-- 'rg' with value: '1'
15:33:34.266 > |   |   |-- 'lenc' with value: '1'
15:33:34.269 > |   |   |-- 'hm' with value: '0'
15:33:34.272 > |   |   |-- 'vm' with value: '0'
15:33:34.274 > |   |   |-- 'dcw' with value: '1'
15:33:34.277 > |   |   \-- 'cb' with value: '0'
15:33:34.283 > |   \-- [io]
15:33:34.283 > |       \-- 'li' with value: '0'
15:33:34.285 > \-- [hidden]
15:33:34.285 > [   632][V][main.cpp:244] initialize_camera(): initialize_camera
15:33:34.294 > [   636][I][main.cpp:245] initialize_camera(): Camera config: AI THINKER
15:33:34.299 > [   642][I][main.cpp:247] initialize_camera(): Frame size: VGA (640x480)
15:33:34.305 > [   649][I][main.cpp:249] initialize_camera(): JPEG quality: 12
15:33:34.310 > [   654][I][main.cpp:250] initialize_camera(): Frame duration: 100 ms
15:33:34.553 > State changing from: 0 to 2
15:33:34.553 > [   908][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 0 - WIFI_READY
15:33:34.644 > Setting up AP: ESP32CAM-RTSP
15:33:34.644 > Use password: <hidden>
15:33:34.646 > [   997][V][WiFiGeneric.cpp:392] _arduino_event_cb(): AP Started
15:33:34.653 > [   998][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 10 - AP_START
15:33:35.216 > AP IP address: 192.168.4.1
15:33:35.216 > [  1571][V][WiFiGeneric.cpp:395] _arduino_event_cb(): AP Stopped
15:33:35.222 > [  1572][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 11 - AP_STOP
15:33:35.230 > [  1573][V][WiFiGeneric.cpp:392] _arduino_event_cb(): AP Started
15:33:35.236 > [  1579][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 10 - AP_START
15:33:35.244 > AP timeout (ms): 30000
15:33:35.244 > State changed from: 0 to 2

Read temperature value

As the boards get quite hot could you please add the temperature value to the UI? Maybe also MQTT transmitted?

Getting only old snapshot, stream is working and real time

Hi there, I managed to get this up and running. By accident I bought a devive with too low RAM for most applications, but this one works and in principle this is exactly what I wanted to do. So first of all: Many, many thanks for providing this!

When I startet the flashed firmware and did all configuration everything was fine: The ESP-CAM connected to my AP, I can access the webpage and I could do everything as it was supposed to be: Turning LED on and off, getting a stream in VLC and take s snapshot of the current field of view.

However, after that first image all is still working except the snapshot: LED works, stream works, webpage works, but when I open the snapshot URL I always get an old picture. Cleared the cache, disabled all blockers whatsoever, used a frash browser, used private mode, anything that could cause this to be done by the browser, but the cam is just sending one old (somehow buffered) picture.

Any ideas what might be causing that?

After a powercylce the first image is again correct, but any later attempt yields the first taken picture again. Or is that supposed to work that way?

Best regards,
Jochen

Failing to initialize....

Hi,
First of all would like to thank you for the share this project.

I'm having this issue and I'm not really sure how to solve it.
Long story short, everything went well, from upload to configuration... but I couldn't see the video stream.

So I decided to jump into the monitor to watch it initialising...

I tried the 3 different camera configs, and all of them errored similarly.

AI THINKER:

21:52:24.896 > E (47879) cam_hal: cam_dma_config(293): frame buffer malloc failed
21:52:24.900 > E (47879) cam_hal: cam_config(377): cam_dma_config failed
21:52:24.904 > E (47879) camera: Camera config failed with error 0xffffffff
21:52:24.912 > [ 34724][E][main.cpp:142] start_rtsp_server(): Failed to initialize camera. Type: AI THINKER, frame size: XGA (1024x768), frame rate: 20 ms, jpeg quality: 12

ESP32CAM:

21:55:48.740 > E (47607) camera: Camera probe failed with error 0x105(ESP_ERR_NOT_FOUND)
21:55:48.744 > [ 34448][E][main.cpp:142] start_rtsp_server(): Failed to initialize camera. Type: ESP32CAM, frame size: XGA (1024x768), frame rate: 20 ms, jpeg quality: 12

TTGO T-CAM:

21:57:35.888 > E (48561) camera: Camera probe failed with error 0x105(ESP_ERR_NOT_FOUND)
21:57:35.896 > [ 35401][E][main.cpp:142] start_rtsp_server(): Failed to initialize camera. Type: TTGO T-CAM, frame size: XGA (1024x768), frame rate: 20 ms, jpeg quality: 12

So I had a look on the module to see if I could identify what type of module I had, but found it:
camChip

Any idea of what is going wrong?

Thanks!
TF

Improvement on RTSP loading

Hi,
Nice work on this project. I am wondering if we can improve the RTSP connection speeds?

It takes 5 seconds but I am not sure what is causing the delay. On the other hand, the mjpeg is instantaneous. Anyone got any hints. I'm having a look at the RTSP code to try and figure it out, but appreciate if any expert got suggestions.

Cheers

Possible to update esp32cam via PlatformIO OTA?

As per the title, tried to update my cameras with latest develop using OTA, it prints that authentication was ok but then fails, this is using my local Wi-Fi, not connected directly to the esp access point. Is OTA supported with this project?

Need help

Hello and thanks for share this work.

This seems best existing interface for ESP32 CAM for Homekit but somehow not working for me.
I managed to run it on my ESP32 but it seems so slow and RTSP video is not working.
From my side only snapshot and JPEG Motion stream are working but those are super slow.
I am trying different type of pwr input but in vain... wifi signal strength is around 50-60.
And sometimes ESP32 board gets quite hot.

I have zero knowledge of coding so I need help from creator..
How can I access to the log file to share?

image

Improvement

Hi !
It works well but it would be cool to have additionnal controls :

vertical_flip
horizontal_mirror
contrast
brightness
saturation

OTA update ;)

Can't get initial webpage to come up

I have performed the latest build, uploaded via an ESPCAM-MB to an ESP32cam (AI Thinker). I see the AccessPoint ESP32cam-RSTP,
and connect. Once connected, it times out on connecting to 192.168.4.1. For the life of me, I don't know what I have done wrong. Any suggestions? Used Platform IO (VScode) via a windows computer.

Can't view stream with VLC and RTSPtoWeb

Hello. Firstly after flashing and setup I tried to open stream in VLC, but have only black screen with VLC logo in player. Logs says "error sending udp packet":

14:10:35.038 > Creating TSP streamer
14:10:35.038 > Created streamer width=1280, height=720
14:10:35.046 > Creating RTSP session
14:10:36.040 > RTSP received OPTIONS
14:10:37.145 > RTSP received DESCRIBE
14:10:38.250 > RTSP received SETUP
14:10:39.355 > RTSP received PLAY
14:10:52.104 > [169517][E][WiFiClient.cpp:422] write(): fail on fd 52, errno: 104, "Connection reset by peer"
14:10:52.113 > client has closed the socket
14:10:52.113 > client closed socket, exiting
14:10:52.115 > closing TCP socket
14:10:52.118 > closing UDP socket
14:10:52.123 > closing UDP socket
14:11:08.807 > Creating TSP streamer
14:11:08.807 > Created streamer width=1280, height=720
14:11:08.815 > Creating RTSP session
14:11:09.809 > RTSP received SETUP
14:11:10.916 > RTSP received PLAY
14:11:14.380 > [191793][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:14.386 > error sending udp packet
14:11:14.386 > [191794][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:14.394 > error sending udp packet
14:11:14.394 > [191799][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:14.400 > error sending udp packet
14:11:14.707 > [192120][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:14.712 > error sending udp packet
14:11:14.712 > [192121][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:14.721 > error sending udp packet
14:11:14.721 > [192125][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:14.726 > error sending udp packet
14:11:14.729 > [192134][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:14.735 > error sending udp packet
14:11:14.737 > [192142][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:14.743 > error sending udp packet
14:11:14.746 > [192154][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:14.751 > error sending udp packet
14:11:14.754 > [192158][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:14.760 > error sending udp packet
14:11:14.762 > [192166][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:14.768 > error sending udp packet
14:11:14.771 > [192174][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:14.776 > error sending udp packet
14:11:14.779 > [192182][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:14.785 > error sending udp packet
14:11:14.787 > [192190][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:14.793 > error sending udp packet
14:11:14.793 > [192198][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:14.801 > error sending udp packet
14:11:14.801 > [192206][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:14.807 > error sending udp packet
14:11:14.810 > [192214][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:14.815 > error sending udp packet
14:11:14.818 > [192222][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:14.823 > error sending udp packet
14:11:15.350 > [192763][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.355 > error sending udp packet
14:11:15.355 > [192763][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.363 > error sending udp packet
14:11:15.363 > [192768][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.369 > error sending udp packet
14:11:15.372 > [192777][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.377 > error sending udp packet
14:11:15.380 > [192785][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.386 > error sending udp packet
14:11:15.388 > [192794][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.394 > error sending udp packet
14:11:15.397 > [192802][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.402 > error sending udp packet
14:11:15.405 > [192810][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.411 > error sending udp packet
14:11:15.413 > [192817][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.419 > error sending udp packet
14:11:15.422 > [192827][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.427 > error sending udp packet
14:11:15.430 > [192840][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.436 > error sending udp packet
14:11:15.436 > [192841][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.444 > error sending udp packet
14:11:15.444 > [192851][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.450 > error sending udp packet
14:11:15.452 > [192858][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.458 > error sending udp packet
14:11:15.461 > [192867][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.466 > error sending udp packet
14:11:15.469 > [192875][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.475 > error sending udp packet
14:11:15.477 > [192882][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.483 > error sending udp packet
14:11:15.486 > [192890][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.491 > error sending udp packet
14:11:15.494 > [192898][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.500 > error sending udp packet
14:11:15.502 > [192906][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.508 > error sending udp packet
14:11:15.511 > [192915][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.516 > error sending udp packet
14:11:15.519 > [192922][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.525 > error sending udp packet
14:11:15.525 > [192930][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.533 > error sending udp packet
14:11:15.533 > [192941][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.538 > error sending udp packet
14:11:15.541 > [192946][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.547 > error sending udp packet
14:11:15.550 > [192955][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.555 > error sending udp packet
14:11:15.558 > [192962][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.563 > error sending udp packet
14:11:15.915 > [193328][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.921 > error sending udp packet
14:11:15.921 > [193329][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.929 > error sending udp packet
14:11:15.929 > [193334][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.934 > error sending udp packet
14:11:15.937 > [193347][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.943 > error sending udp packet
14:11:15.946 > [193350][E][WiFiUdp.cpp:185] endPacket(): could not send data: 12
14:11:15.951 > error sending udp packet
14:12:07.073 > RTSP received OPTIONS
14:13:03.184 > RTSP received OPTIONS
14:13:59.338 > RTSP received OPTIONS
14:14:55.433 > RTSP received OPTIONS
14:15:51.592 > RTSP received OPTIONS
14:16:47.692 > RTSP received OPTIONS
14:17:43.760 > RTSP received OPTIONS
14:18:39.870 > RTSP received OPTIONS
14:19:36.023 > RTSP received OPTIONS
# Here I closed VLC
14:20:11.916 > RTSP received TEARDOWN
14:20:11.916 > closing TCP socket
14:20:11.918 > closing UDP socket
14:20:11.922 > closing UDP socket

Then I tried to use RTSPtoWeb to re-stream video to the web browser and again, videos not loading and logs printing some another type of error:

14:20:44.321 > Creating TSP streamer
14:20:44.321 > Created streamer width=1280, height=720
14:20:44.329 > Creating RTSP session
14:20:45.323 > RTSP received OPTIONS
14:20:46.428 > RTSP received DESCRIBE
14:20:47.533 > RTSP received SETUP
14:20:48.638 > RTSP received PLAY
14:21:04.265 > [781692][E][WiFiClient.cpp:422] write(): fail on fd 52, errno: 104, "Connection reset by peer"
14:21:04.274 > client has closed the socket
14:21:04.274 > client closed socket, exiting
14:21:04.276 > closing TCP socket
14:21:04.279 > closing UDP socket
14:21:04.284 > closing UDP socket
14:21:06.269 > Creating TSP streamer
14:21:06.269 > Created streamer width=1280, height=720
14:21:06.276 > Creating RTSP session
14:21:07.271 > RTSP received OPTIONS
14:21:08.375 > RTSP received DESCRIBE
14:21:09.480 > RTSP received SETUP
14:21:10.585 > RTSP received PLAY
14:21:26.177 > [803604][E][WiFiClient.cpp:422] write(): fail on fd 52, errno: 104, "Connection reset by peer"
14:21:26.185 > client has closed the socket
14:21:26.186 > client closed socket, exiting
14:21:26.189 > closing TCP socket
14:21:26.191 > closing UDP socket
14:21:26.196 > closing UDP socket
...
And so on

RTSPtoWeb log:

]
2023/03/22 11:30:30 [RTSP/1.0 200 OK
CSeq: 1
Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE

]
2023/03/22 11:30:30 [DESCRIBE rtsp://192.168.13.89:554/mjpeg/1 RTSP/1.0
CSeq: 2
Accept: application/sdp
User-Agent: Lavf58.76.100

]
2023/03/22 11:30:31 [RTSP/1.0 200 OK
CSeq: 2
Date: Thu, Jan 01 1970 00:22:29 GMT
Content-Base: rtsp://192.168.13.89:554/mjpeg/1/
Content-Type: application/sdp
Content-Length: 94

v=0
o=- 147699711 1 IN IP4 192.168.13.89
s=
t=0 0
m=video 0 RTP/AVP 26
c=IN IP4 0.0.0.0
]
2023/03/22 11:30:31 [SETUP rtsp://192.168.13.89:554/mjpeg/1/ RTSP/1.0
CSeq: 3
Transport: RTP/AVP/TCP;unicast;interleaved=0-1
User-Agent: Lavf58.76.100

]
2023/03/22 11:30:32 [RTSP/1.0 200 OK
CSeq: 3
Date: Thu, Jan 01 1970 00:22:30 GMT
Transport: RTP/AVP/TCP;unicast;interleaved=0-1
Session: -2147458888

]
2023/03/22 11:30:32 [SDP Video Codec Type Not Supported ]
2023/03/22 11:30:32 [PLAY rtsp://192.168.13.89:554/mjpeg/1/ RTSP/1.0
CSeq: 4
User-Agent: Lavf58.76.100
Session: -2147458888

]
2023/03/22 11:30:33 [RTSP/1.0 200 OK
CSeq: 4
Date: Thu, Jan 01 1970 00:22:31 GMT
Range: npt=0.000-
Session: -2147458888
RTP-Info: url=rtsp://127.0.0.1:8554/mjpeg/1/track1

]
time="2023-03-22T11:30:33Z" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=2ff849bc-0244-4477-8cee-bf2020f56f78
2023/03/22 11:30:49 [TEARDOWN rtsp://192.168.13.89:554/mjpeg/1/ RTSP/1.0
CSeq: 5
User-Agent: Lavf58.76.100
Session: -2147458888

]
2023/03/22 11:30:49 [RTSP Client RTP ReadFull <nil>]
2023/03/22 11:30:49 [RTSP Client Close <nil>]
time="2023-03-22T11:30:49Z" level=error msg="Stream error restart stream stream no video" call=Restart
time="2023-03-22T11:30:51Z" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=2ff849bc-0244-4477-8cee-bf2020f56f78
time="2023-03-22T11:30:51Z" level=info msg="Stop stream no client" call=ClientHas channel=0 func=StreamServerRunStreamDo module=core stream=2ff849bc-0244-4477-8cee-bf2020f56f78

Idk if I'm doing something wrong, or this is some protocols mismatch or something like this. Snapshots working fine, also I have success on recording some stream through ffmpeg.
I used VLC 3.0.18 on Arch Linux and latest docker image of RTSPtoWeb.

compile error

src/main.cpp: In function 'esp_err_t initialize_camera()':
src/main.cpp:188:17: error: 'struct camera_config_t' has no member named 'fb_location'
camera_config.fb_location = psramFound() ? CAMERA_FB_IN_PSRAM : CAMERA_FB_IN_DRAM;
^
src/main.cpp:188:46: error: 'CAMERA_FB_IN_PSRAM' was not declared in this scope
camera_config.fb_location = psramFound() ? CAMERA_FB_IN_PSRAM : CAMERA_FB_IN_DRAM;
^
src/main.cpp:188:67: error: 'CAMERA_FB_IN_DRAM' was not declared in this scope
camera_config.fb_location = psramFound() ? CAMERA_FB_IN_PSRAM : CAMERA_FB_IN_DRAM;
^

trouble accessing the webpage

I've tried several ESP32CAM boards. What works:

  1. I send the code using Platform.IO.
  2. I get the ESP32CAM-RTSP AP with 192.168.4.1.
  3. I'm able to fill the form, basically giving AP a password, SSID and SSID password.
  4. Unit reboots and gets an IP from DHCP server.
  5. Ping from my network

Now what does not work:
6) As soon as I try to open the webpage, unit reboots and goes back into AP mode.
7) I'm coming back to step 2 but SSID is already filled and camera config has been conserved too.

The only open ports are 53(DNS) and 80(HTTP). 554(RTSP) does not work

Cannot build esp32cam-rtsp

I am using Ubuntu 20.04 and followed the build instructions to build the esp32cam-rtsp image.
I am using the following packages:

  • python 3.8.10
  • PlatformIO Core, version 6.1.6

I get the following build error on pio run:

processing esp32cam (platform: espressif32; board: esp32cam; framework: arduino)

Traceback (most recent call last):
File "/home/bogdan/.platformio/packages/tool-scons/scons.py", line 88, in
import SCons.Script
File "/home/bogdan/.platformio/packages/tool-scons/scons-local-4.4.0/SCons/Script/init.py", line 71, in
import SCons.Action
File "/home/bogdan/.platformio/packages/tool-scons/scons-local-4.4.0/SCons/Action.py", line 114, in
import SCons.Errors
File "/home/bogdan/.platformio/packages/tool-scons/scons-local-4.4.0/SCons/Errors.py", line 31, in
import SCons.Util
File "/home/bogdan/.platformio/packages/tool-scons/scons-local-4.4.0/SCons/Util.py", line 37, in
from typing import Optional, Union
File "/home/bogdan/.local/lib/python3.8/site-packages/typing.py", line 1359, in
class Callable(extra=collections_abc.Callable, metaclass=CallableMeta):
File "/home/bogdan/.local/lib/python3.8/site-packages/typing.py", line 1007, in new
self._abc_registry = extra._abc_registry
AttributeError: type object 'Callable' has no attribute '_abc_registry'
Error in sys.excepthook:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 72, in apport_excepthook
from apport.fileutils import likely_packaged, get_recent_crashes
File "/usr/lib/python3/dist-packages/apport/init.py", line 5, in
from apport.report import Report
File "/usr/lib/python3/dist-packages/apport/report.py", line 32, in
import apport.fileutils
File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 12, in
import os, glob, subprocess, os.path, time, pwd, sys, requests_unixsocket
File "/usr/lib/python3/dist-packages/requests_unixsocket/init.py", line 1, in
import requests
File "/home/bogdan/.local/lib/python3.8/site-packages/requests/init.py", line 48, in
from charset_normalizer import version as charset_normalizer_version
File "/home/bogdan/.local/lib/python3.8/site-packages/charset_normalizer/init.py", line 24, in
from .api import from_bytes, from_fp, from_path, normalize
File "/home/bogdan/.local/lib/python3.8/site-packages/charset_normalizer/api.py", line 3, in
from typing import BinaryIO, List, Optional, Set
File "/home/bogdan/.local/lib/python3.8/site-packages/typing.py", line 1359, in
class Callable(extra=collections_abc.Callable, metaclass=CallableMeta):
File "/home/bogdan/.local/lib/python3.8/site-packages/typing.py", line 1007, in new
self._abc_registry = extra._abc_registry
AttributeError: type object 'Callable' has no attribute '_abc_registry'

Original exception was:
Traceback (most recent call last):
File "/home/bogdan/.platformio/packages/tool-scons/scons.py", line 88, in
import SCons.Script
File "/home/bogdan/.platformio/packages/tool-scons/scons-local-4.4.0/SCons/Script/init.py", line 71, in
import SCons.Action
File "/home/bogdan/.platformio/packages/tool-scons/scons-local-4.4.0/SCons/Action.py", line 114, in
import SCons.Errors
File "/home/bogdan/.platformio/packages/tool-scons/scons-local-4.4.0/SCons/Errors.py", line 31, in
import SCons.Util
File "/home/bogdan/.platformio/packages/tool-scons/scons-local-4.4.0/SCons/Util.py", line 37, in
from typing import Optional, Union
File "/home/bogdan/.local/lib/python3.8/site-packages/typing.py", line 1359, in
class Callable(extra=collections_abc.Callable, metaclass=CallableMeta):
File "/home/bogdan/.local/lib/python3.8/site-packages/typing.py", line 1007, in new
self._abc_registry = extra._abc_registry
AttributeError: type object 'Callable' has no attribute '_abc_registry'
============================================================================= [FAILED] Took 0.13 seconds =============================================================================

Found some info about this error here:
https://stackoverflow.com/questions/55833509/attributeerror-type-object-callable-has-no-attribute-abc-registry
and I uninstalled typing package.

Without typing package, I got the following error:
File "/home/bogdan/.local/lib/python3.8/site-packages/asyncio/base_events.py", line 296

future = tasks.async(future, loop=self)

               ^

SyntaxError: invalid syntax

Any solution on how to fix the error?
Thanks

Failed to start, keep rebooting

I have followed the steps in the readme, it flashed successfully, but keep rebooting after that.

01:03:43.291 > Rebooting...
01:03:43.296 > ets Jul 29 2019 12:21:46
01:03:43.296 > 
01:03:43.296 > rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
01:03:43.302 > configsip: 0, SPIWP:0xee
01:03:43.302 > clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
01:03:43.312 > mode:DIO, clock div:2
01:03:43.312 > load:0x3fff0030,len:1184
01:03:43.312 > load:0x40078000,len:13132
01:03:43.318 > load:0x40080400,len:3036
01:03:43.318 > entry 0x400805e4
01:03:43.701 > [     2][V][WiFiServer.h:42] WiFiServer(): WiFiServer::WiFiServer(port=80, ...)
01:03:43.707 > [     3][V][WebServer.cpp:85] WebServer():␃`�U���Y.W�.'�U���Y.W�.%\K␗W�Jj��␅		␒␒��W+QW�Y.\&�KZX�K,\]�,'�LMW��Y](\]��equencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz
01:03:44.164 > [   461][I][esp32-hal-psram.c:96] psramInit(): PSRAM enabled
01:03:44.195 > [   495][I][main.cpp:166] setup(): CPU Freq = 240 Mhz
01:03:44.202 > [   496][I][main.cpp:167] setup(): Free heap: 249416 bytes
01:03:44.206 > [   496][I][main.cpp:168] setup(): Starting ESP32CAM-RTSP...
01:03:44.211 > Config version: 1.0
01:03:44.211 > Config size: 319
01:03:44.211 > Wrong config version. Applying defaults.
01:03:44.217 > [iwcAll]
01:03:44.217 > |-- [iwcSys]
01:03:44.217 > |   |-- 'iwcThingName' with value: 'ESP32CAM-RTSP'
01:03:44.222 > |   |-- 'iwcApPassword' with value: <hidden>
01:03:44.227 > |   |-- [iwcWifi0]
01:03:44.227 > |   |   |-- 'iwcWifiSsid' with value: ''
01:03:44.233 > |   |   \-- 'iwcWifiPassword' with value: <hidden>
01:03:44.238 > |   \-- 'iwcApTimeout' with value: '30'
01:03:44.243 > |-- [iwcCustom]
01:03:44.243 > |   \-- [settings]
01:03:44.243 > |       |-- 'config' with value: 'AI THINKER'
01:03:44.249 > |       |-- 'fr' with value: '20'
01:03:44.249 > |       |-- 'fs' with value: 'SVGA (800x600)'
01:03:44.254 > |       \-- 'q' with value: '12'
01:03:44.260 > \-- [hidden]
01:03:44.260 > [   556][E][ESPmDNS.cpp:65] begin(): Failed starting MDNS
01:03:44.265 > [   556][E][ESPmDNS.cpp:148] addService(): Failed adding service http.tcp.
01:03:44.270 > 
01:03:44.270 > AP password was not set in configuration
01:03:44.286 > State changing from: 0 to 1
01:03:44.293 > [   591][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 0 - WIFI_READY
01:03:44.335 > Guru Meditation Error: Core  0 panic'ed (LoadProhibited). Exception was unhandled.
01:03:44.340 > 
01:03:44.340 > Core  0 register dump:
01:03:44.340 > PC      : 0x4015507b  PS      : 0x00060c30  A0      : 0x80155182  A1      : 0x3ffd3360  
01:03:44.351 > A2      : 0x80155182  A3      : 0x80155192  A4      : 0x00000006  A5      : 0x3ffd0a7e  
01:03:44.356 > A6      : 0x0c080400  A7      : 0x3ffc723c  A8      : 0x8015503c  A9      : 0x3ffd3300  
01:03:44.367 > A10     : 0x3ffd3360  A11     : 0x3ffd3376  A12     : 0x80155182  A13     : 0x00000000  
01:03:44.372 > A14     : 0x00000050  A15     : 0x00000075  SAR     : 0x00000007  EXCCAUSE: 0x0000001c  
01:03:44.383 > EXCVADDR: 0x80155192  LBEG    : 0x4000c2e0  LEND    : 0x4000c2f6  LCOUNT  : 0x00000000  
01:03:44.389 > 
01:03:44.389 > 
01:03:44.389 > Backtrace:0x40155078:0x3ffd33600x4015517f:0x3ffd33b0 0x40152516:0x3ffd33d0 0x40152f8e:0x3ffd33f0 0x4011f102:0x3ffd3420 0x4011f179:0x3ffd3450 0x40135b02:0x3ffd3470 0x401362d9:0x3ffd3490 0x401349a0:0x3ffd34b0 0x40171d69:0x3ffd34d0 
01:03:44.410 > 
01:03:44.410 > 
01:03:44.410 > 
01:03:44.410 > 
01:03:44.410 > ELF file SHA256: 0000000000000000
01:03:44.410 > 
01:03:44.416 > Rebooting...
01:03:44.416 > ets Jul 29 2019 12:21:46
01:03:44.416 > 
01:03:44.416 > rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
01:03:44.422 > configsip: 0, SPIWP:0xee
01:03:44.427 > clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
01:03:44.432 > mode:DIO, clock div:2
01:03:44.432 > load:0x3fff0030,len:1184
01:03:44.432 > load:0x40078000,len:13132
01:03:44.438 > load:0x40080400,len:3036
01:03:44.438 > entry 0x400805e4

Multiclient

I like your solution for this camera. Are you ever planning a multi-client extension?

Error UDP Packet

Hello,
I can`t run the stream, always get the Error:

17:11:43.778 > [ 46825][E][WiFiUdp.cpp:183] endPacket(): could not send data: 12
17:11:43.783 > error sending udp packet

17:10:56.510 >
17:10:56.510 > rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
17:10:56.515 > configsip: 0, SPIWP:0xee
17:10:56.518 > clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
17:10:56.523 > mode:DIO, clock div:2
17:10:56.526 > load:0x3fff0030,len:1184
17:10:56.529 > load:0x40078000,len:13104
17:10:56.532 > load:0x40080400,len:3036
17:10:56.532 > entry 0x400805e4
17:10:56.948 > [ 2][V][WiFiServer.h:42] WiFiServer(): WiFiServer::WiFiServer(port=80, ...)
17:10:56.954 > [ 3][V][WebServer.cpp:87] WebServer(): WebServer::Webserver(port=80)
17:10:56.977 > [ 31][D][esp32-hal-cpu.c:244] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz
17:10:57.426 > [ 479][I][esp32-hal-psram.c:96] psramInit(): PSRAM enabled
17:10:57.451 > [ 505][I][main.cpp:267] setup(): CPU Freq: 240 Mhz
17:10:57.454 > [ 505][I][main.cpp:268] setup(): Free heap: 238040 bytes
17:10:57.460 > [ 506][I][main.cpp:269] setup(): Starting ESP32CAM-RTSP...
17:10:57.465 > Config version: 1.3
17:10:57.468 > Config size: 392
17:10:57.468 > Loading configurations
17:10:57.471 > [iwcAll]
17:10:57.471 > |-- [iwcSys]
17:10:57.474 > | |-- 'iwcThingName' with value: 'ESP32CAM-RTSP'
17:10:57.476 > | |-- 'iwcApPassword' with value:
17:10:57.482 > | |-- [iwcWifi0]
17:10:57.482 > | | |-- 'iwcWifiSsid' with value: 'TP-Link_2.5Ghz'
17:10:57.488 > | | -- 'iwcWifiPassword' with value:
17:10:57.493 > | -- 'iwcApTimeout' with value: '30'
17:10:57.496 > |-- [iwcCustom]
17:10:57.499 > | -- [settings]
17:10:57.499 > | |-- 'config' with value: 'AI THINKER'
17:10:57.504 > | |-- 'fd' with value: '20'
17:10:57.507 > | |-- 'fs' with value: 'SVGA (800x600)'
17:10:57.510 > | |-- 'fb' with value: '2'
17:10:57.513 > | |-- 'q' with value: '12'
17:10:57.515 > | -- 'li' with value: '0'
17:10:57.518 > -- [hidden]
17:10:57.521 > State changing from: 0 to 2
17:10:57.541 > [ 595][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 0 - WIFI_READY
17:10:57.641 > Setting up AP: ESP32CAM-RTSP
17:10:57.641 > Use password:
17:10:57.643 > AP IP address: [ 695][V][WiFiGeneric.cpp:392] _arduino_event_cb(): AP Started
17:10:57.652 > 192[ 695][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 10 - AP_START
17:10:57.657 > .168.4.1
17:10:57.660 > AP timeout (ms): 30000
17:10:57.660 > State changed from: 0 to 2
17:11:27.653 > State changing from: 2 to 3
17:11:27.667 > [ 30721][V][WiFiGeneric.cpp:395] _arduino_event_cb(): AP Stopped
17:11:27.672 > [ 30722][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 11 - AP_STOP
17:11:27.678 > [ 30725][V][WiFiGeneric.cpp:392] _arduino_event_cb(): AP Stated
17:11:27.683 > E (43814) wifi_init_default: esp_wifi_get_mac failed with 12289
17:11:27.689 > Connecting to [TP-Link_2.5Ghz] (password is hidden)
17:11:27.694 > WiFi timeout (ms): [ 30735][V][WiFiGeneric.cpp:395] _arduino_event_cb(): AP Stopped
17:11:27.700 > [ 30729][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 10 - AP_START
17:11:27.708 > [ 30754][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 11 - AP_STOP
17:11:27.714 > 30000
17:11:27.731 > [ 30786][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 0 - WIFI_READY
17:11:27.737 > [ 30792][V][WiFiGeneric.cpp:340] _arduino_event_cb(): STA Started
17:11:27.743 > [ 30793][V][WiFiGeneric.cpp:97] set_esp_interface_ip(): Configuring Station static IP: 0.0.0.0, MASK: 0.0.0.0, GW:0.0.0.0
17:11:27.754 > [ 30794][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 2 - STA_START
17:11:27.762 > State changed from: 2 to 3
17:11:27.798 > [ 30852][V][WiFiGeneric.cpp:355] _arduino_event_cb(): STA Connected: SSID: TP-Link_2.5Ghz, BSSID:
0c:9d:92:cf:59:20, Channel: 6, Auth: WPA2_PSK
17:11:27.809 > [ 30854][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 4 - STA_CONNECTED
17:11:28.395 > [ 31450][V][WiFiGeneric.cpp:369] _arduino_event_cb(): STA Got New IP:192.168.0.49
17:11:28.401 > [ 31450][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 7 - STA_GOT_IP
17:11:28.409 > [ 31453][D][WiFiGeneric.cpp:996] _eventCallback(): STA IP: 192.168.0.49, MASK: 255.255.255.0, GW: 192.168.0.2
17:11:28.418 > WiFi connected
17:11:28.421 > IP address: 192.168.0.49
17:11:28.421 > State changing from: 3 to 4
17:11:31.521 > [ 34575][W][ESPmDNS.cpp:222] queryService(): No results found!
17:11:31.526 > Active mDNS services: 0
17:11:31.526 > Accepting connection
17:11:31.529 > [ 34577][V][main.cpp:238] on_connected(): on_connected
17:11:31.537 > [ 34591][I][ArduinoOTA.cpp:141] begin(): OTA server at: esp32-30c6f7207d4c.local:3232
17:11:31.542 > [ 34592][V][main.cpp:221] start_rtsp_server(): start_rtsp_server
17:11:31.548 > [ 34594][V][main.cpp:200] initialize_camera(): initialize_camera
17:11:31.554 > [ 34599][I][main.cpp:201] initialize_camera(): Camera config: AI THINKER
17:11:31.562 > [ 34606][I][main.cpp:203] initialize_camera(): Frame size: SVGA (800x600)
17:11:31.567 > [ 34612][I][main.cpp:205] initialize_camera(): Frame buffers: 2
17:11:31.573 > [ 34618][I][main.cpp:207] initialize_camera(): JPEG quality: 12
17:11:31.578 > [ 34624][I][main.cpp:209] initialize_camera(): Frame rate: 20 ms
17:11:31.796 > [ 34851][I][main.cpp:229] start_rtsp_server(): Camera initialized
17:11:31.802 > [ 34851][V][WiFiServer.h:42] WiFiServer(): WiFiServer::WiFiServer(port=554, ...)
17:11:31.807 > [ 34853][I][rtsp_server.cpp:9] rtsp_server(): Starting RTSP server
17:11:31.815 > State changed from: 3 to 4
17:11:38.886 > Creating TSP streamer
17:11:38.886 > Created streamer width=800, height=600
17:11:38.888 > Creating RTSP session
17:11:39.885 > RTSP received OPTIONS
17:11:40.930 > RTSP received DESCRIBE
17:11:42.576 > RTSP received SETUP
17:11:43.642 > RTSP received PLAY
17:11:43.764 > [ 46818][E][WiFiUdp.cpp:183] endPacket(): could not send data: 12
17:11:43.769 > error sending udp packet

What am I doing wrong?

Thank`s for helping!

timestamp

Sorry to raise a ticket for a simple question.
Would I be able to project a timestamp on my camera feed with esp32cam-rtsp?

cannot get it to work

I cannot connect to the espcam afer the initial configuration is done. these are the logs:

what is going on ?

19:40:32.594 > Rebooting...
19:40:32.597 > ets Jul 29 2019 12:21:46
19:40:32.600 >
19:40:32.600 > rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
19:40:32.603 > configsip: 0, SPIWP:0xee
19:40:32.606 > clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
19:40:32.611 > mode:DIO, clock div:2
19:40:32.614 > load:0x3fff0030,len:1184
19:40:32.616 > load:0x40078000,len:13132
19:40:32.619 > load:0x40080400,len:3036
19:40:32.623 > entry 0x400805e4
19:40:33.044 > [     4][V][WiFiServer.h:42] WiFiServer(): WiFiServer::WiFiServer(port=80, ..��X
19:40:33.049 > [     4][V][WebServer.cpp:87] WebServer(): WebServer::Webserver(port=80)
19:40:33.054 > [    11][D][esp32-hal-cpu.c:244] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz
19:40:33.504 > [   462][I][esp32-hal-psram.c:96] psramInit(): PSRAM enabled
19:40:33.536 > [   496][I][main.cpp:396] setup(): CPU Freq: 240 Mhz
19:40:33.539 > [   497][I][main.cpp:397] setup(): Free heap: 244196 bytes
19:40:33.544 > [   497][I][main.cpp:398] setup(): SDK version: v4.4.2
19:40:33.550 > [   500][I][main.cpp:399] setup(): Starting ESP32CAM-RTSP...
19:40:33.556 > [   506][V][main.cpp:404] setup(): PSRAM found and initialized
19:40:33.564 > Config version: 1.5
19:40:33.564 > Config size: 455
19:40:33.564 > Loading configurations
19:40:33.567 > [iwcAll]
19:40:33.567 > |-- [iwcSys]
19:40:33.567 > |   |-- 'iwcThingName' with value: 'ESP32CAM-RTSP'
19:40:33.574 > |   |-- 'iwcApPassword' with value: <hidden>
19:40:33.578 > |   |-- [iwcWifi0]
19:40:33.578 > |   |   |-- 'iwcWifiSsid' with value: 'smelskes'
19:40:33.584 > |   |   \-- 'iwcWifiPassword' with value: <hidden>
19:40:33.586 > |   \-- 'iwcApTimeout' with value: '30'
19:40:33.593 > |-- [iwcCustom]
19:40:33.593 > |   |-- [board]
19:40:33.595 > |   |   \-- 'bt' with value: 'ESP32CAM'
19:40:33.598 > |   |-- [camera]
19:40:33.601 > |   |   |-- 'fd' with value: '100'
19:40:33.603 > |   |   |-- 'fs' with value: 'HD (1280x720)'
19:40:33.606 > |   |   |-- 'q' with value: '12'
19:40:33.610 > |   |   |-- 'eps' with value: '1'
19:40:33.611 > |   |   |-- 'fb' with value: '1'
19:40:33.615 > |   |   |-- 'b' with value: '0'
19:40:33.617 > |   |   |-- 'c' with value: '0'
19:40:33.620 > |   |   |-- 's' with value: '0'
19:40:33.622 > |   |   |-- 'e' with value: 'Normal'
19:40:33.628 > |   |   |-- 'wb' with value: '1'
19:40:33.633 > |   |   |-- 'awbg' with value: '1'
19:40:33.634 > |   |   |-- 'wbm' with value: 'Auto'
19:40:33.636 > |   |   |-- 'ec' with value: '1'
19:40:33.639 > |   |   |-- 'aec2' with value: '1'
19:40:33.642 > |   |   |-- 'ael' with value: '0'
19:40:33.645 > |   |   |-- 'aecv' with value: '300'
19:40:33.648 > |   |   |-- 'gc' with value: '1'
19:40:33.653 > |   |   |-- 'agcg' with value: '0'
19:40:33.656 > |   |   |-- 'gcl' with value: '2X'
19:40:33.659 > |   |   |-- 'bpc' with value: '0'
19:40:33.661 > |   |   |-- 'wpc' with value: '1'
19:40:33.665 > |   |   |-- 'rg' with value: '1'
19:40:33.667 > |   |   |-- 'lenc' with value: '1'
19:40:33.670 > |   |   |-- 'hm' with value: '0'
19:40:33.673 > |   |   |-- 'vm' with value: '0'
19:40:33.675 > |   |   |-- 'dcw' with value: '1'
19:40:33.678 > |   |   \-- 'cb' with value: '0'
19:40:33.681 > |   \-- [io]
19:40:33.684 > |       \-- 'li' with value: '0'
19:40:33.686 > \-- [hidden]
19:40:33.686 > [   645][V][main.cpp:282] initialize_camera(): initialize_camera
19:40:33.692 > [   645][I][main.cpp:283] initialize_camera(): Camera config: ESP32CAM
19:40:33.704 > [   650][I][main.cpp:289] initialize_camera(): Frame size: HD (1280x720)
19:40:33.706 > [   656][I][main.cpp:291] initialize_camera(): JPEG quality: 12
19:40:33.712 > [   662][I][main.cpp:292] initialize_camera(): Frame duration: 100 ms
19:40:33.717 > [   668][I][main.cpp:296] initialize_camera(): Enable PSRAM: 1
19:40:33.726 > [   674][I][main.cpp:297] initialize_camera(): Frame buffers: 1
19:40:33.728 > [   679][I][main.cpp:303] initialize_camera(): PSRAM enabled!
19:40:33.758 > E (710) camera: Camera probe failed with error 0x105(ESP_ERR_NOT_FOUND)
19:40:33.763 > [   718][E][main.cpp:452] setup(): Failed to initialize camera: 0x105. Type: ESP32CAM, frame size: HD (1280x720), frame rate: 100 ms, jpeg quality: 12
19:40:33.779 > State changing from: 0 to 2
19:40:33.798 > [   758][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 0 - WIFI_READY
19:40:33.891 > Setting up AP: ESP32CAM-RTSP
19:40:33.891 > Use password: <hidden>
19:40:33.894 > [   851][V][WiFiGeneric.cpp:390] _arduino_event_cb(): AP Started
19:40:33.899 > [   853][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 10 - AP_START
19:40:34.560 > AP IP address: 192.168.4.1
19:40:34.560 > [  1523][V][WiFiGeneric.cpp:393] _arduino_event_cb(): AP Stopped
19:40:34.566 > [  1523][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 11 - AP_STOP
19:40:34.574 > [  1524][V][WiFiGeneric.cpp:390] _arduino_event_cb(): AP Started
19:40:34.583 > [  1530][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 10 - AP_START
19:40:34.592 > AP timeout (ms): 30000
19:40:34.592 > State changed from: 0 to 2
19:41:04.583 > State changing from: 2 to 3
19:41:04.592 > [ 31553][V][WiFiGeneric.cpp:393] _arduino_event_cb(): AP Stopped
19:41:04.599 > [ 31554][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 11 - AP_STOP
19:41:04.603 > [ 31558][V][WiFiGeneric.cpp:390] _arduino_event_cb(): AP Started
19:41:04.609 > Camera probe failed with error 0x105E (45509) wifi_init_default: esp_wifi_get_mac failed with 12289
19:41:04.617 > Connecting to [smelskes[ 31570][V][WiFiGeneric.cpp:393] _arduino_event_cb(): AP Stopped
19:41:04.625 > [ 31561][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 10 - AP_START
19:41:04.634 > [ 31584][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 11 - AP_STOP
19:41:04.639 > ] (password is hidden)
19:41:04.642 > WiFi timeout (ms): 30000
19:41:04.659 > [ 31620][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 0 - WIFI_READY
19:41:04.665 > [ 31626][V][WiFiGeneric.cpp:338] _arduino_event_cb(): STA Started
19:41:04.670 > [ 31627][V][WiFiGeneric.cpp:97] set_esp_interface_ip(): Configuring Station static IP: 0.0.0.0, MASK: 0.0.0.0, GW: 0.0.0.0
19:41:04.681 > [ 31628][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 2 - STA_START
19:41:04.692 > State changed from: 2 to 3
19:41:04.714 > [ 31675][V][WiFiGeneric.cpp:360] _arduino_event_cb(): STA Disconnected: SSID: smelskes, BSSID: b0:be:76:ea:73:16, Reason: 202
19:41:04.722 > [ 31676][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 5 - STA_DISCONNECTED
19:41:04.730 > [ 31683][W][WiFiGeneric.cpp:950] _eventCallback(): Reason: 202 - AUTH_FAIL
19:41:04.739 > [ 31690][D][WiFiGeneric.cpp:966] _eventCallback(): WiFi Reconnect Running
19:41:04.744 > [ 31698][V][WiFiGeneric.cpp:97] set_esp_interface_ip(): Configuring Station static IP: 0.0.0.0, MASK: 0.0.0.0, GW: 0.0.0.0
19:41:04.830 > [ 31791][V][WiFiGeneric.cpp:353] _arduino_event_cb(): STA Connected: SSID: smelskes, BSSID: b0:be:76:ea:73:16, Channel: 4, Auth: WPA2_PSK
19:41:04.841 > [ 31792][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 4 - STA_CONNECTED
19:41:07.299 > [ 34261][V][WiFiGeneric.cpp:367] _arduino_event_cb(): STA Got New IP:192.168.1.181
19:41:07.305 > [ 34261][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 7 - STA_GOT_IP
19:41:07.313 > [ 34264][D][WiFiGeneric.cpp:991] _eventCallback(): STA IP: 192.168.1.181, MASK: 255.255.255.0, GW: 192.168.1.1
19:41:07.322 > WiFi connected
19:41:07.324 > IP address: 192.168.1.181
19:41:07.329 > State changing from: 3 to 4
19:41:10.425 > Active mDNS services: 3
19:41:10.425 > Accepting connection
19:41:10.428 > [ 37388][V][main.cpp:358] on_connected(): on_connected
19:41:10.439 > [ 37400][I][ArduinoOTA.cpp:141] begin(): OTA server at: esp32-e05a1bacbe30.local:3232
19:41:10.444 > [ 37401][E][main.cpp:365] on_connected(): Not starting RTSP server: camera not initialized
19:41:10.453 > State changed from: 3 to 4

Static IP ?

Is is possible to configure this for a static IP? Maybe in settings page or config file?

Adding a custom ESP32 Board

Hi,

I am working on a custom image sensor PCB for my master thesis and would like to know, if its possible to adjust this firmware to work with the ESP32S3WROOM and my pinout? And how would I start on that?

I am fairly new to firmware programming and only found the camera pinout setting, which I could adjust to my schematic, but the other settings are taken from online resources as far as I can see?

I have attached the schematic for my PCB and would be very thankful for any help!
Circuit_Diagram_ESP32_Image_Sensor_Board.PDF

Currently I have added this to the lookup_camera_config:

constexpr camera_config_t esp32s3_settings = {
.pin_pwdn = 48,
.pin_reset = -1,
.pin_xclk = 15,
.pin_sscb_sda = 4,
.pin_sscb_scl = 5,
.pin_d7 = 16,
.pin_d6 = 17,
.pin_d5 = 18,
.pin_d4 = 12,
.pin_d3 = 10,
.pin_d2 = 8,
.pin_d1 = 9,
.pin_d0 = 11,
.pin_vsync = 6,
.pin_href = 7,
.pin_pclk = 13,
.xclk_freq_hz = 20000000,
.ledc_timer = LEDC_TIMER_1,
.ledc_channel = LEDC_CHANNEL_1,
.pixel_format = PIXFORMAT_JPEG,
.frame_size = FRAMESIZE_SVGA,
.jpeg_quality = 12,
.fb_count = 2};

constexpr const camera_config_entry_t camera_configs[] = {
{"ESP32CAM", esp32cam_settings},
{"AI THINKER", esp32cam_aithinker_settings},
{"TTGO T-CAM", esp32cam_ttgo_t_settings},
{"M5 STACK", esp32cam_m5stack_settings},
{"WROVER KIT", esp32cam_wrover_kit_settings},
{"ESO32S3", esp32s3_settings}};

Is this correct so far and what else do I need to change?

Thanks in advance!

Exception was unhandled

Reboots as soon as GET /snapshot. Bummer.

[19:45:15]ets Jun  8 2016 00:22:57
[19:45:15]
[19:45:15]rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
[19:45:15]configsip: 0, SPIWP:0xee
[19:45:15]clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
[19:45:15]mode:DIO, clock div:2
[19:45:15]load:0x3fff0018,len:4
[19:45:15]load:0x3fff001c,len:1044
[19:45:15]load:0x40078000,len:8896
[19:45:15]load:0x40080400,len:5828
[19:45:15]entry 0x400806ac
[19:45:15][     3][V][WiFiServer.h:42] WiFiServer(): WiFiServer::WiFiServer(port=80, ...)
[19:45:15][     4][V][WebServer.cpp:87] WebServer(): WebServer::Webserver(port=80)
[19:45:15]E (446) esp_core_dump_flash:[19:45:15]E (450) esp_core_dump_flash: No core dump partition found!
[19:45:15][    20][D][esp32-hal-cpu.c:244] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz
[19:45:16][   473][I][esp32-hal-psram.c:96] psramInit(): PSRAM enabled
[19:45:16][   494][I][main.cpp:361] setup(): CPU Freq: 240 Mhz
[19:45:16][   494][I][main.cpp:362] setup(): Free heap: 237124 bytes
[19:45:16][   494][I][main.cpp:363] setup(): Starting ESP32CAM-RTSP...
[19:45:16]Config version: 1.4
[19:45:16]Config size: 450
[19:45:16]Wrong config version. Applying defaults.
[19:45:16][iwcAll]
[19:45:16]|-- [iwcSys]
[19:45:16]|   |-- 'iwcThingName' with value: 'ESP32CAM-RTSP'
[19:45:16]|   |-- 'iwcApPassword' with value: <hidden>
[19:45:16]|   |-- [iwcWifi0]
[19:45:16]|   |   |-- 'iwcWifiSsid' with value: ''
[19:45:16]|   |   \-- 'iwcWifiPassword' with value: <hidden>
[19:45:16]|   \-- 'iwcApTimeout' with value: '30'
[19:45:16]|-- [iwcCustom]
[19:45:16]|   |-- [board]
[19:45:16]|   |   \-- 'bt' with value: 'AI THINKER'
[19:45:16]|   |-- [camera]
[19:45:16]|   |   |-- 'fd' with value: '100'
[19:45:16]|   |   |-- 'fs' with value: 'VGA (640x480)'
[19:45:16]|   |   |-- 'q' with value: '12'
[19:45:16]|   |   |-- 'b' with value: '0'
[19:45:16]|   |   |-- 'c' with value: '0'
[19:45:16]|   |   |-- 's' with value: '0'
[19:45:16]|   |   |-- 'e' with value: 'Normal'
[19:45:16]|   |   |-- 'wb' with value: '1'
[19:45:16]|   |   |-- 'awbg' with value: '1'
[19:45:16]|   |   |-- 'wbm' with value: 'Auto'
[19:45:16]|   |   |-- 'ec' with value: '1'
[19:45:16]|   |   |-- 'aec2' with value: '1'
[19:45:16]|   |   |-- 'ael' with value: '0'
[19:45:16]|   |   |-- 'aecv' with value: '300'
[19:45:16]|   |   |-- 'gc' with value: '1'
[19:45:16]|   |   |-- 'agcg' with value: '0'
[19:45:16]|   |   |-- 'gcl' with value: '2X'
[19:45:16]|   |   |-- 'bpc' with value: '0'
[19:45:16]|   |   |-- 'wpc' with value: '1'
[19:45:16]|   |   |-- 'rg' with value: '1'
[19:45:16]|   |   |-- 'lenc' with value: '1'
[19:45:16]|   |   |-- 'hm' with value: '0'
[19:45:16]|   |   |-- 'vm' with value: '0'
[19:45:16]|   |   |-- 'dcw' with value: '1'
[19:45:16]|   |   \-- 'cb' with value: '0'
[19:45:16]|   \-- [io]
[19:45:16]|       \-- 'li' with value: '0'
[19:45:16]\-- [hidden]
[19:45:16]AP password was not set in configuration
[19:45:16]State changing from: 0 to 1
[19:45:16][   642][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 0 - WIFI_READY
[19:45:16]Setting up AP: ESP32CAM-RTSP
[19:45:16]With default password: <hidden>
[19:45:16]AP IP address: [   735][V][WiFiGeneric.cpp:392] _arduino_event_cb(): AP Started
[19:45:16]192.[   740][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 10 - AP_START
[19:45:16][   742][V][WiFiGeneric.cpp:395] _arduino_event_cb(): AP Stopped
[19:45:16]168.4.1
[19:45:16][   749][V][WiFiGeneric.cpp:392] _arduino_event_cb(): AP Started
[19:45:16][   749][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 11 - AP_STOP
[19:45:16][   763][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 10 - AP_START
[19:45:16]AP password was not set.
[19:45:16]WiFi SSID was not set.
[19:45:16]Will stay in AP mode.
[19:45:16]State changed from: 0 to 1
[19:45:21]Connection to AP.
[19:45:21][  5380][V][WiFiGeneric.cpp:407] _arduino_event_cb(): AP Station Connected: MAC: 24:18:1d:2c:e0:66, AID: 1
[19:45:21][  5381][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 12 - AP_STACONNECTED
[19:45:21][  5670][V][WiFiGeneric.cpp:421] _arduino_event_cb(): AP Station IP Assigned:192.168.4.2
[19:45:21][  5670][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 14 - AP_STAIPASSIGNED
[19:45:22][  7174][V][WebServer.cpp:296] handleClient(): New client: client.localIP()=192.168.4.1
[19:45:22][  7198][V][Parsing.cpp:122] _parseRequest(): method: GET url: /snapshot search: 
[19:45:22][  7198][V][Parsing.cpp:226] _parseRequest(): headerName: Host
[19:45:22][  7200][V][Parsing.cpp:227] _parseRequest(): headerValue: 192.168.4.1
[19:45:22][  7206][V][Parsing.cpp:226] _parseRequest(): headerName: Connection
[19:45:22][  7212][V][Parsing.cpp:227] _parseRequest(): headerValue: keep-alive
[19:45:22][  7218][V][Parsing.cpp:226] _parseRequest(): headerName: Cache-Control
[19:45:22][  7224][V][Parsing.cpp:227] _parseRequest(): headerValue: max-age=0
[19:45:22][  7231][V][Parsing.cpp:226] _parseRequest(): headerName: Upgrade-Insecure-Requests
[19:45:22][  7238][V][Parsing.cpp:227] _parseRequest(): headerValue: 1
[19:45:22][  7244][V][Parsing.cpp:226] _parseRequest(): headerName: User-Agent
[19:45:22][  7249][V][Parsing.cpp:227] _parseRequest(): headerValue: Mozilla/5.0 (Linux; Android 10; SM-G965N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Mobile Safari/537.36
[19:45:22][  7265][V][Parsing.cpp:226] _parseRequest(): headerName: Accept
[19:45:22][  7271][V][Parsing.cpp:227] _parseRequest(): headerValue: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
[19:45:22][  7288][V][Parsing.cpp:226] _parseRequest(): headerName: Accept-Encoding
[19:45:22][  7294][V][Parsing.cpp:227] _parseRequest(): headerValue: gzip, deflate
[19:45:22][  7301][V][Parsing.cpp:226] _parseRequest(): headerName: Accept-Language
[19:45:22][  7307][V][Parsing.cpp:227] _parseRequest(): headerValue: pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7,de;q=0.6
[19:45:23][  7316][V][Parsing.cpp:254] _parseArguments(): args: 
[19:45:23][  7321][V][Parsing.cpp:237] _parseRequest(): Request: /snapshot
[19:45:23][  7327][V][Parsing.cpp:238] _parseRequest():  Arguments: 
[19:45:23][  7332][V][main.cpp:190] handle_snapshot(): handle_snapshot
[19:45:23]Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.
[19:45:23]
[19:45:23]Core  1 register dump:
[19:45:23]PC      : 0x400e5533  PS      : 0x00060f30  A0      : 0x800d389c  A1      : 0x3ffb25f0  
[19:45:23]A2      : 0x00000000  A3      : 0x400d3845  A4      : 0x00000056  A5      : 0x000000be  
[19:45:23]A6      : 0x3f400de7  A7      : 0x003fffff  A8      : 0x800e5530  A9      : 0x3ffb25d0  
[19:45:23]A10     : 0x3ffc5c94  A11     : 0x3ffc6cdb  A12     : 0x0000003f  A13     : 0x0000003f  
[19:45:23]A14     : 0x3f40013b  A15     : 0xff000000  SAR     : 0x00000004  EXCCAUSE: 0x0000001c  
[19:45:23]EXCVADDR: 0x00000004  LBEG    : 0x4008c701  LEND    : 0x4008c711  LCOUNT  : 0xfffffffc  
[19:45:23]
[19:45:23]
[19:45:23]Backtrace: 0x400e5530:0x3ffb25f0 0x400d3899:0x3ffb2610 0x40179055:0x3ffb2660 0x400dfc4a:0x3ffb2680 0x400dfcf1:0x3ffb26a0 0x400dfdd7:0x3ffb26e0 0x400e0016:0x3ffb2750 0x40179835:0x3ffb27c0 0x400e4a51:0x3ffb27e0 0x400d69aa:0x3ffb2800 0x400ea089:0x3ffb2820
[19:45:23]
[19:45:23]
[19:45:23]
[19:45:23]
[19:45:23]ELF file SHA256: 69ab4b83473c45e6
[19:45:23]
[19:45:23]E (7555) esp_core_dump_flash: Core dump flash config is corrupted! CRC=0x7bd5c66f instead of 0x0
[19:45:23]Rebooting...

WEB does not start. Module rebooting

At the first inclusion, there was a web form with parameters. I entered the name of the wifi network with a password and changed the mode to ESP32CAM. After reloading the web form does not open and is not connected to the point. It feels like something is incorrectly stored in the EEROM

Connection to AP.
[ 7218][V][WiFiGeneric.cpp:407] _arduino_event_cb(): AP Station Connected: MAC: 80:e6:50:17:69:58, AID: 1
[ 7219][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 12 - AP_STACONNECTED
[ 7247][V][WiFiGeneric.cpp:421] _arduino_event_cb(): AP Station IP Assigned:192.168.4.2
[ 7248][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 14 - AP_STAIPASSIGNED
[ 7395][V][WebServer.cpp:296] handleClient(): New client: client.localIP()=192.168.4.1
[ 7398][V][Parsing.cpp:122] _parseRequest(): method: GET url: /connecttest.txt search:
[ 7400][V][Parsing.cpp:226] _parseRequest(): headerName: Cache-Control
[ 7406][V][Parsing.cpp:227] _parseRequest(): headerValue: no-cache
[ 7412][V][Parsing.cpp:226] _parseRequest(): headerName: Connection
[ 7418][V][Parsing.cpp:227] _parseRequest(): headerValue: Close
[ 7424][V][Parsing.cpp:226] _parseRequest(): headerName: Pragma
[ 7429][V][Parsing.cpp:227] _parseRequest(): headerValue: no-cache
[ 7436][V][Parsing.cpp:226] _parseRequest(): headerName: User-Agent
[ 7441][V][Parsing.cpp:227] _parseRequest(): headerValue: Microsoft NCSI
[ 7448][V][Parsing.cpp:226] _parseRequest(): headerName: Host
[ 7454][V][Parsing.cpp:227] _parseRequest(): headerValue: www.msftconnecttest.com
[ 7461][V][Parsing.cpp:254] _parseArguments(): args:
[ 7466][V][Parsing.cpp:237] _parseRequest(): Request: /connecttest.txt
[ 7472][V][Parsing.cpp:238] _parseRequest(): Arguments:
[ 7477][E][WebServer.cpp:649] _handleRequest(): request handler not found
Request for www.msftconnecttest.com redirected to 192.168.4.1:80
[ 7495][W][WebServer.cpp:436] send(): content length is zero
[ 7761][V][WebServer.cpp:296] handleClient(): New client: client.localIP()=192.168.4.1
[ 7764][V][Parsing.cpp:122] _parseRequest(): method: GET url: /connecttest.txt search:
[ 7766][V][Parsing.cpp:226] _parseRequest(): headerName: Cache-Control
[ 7772][V][Parsing.cpp:227] _parseRequest(): headerValue: no-cache
[ 7778][V][Parsing.cpp:226] _parseRequest(): headerName: Connection
[ 7784][V][Parsing.cpp:227] _parseRequest(): headerValue: Close
[ 7790][V][Parsing.cpp:226] _parseRequest(): headerName: Pragma
[ 7795][V][Parsing.cpp:227] _parseRequest(): headerValue: no-cache
[ 7802][V][Parsing.cpp:226] _parseRequest(): headerName: User-Agent
[ 7808][V][Parsing.cpp:227] _parseRequest(): headerValue: Microsoft NCSI
[ 7814][V][Parsing.cpp:226] _parseRequest(): headerName: Host
[ 7820][V][Parsing.cpp:227] _parseRequest(): headerValue: www.msftconnecttest.com
[ 7827][V][Parsing.cpp:254] _parseArguments(): args:
[ 7832][V][Parsing.cpp:237] _parseRequest(): Request: /connecttest.txt
[ 7838][V][Parsing.cpp:238] _parseRequest(): Arguments:
[ 7844][E][WebServer.cpp:649] _handleRequest(): request handler not found
Request for www.msftconnecttest.com redirected to 192.168.4.1:80
[ 7861][W][WebServer.cpp:436] send(): content length is zero
[ 37875][V][WebServer.cpp:296] handleClient(): New client: client.localIP()=192.168.4.1
[ 37876][V][Parsing.cpp:122] _parseRequest(): method: GET url: /connecttest.txt search:
[ 37880][V][Parsing.cpp:226] _parseRequest(): headerName: Connection
[ 37886][V][Parsing.cpp:227] _parseRequest(): headerValue: Close
[ 37891][V][Parsing.cpp:226] _parseRequest(): headerName: User-Agent
[ 37897][V][Parsing.cpp:227] _parseRequest(): headerValue: Microsoft NCSI
[ 37904][V][Parsing.cpp:226] _parseRequest(): headerName: Host
[ 37909][V][Parsing.cpp:227] _parseRequest(): headerValue: www.msftconnecttest.com
[ 37917][V][Parsing.cpp:254] _parseArguments(): args:
[ 37922][V][Parsing.cpp:237] _parseRequest(): Request: /connecttest.txt
[ 37928][V][Parsing.cpp:238] _parseRequest(): Arguments:
[ 37933][E][WebServer.cpp:649] _handleRequest(): request handler not found
Request for www.msftconnecttest.com redirected to 192.168.4.1:80
[ 37951][W][WebServer.cpp:436] send(): content length is zero
[ 38218][V][WebServer.cpp:296] handleClient(): New client: client.localIP()=192.168.4.1
[ 38219][V][Parsing.cpp:122] _parseRequest(): method: GET url: /connecttest.txt search:
[ 38223][V][Parsing.cpp:226] _parseRequest(): headerName: Connection
[ 38229][V][Parsing.cpp:227] _parseRequest(): headerValue: Close
[ 38234][V][Parsing.cpp:226] _parseRequest(): headerName: User-Agent
[ 38240][V][Parsing.cpp:227] _parseRequest(): headerValue: Microsoft NCSI
[ 38247][V][Parsing.cpp:226] _parseRequest(): headerName: Host
[ 38252][V][Parsing.cpp:227] _parseRequest(): headerValue: www.msftconnecttest.com
[ 38260][V][Parsing.cpp:254] _parseArguments(): args:
[ 38265][V][Parsing.cpp:237] _parseRequest(): Request: /connecttest.txt
[ 38271][V][Parsing.cpp:238] _parseRequest(): Arguments:
[ 38276][E][WebServer.cpp:649] _handleRequest(): request handler not found
Request for www.msftconnecttest.com redirected to 192.168.4.1:80
[ 38294][W][WebServer.cpp:436] send(): content length is zero
[ 49703][V][WebServer.cpp:296] handleClient(): New client: client.localIP()=192.168.4.1
[ 49704][V][Parsing.cpp:122] _parseRequest(): method: GET url: / search:
[ 49706][V][Parsing.cpp:226] _parseRequest(): headerName: Host
[ 49712][V][Parsing.cpp:227] _parseRequest(): headerValue: 192.168.4.1
[ 49718][V][Parsing.cpp:226] _parseRequest(): headerName: Connection
[ 49724][V][Parsing.cpp:227] _parseRequest(): headerValue: keep-alive
[ 49730][V][Parsing.cpp:226] _parseRequest(): headerName: Cache-Control
[ 49737][V][Parsing.cpp:227] _parseRequest(): headerValue: max-age=0
[ 49743][V][Parsing.cpp:226] _parseRequest(): headerName: Upgrade-Insecure-Requests
[ 49750][V][Parsing.cpp:227] _parseRequest(): headerValue: 1
[ 49756][V][Parsing.cpp:226] _parseRequest(): headerName: User-Agent
[ 49762][V][Parsing.cpp:227] _parseRequest(): headerValue: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36
[ 49777][V][Parsing.cpp:226] _parseRequest(): headerName: Accept
[ 49782][V][Parsing.cpp:227] _parseRequest(): headerValue: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.7
[ 49799][V][Parsing.cpp:226] _parseRequest(): headerName: Accept-Encoding
[ 49806][V][Parsing.cpp:227] _parseRequest(): headerValue: gzip, deflate
[ 49812][V][Parsing.cpp:226] _parseRequest(): headerName: Accept-Language
[ 49819][V][Parsing.cpp:227] _parseRequest(): headerValue: ru-RU,ru;q=0.9,en-GB;q=0.8,en;q=0.7,en-US;q=0.6
[ 49828][V][Parsing.cpp:254] _parseArguments(): args:
[ 49833][V][Parsing.cpp:237] _parseRequest(): Request: /
[ 49838][V][Parsing.cpp:238] _parseRequest(): Arguments:
[ 49843][V][main.cpp:84] handle_root(): Handle root
Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.

Core 1 register dump:
PC : 0x40094bfb PS : 0x00060d30 A0 : 0x80094e50 A1 : 0x3ffb1ac0
A2 : 0xffffffff A3 : 0x00000000 A4 : 0x0000001c A5 : 0x3ffb1b40
A6 : 0x00000000 A7 : 0x00000001 A8 : 0xffffffff A9 : 0x00000009
A10 : 0x00000000 A11 : 0x6c7092b8 A12 : 0x6c7092b8 A13 : 0x3ffc7098
A14 : 0x00060d20 A15 : 0x00000001 SAR : 0x0000001b EXCCAUSE: 0x0000001c
EXCVADDR: 0x00000013 LBEG : 0x4008b464 LEND : 0x4008b46f LCOUNT : 0x00000000

Backtrace: 0x40094bf8:0x3ffb1ac0 0x40094e4d:0x3ffb1ae0 0x400950cf:0x3ffb1b00 0x40114b36:0x3ffb1b20 0x400e752a:0x3ffb1b60 0x400d756b:0x3ffb1ba0 0x40179ebd:0x3ffb20d0 0x400e056e:0x3ffb20f0 0x400e0615:0x3ffb2110 0x400e06fb:0x3ffb2150 0x400e093a:0x3ffb21c0 0x4017a681:0x3ffb2230 0x400e53d1:0x3ffb2250 0x400d6dfe:0x3ffb2270 0x400ea9dd:0x3ffb2290

ELF file SHA256: b43a790a6f7e33aa

Rebooting...
ets Jun 8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:1184
load:0x40078000,len:13192
load:0x40080400,len:3028
entry 0x400805e4
[ 4][V][WiFiServer.h:42] WiFiServer(): WiFiServer::WiFiServer(port=80, ...)
[ 4][V][WebServer.cpp:87] WebServer(): WebServer::Webserver(port=80)
[ 31][D][esp32-hal-cpu.c:244] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz
[ 479][I][esp32-hal-psram.c:96] psramInit(): PSRAM enabled
[ 510][I][main.cpp:396] setup(): CPU Freq: 240 Mhz
[ 510][I][main.cpp:397] setup(): Free heap: 248388 bytes
[ 510][I][main.cpp:398] setup(): SDK version: v4.4.4
[ 514][I][main.cpp:399] setup(): Starting ESP32CAM-RTSP...
[ 519][V][main.cpp:404] setup(): PSRAM found and initialized
Config version: 1.5
Config size: 455
Loading configurations
[iwcAll]
|-- [iwcSys]
| |-- 'iwcThingName' with value: 'ESP32CAM-RTSP'
| |-- 'iwcApPassword' with value:
| |-- [iwcWifi0]
| | |-- 'iwcWifiSsid' with value: 'Keenetic_Main'
| | -- 'iwcWifiPassword' with value:
| -- 'iwcApTimeout' with value: '30'
|-- [iwcCustom]
| |-- [board]
| | -- 'bt' with value: 'ESP32CAM'
| |-- [camera]
| | |-- 'fd' with value: '100'
| | |-- 'fs' with value: 'SVGA (800x600)'
| | |-- 'q' with value: '12'
| | |-- 'eps' with value: '0'
| | |-- 'fb' with value: '1'
| | |-- 'b' with value: '0'
| | |-- 'c' with value: '0'
| | |-- 's' with value: '0'
| | |-- 'e' with value: 'Normal'
| | |-- 'wb' with value: '1'
| | |-- 'awbg' with value: '1'
| | |-- 'wbm' with value: 'Auto'
| | |-- 'ec' with value: '1'
| | |-- 'aec2' with value: '1'
| | |-- 'ael' with value: '0'
| | |-- 'aecv' with value: '300'
| | |-- 'gc' with value: '1'
| | |-- 'agcg' with value: '0'
| | |-- 'gcl' with value: '2X'
| | |-- 'bpc' with value: '0'
| | |-- 'wpc' with value: '1'
| | |-- 'rg' with value: '1'
| | |-- 'lenc' with value: '1'
| | |-- 'hm' with value: '0'
| | |-- 'vm' with value: '0'
| | |-- 'dcw' with value: '1'
| | -- 'cb' with value: '0'
| -- [io]
| -- 'li' with value: '0'
-- [hidden]
[ 658][V][main.cpp:282] initialize_camera(): initialize_camera
[ 658][I][main.cpp:283] initialize_camera(): Camera config: ESP32CAM
[ 664][I][main.cpp:289] initialize_camera(): Frame size: SVGA (800x600)
[ 670][I][main.cpp:291] initialize_camera(): JPEG quality: 12
[ 676][I][main.cpp:292] initialize_camera(): Frame duration: 100 ms
[ 682][I][main.cpp:296] initialize_camera(): Enable PSRAM: 0
[ 688][I][main.cpp:297] initialize_camera(): Frame buffers: 1
[ 693][I][main.cpp:308] initialize_camera(): PSRAM disabled
E (703) camera: Camera probe failed with error 0x105(ESP_ERR_NOT_FOUND)
[ 733][E][main.cpp:452] setup(): Failed to initialize camera: 0x105. Type: ESP32CAM, frame size: SVGA (800x600), frame rate: 100 ms, jpeg quality: 12
AP password was not set in configuration
State changing from: 0 to 1
[ 771][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 0 - WIFI_READY
Setting up AP: ESP32CAM-RTSP
With default password:
AP IP address: [ 865][V][WiFiGeneric.cpp:392] _arduino_event_cb(): AP Started
192.[ 870][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 10 - AP_START
[ 872][V][WiFiGeneric.cpp:395] _arduino_event_cb(): AP Stopped
168.4.1
[ 880][V][WiFiGeneric.cpp:392] _arduino_event_cb(): AP Started
[ 879][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 11 - AP_STOP
[ 893][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 10 - AP_START
AP password was not set.
Will stay in AP mode.
State changed from: 0 to 1
Connection to AP.
[ 4460][V][WiFiGeneric.cpp:407] _arduino_event_cb(): AP Station Connected: MAC: 80:e6:50:17:69:58, AID: 1
[ 4461][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 12 - AP_STACONNECTED
[ 4487][V][WiFiGeneric.cpp:421] _arduino_event_cb(): AP Station IP Assigned:192.168.4.2
[ 4487][D][WiFiGeneric.cpp:931] _eventCallback(): Arduino Event: 14 - AP_STAIPASSIGNED
[ 4601][V][WebServer.cpp:296] handleClient(): New client: client.localIP()=192.168.4.1
[ 4604][V][Parsing.cpp:122] _parseRequest(): method: GET url: /connecttest.txt search:
[ 4606][V][Parsing.cpp:226] _parseRequest(): headerName: Cache-Control
[ 4612][V][Parsing.cpp:227] _parseRequest(): headerValue: no-cache
[ 4618][V][Parsing.cpp:226] _parseRequest(): headerName: Connection
[ 4624][V][Parsing.cpp:227] _parseRequest(): headerValue: Close
[ 4630][V][Parsing.cpp:226] _parseRequest(): headerName: Pragma
[ 4636][V][Parsing.cpp:227] _parseRequest(): headerValue: no-cache
[ 4642][V][Parsing.cpp:226] _parseRequest(): headerName: User-Agent
[ 4648][V][Parsing.cpp:227] _parseRequest(): headerValue: Microsoft NCSI
[ 4654][V][Parsing.cpp:226] _parseRequest(): headerName: Host
[ 4660][V][Parsing.cpp:227] _parseRequest(): headerValue: www.msftconnecttest.com
[ 4667][V][Parsing.cpp:254] _parseArguments(): args:
[ 4672][V][Parsing.cpp:237] _parseRequest(): Request: /connecttest.txt
[ 4678][V][Parsing.cpp:238] _parseRequest(): Arguments:
[ 4684][E][WebServer.cpp:649] _handleRequest(): request handler not found
Request for www.msftconnecttest.com redirected to 192.168.4.1:80
[ 4701][W][WebServer.cpp:436] send(): content length is zero
[ 4966][V][WebServer.cpp:296] handleClient(): New client: client.localIP()=192.168.4.1
[ 4967][V][Parsing.cpp:122] _parseRequest(): method: GET url: /connecttest.txt search:
[ 4971][V][Parsing.cpp:226] _parseRequest(): headerName: Cache-Control
[ 4977][V][Parsing.cpp:227] _parseRequest(): headerValue: no-cache
[ 4983][V][Parsing.cpp:226] _parseRequest(): headerName: Connection
[ 4989][V][Parsing.cpp:227] _parseRequest(): headerValue: Close
[ 4995][V][Parsing.cpp:226] _parseRequest(): headerName: Pragma
[ 5000][V][Parsing.cpp:227] _parseRequest(): headerValue: no-cache
[ 5007][V][Parsing.cpp:226] _parseRequest(): headerName: User-Agent
[ 5013][V][Parsing.cpp:227] _parseRequest(): headerValue: Microsoft NCSI
[ 5019][V][Parsing.cpp:226] _parseRequest(): headerName: Host
[ 5025][V][Parsing.cpp:227] _parseRequest(): headerValue: www.msftconnecttest.com
[ 5032][V][Parsing.cpp:254] _parseArguments(): args:
[ 5037][V][Parsing.cpp:237] _parseRequest(): Request: /connecttest.txt
[ 5043][V][Parsing.cpp:238] _parseRequest(): Arguments:
[ 5049][E][WebServer.cpp:649] _handleRequest(): request handler not found
Request for www.msftconnecttest.com redirected to 192.168.4.1:80
[ 5066][W][WebServer.cpp:436] send(): content length is zero

Can't get it to compile in PlatformIO - call of overloaded 'String(uint64_t, int)' is ambiguous

Hi there, just did git clone the project, opened folder in VStudio + PlatformIO, saw that dependecies downloaded and then hit 'build', but it can't compile, messages below. Thank you.

Processing esp32cam (platform: espressif32; board: esp32cam; framework: arduino)

Verbose mode can be enabled via -v, --verbose option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32cam.html
PLATFORM: Espressif 32 (4.2.0) > AI Thinker ESP32-CAM
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:

  • framework-arduinoespressif32 @ 3.20002.220503 (2.0.2)
  • tool-esptoolpy @ 1.30300.0 (3.3.0)
  • toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch3
    LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
    LDF Modes: Finder ~ chain, Compatibility ~ soft
    Found 43 compatible libraries
    Scanning dependencies...
    Dependency Graph
    |-- IotWebConf @ 3.2.1
    |-- Micro-RTSP @ 0.1.6
    |-- micro-moustache @ 1.0.1
    |-- ArduinoOTA @ 2.0.0
    |-- ESPmDNS @ 2.0.0
    |-- RTSPServer @ 1.0.0
    Building in release mode
    Compiling .pio/build/esp32cam/src/main.cpp.o
    Archiving .pio/build/esp32cam/lib612/libDNSServer.a
    Indexing .pio/build/esp32cam/lib612/libDNSServer.a
    src/main.cpp:68:72: error: call of overloaded 'String(uint64_t, int)' is ambiguous
    auto thingName = String(WIFI_SSID) + "-" + String(ESP.getEfuseMac(), 16);
    ^
    In file included from /home/user/.platformio/packages/framework-arduinoespressif32/cores/esp32/Arduino.h:159,
    from src/main.cpp:1:
    /home/user/.platformio/packages/framework-arduinoespressif32/cores/esp32/WString.h:75:18: note: candidate: 'String::String(double, unsigned char)'
    explicit String(double, unsigned char decimalPlaces = 2);
    ^~~~~~
    /home/user/.platformio/packages/framework-arduinoespressif32/cores/esp32/WString.h:74:18: note: candidate: 'String::String(float, unsigned char)'
    explicit String(float, unsigned char decimalPlaces = 2);
    ^~~~~~
    /home/user/.platformio/packages/framework-arduinoespressif32/cores/esp32/WString.h:73:18: note: candidate: 'String::String(long unsigned int, unsigned char)'
    explicit String(unsigned long, unsigned char base = 10);
    ^~~~~~
    /home/user/.platformio/packages/framework-arduinoespressif32/cores/esp32/WString.h:72:18: note: candidate: 'String::String(long int, unsigned char)'
    explicit String(long, unsigned char base = 10);
    ^~~~~~
    /home/user/.platformio/packages/framework-arduinoespressif32/cores/esp32/WString.h:71:18: note: candidate: 'String::String(unsigned int, unsigned char)'
    explicit String(unsigned int, unsigned char base = 10);
    ^~~~~~
    /home/user/.platformio/packages/framework-arduinoespressif32/cores/esp32/WString.h:70:18: note: candidate: 'String::String(int, unsigned char)'
    explicit String(int, unsigned char base = 10);
    ^~~~~~
    /home/user/.platformio/packages/framework-arduinoespressif32/cores/esp32/WString.h:69:18: note: candidate: 'String::String(unsigned char, unsigned char)'
    explicit String(unsigned char, unsigned char base = 10);
    ^~~~~~
    Archiving .pio/build/esp32cam/lib652/libFS.a
    Indexing .pio/build/esp32cam/lib652/libFS.a
    Archiving .pio/build/esp32cam/lib34a/libWebServer.a
    Indexing .pio/build/esp32cam/lib34a/libWebServer.a
    Compiling .pio/build/esp32cam/libcb9/EEPROM/EEPROM.cpp.o
    Compiling .pio/build/esp32cam/lib4c2/ESPmDNS/ESPmDNS.cpp.o
    Compiling .pio/build/esp32cam/lib366/IotWebConf/IotWebConf.cpp.o
    Compiling .pio/build/esp32cam/lib366/IotWebConf/IotWebConfMultipleWifi.cpp.o
    *** [.pio/build/esp32cam/src/main.cpp.o] Error 1

AP Restart on Wifi Client Connect

Fresh setup, first time attempting to use this firmware. Device is ESP32-CAM-MB - CH340G - OV2640

Previously running Tasmota firmware OK. Sequence was git clone [email protected]:rzeldent/esp32cam-rtsp.git pio run pio run -t erase then pio run -t upload

I've tried from scratch a few times, always same result; flashes OK, boots OK. AP appears, but as soon as I connect, the AP closes for a few seconds, and reappears. Logs from one run follow;

15:13:45.847 > [     3][V][WebServer.cpp:87] WebServer(): WebServer::Webserver(port=80)
15:13:45.850 > [     9][D][esp32-hal-cpu.c:244] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz
15:13:46.298 > [   461][I][esp32-hal-psram.c:96] psramInit(): PSRAM enabled
15:13:46.313 > [   475][I][main.cpp:231] setup(): CPU Freq: 240 Mhz
15:13:46.315 > [   476][I][main.cpp:232] setup(): Free heap: 246464 bytes
15:13:46.320 > [   476][I][main.cpp:233] setup(): Starting ESP32CAM-RTSP...
15:13:46.326 > Config version: 1.1
15:13:46.328 > Config size: 326
15:13:46.328 > Wrong config version. Applying defaults.
15:13:46.334 > [iwcAll]
15:13:46.334 > |-- [iwcSys]
15:13:46.334 > |   |-- 'iwcThingName' with value: 'ESP32CAM-RTSP'
15:13:46.340 > |   |-- 'iwcApPassword' with value: <hidden>
15:13:46.343 > |   |-- [iwcWifi0]
15:13:46.345 > |   |   |-- 'iwcWifiSsid' with value: ''
15:13:46.348 > |   |   \-- 'iwcWifiPassword' with value: <hidden>
15:13:46.354 > |   \-- 'iwcApTimeout' with value: '30'
15:13:46.356 > |-- [iwcCustom]
15:13:46.359 > |   \-- [settings]
15:13:46.359 > |       |-- 'config' with value: 'ESP32CAM'
15:13:46.365 > |       |-- 'fd' with value: '20'
15:13:46.368 > |       |-- 'fs' with value: 'SVGA (800x600)'
15:13:46.370 > |       |-- 'fb' with value: '2'
15:13:46.373 > |       \-- 'q' with value: '12'
15:13:46.376 > \-- [hidden]
15:13:46.379 > AP password was not set in configuration
15:13:46.381 > State changing from: 0 to 1
15:13:46.389 > [   553][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 0 - WIFI_READY
15:13:46.483 > Setting up AP: ESP32CAM-RTSP
15:13:46.483 > With default password: <hidden>
15:13:46.486 > [   647][E][WiFiAP.cpp:153] softAP(): passphrase too short!
15:13:46.491 > [   647][V][WiFiGeneric.cpp:390] _arduino_event_cb(): AP Started
15:13:46.497 > AP IP address: [   652][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 10 - AP_START
15:13:46.505 > 192.168.4.1
15:13:46.508 > AP password was not set.
15:13:46.511 > WiFi SSID was not set.
15:13:46.511 > Will stay in AP mode.
15:13:46.514 > State changed from: 0 to 1
15:13:51.921 > Connection to AP.
15:13:51.927 > [  6089][V][WiFiGeneric.cpp:405] _arduino_event_cb(): AP Station Connected: MAC: 1e:d8:de:6b:a9:68, AID: 1
15:13:51.936 > [  6090][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 12 - AP_STACONNECTED
15:13:52.038 > [  6201][V][WiFiGeneric.cpp:419] _arduino_event_cb(): AP Station IP Assigned:192.168.4.2
15:13:52.044 > [  6201][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 14 - AP_STAIPASSIGNED
15:13:52.200 > [  6362][V][WebServer.cpp:296] handleClient(): New client: client.localIP()=192.168.4.1
15:13:52.205 > [  6369][V][Parsing.cpp:122] _parseRequest(): method: GET url: /generate_204 search:
15:13:52.214 > [  6369][V][Parsing.cpp:226] _parseRequest(): headerName: Connection
15:13:52.219 > [  6373][V][Parsing.cpp:227] _parseRequest(): headerValue: close
15:13:52.225 > [  6379][V][Parsing.cpp:226] _parseRequest(): headerName: User-Agent
15:13:52.231 > [  6385][V][Parsing.cpp:227] _parseRequest(): headerValue: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.32 Safari/537.36
15:13:52.247 > [  6399][V][Parsing.cpp:226] _parseRequest(): headerName: Host
15:13:52.253 > [  6405][V][Parsing.cpp:227] _parseRequest(): headerValue: connectivitycheck.gstatic.com
15:13:52.258 > [  6413][V][Parsing.cpp:226] _parseRequest(): headerName: Accept-Encoding
15:13:52.267 > [  6419][V][Parsing.cpp:227] _parseRequest(): headerValue: gzip
15:13:52.272 > [  6425][V][Parsing.cpp:254] _parseArguments(): args:
15:13:52.278 > [  6430][V][Parsing.cpp:237] _parseRequest(): Request: /generate_204
15:13:52.283 > [  6436][V][Parsing.cpp:238] _parseRequest():  Arguments:
15:13:52.289 > [  6441][E][WebServer.cpp:649] _handleRequest(): request handler not found
15:13:52.294 > Request for connectivitycheck.gstatic.com redirected to 192.168.4.1:80
15:13:52.300 > [  6459][W][WebServer.cpp:436] send(): content length is zero
15:13:58.332 > [ 12495][V][WebServer.cpp:296] handleClient(): New client: client.localIP()=192.168.4.1
15:13:58.338 > [ 12496][V][Parsing.cpp:122] _parseRequest(): method: GET url: / search:
15:13:58.347 > [ 12499][V][Parsing.cpp:226] _parseRequest(): headerName: Host
15:13:58.352 > [ 12504][V][Parsing.cpp:227] _parseRequest(): headerValue: 192.168.4.1
15:13:58.357 > [ 12511][V][Parsing.cpp:226] _parseRequest(): headerName: Connection
15:13:58.363 > [ 12517][V][Parsing.cpp:227] _parseRequest(): headerValue: keep-alive
15:13:58.368 > [ 12523][V][Parsing.cpp:226] _parseRequest(): headerName: Upgrade-Insecure-Requests
15:13:58.377 > [ 12530][V][Parsing.cpp:227] _parseRequest(): headerValue: 1
15:13:58.382 > [ 12536][V][Parsing.cpp:226] _parseRequest(): headerName: User-Agent
15:13:58.388 > [ 12542][V][Parsing.cpp:227] _parseRequest(): headerValue: Mozilla/5.0 (Linux; Android 11; HD1905 Build/RQ3A.211001.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/105.0.5195.136 Mobile Safari/537.36
15:13:58.407 > [ 12561][V][Parsing.cpp:226] _parseRequest(): headerName: Accept
15:13:58.413 > [ 12567][V][Parsing.cpp:227] _parseRequest(): headerValue: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
15:13:58.429 > [ 12584][V][Parsing.cpp:226] _parseRequest(): headerName: X-Requested-With
15:13:58.437 > [ 12590][V][Parsing.cpp:227] _parseRequest(): headerValue: com.android.captiveportallogin15:13:58.443 > [ 12598][V][Parsing.cpp:226] _parseRequest(): headerName: Accept-Encoding
15:13:58.452 > [ 12605][V][Parsing.cpp:227] _parseRequest(): headerValue: gzip, deflate
15:13:58.457 > [ 12611][V][Parsing.cpp:226] _parseRequest(): headerName: Accept-Language
15:13:58.463 > [ 12618][V][Parsing.cpp:227] _parseRequest(): headerValue: en-US,en;q=0.9
15:13:58.471 > [ 12624][V][Parsing.cpp:254] _parseArguments(): args:
15:13:58.474 > [ 12629][V][Parsing.cpp:237] _parseRequest(): Request: /
15:13:58.479 > [ 12634][V][Parsing.cpp:238] _parseRequest():  Arguments:
15:13:58.485 > [ 12639][V][main.cpp:58] handle_root(): Handle root
15:13:58.557 > [ 12720][V][WebServer.cpp:296] handleClient(): New client: client.localIP()=192.168.4.1
15:13:58.563 > [ 12721][V][Parsing.cpp:122] _parseRequest(): method: GET url: /bootstrap.min.css search:
15:13:58.571 > [ 12726][V][Parsing.cpp:226] _parseRequest(): headerName: Host
15:13:58.577 > [ 12731][V][Parsing.cpp:227] _parseRequest(): headerValue: 192.168.4.1
15:13:58.582 > [ 12737][V][Parsing.cpp:226] _parseRequest(): headerName: Connection
15:13:58.590 > [ 12743][V][Parsing.cpp:227] _parseRequest(): headerValue: keep-alive
15:13:58.596 > [ 12750][V][Parsing.cpp:226] _parseRequest(): headerName: User-Agent
15:13:58.602 > [ 12755][V][Parsing.cpp:227] _parseRequest(): headerValue: Mozilla/5.0 (Linux; Android 11; HD1905 Build/RQ3A.211001.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/105.0.5195.136 Mobile Safari/537.36
15:13:58.621 > [ 12775][V][Parsing.cpp:226] _parseRequest(): headerName: Accept
15:13:58.627 > [ 12780][V][Parsing.cpp:227] _parseRequest(): headerValue: text/css,*/*;q=0.1
15:13:58.632 > [ 12787][V][Parsing.cpp:226] _parseRequest(): headerName: X-Requested-With
15:13:58.640 > [ 12794][V][Parsing.cpp:227] _parseRequest(): headerValue: com.android.captiveportallogin15:13:58.649 > [ 12802][V][Parsing.cpp:226] _parseRequest(): headerName: Referer
15:13:58.654 > [ 12807][V][Parsing.cpp:227] _parseRequest(): headerValue: http://192.168.4.1/
15:13:58.660 > [ 12815][V][Parsing.cpp:226] _parseRequest(): headerName: Accept-Encoding
15:13:58.668 > [ 12821][V][Parsing.cpp:227] _parseRequest(): headerValue: gzip, deflate
15:13:58.674 > [ 12828][V][Parsing.cpp:226] _parseRequest(): headerName: Accept-Language
15:13:58.679 > [ 12834][V][Parsing.cpp:227] _parseRequest(): headerValue: en-US,en;q=0.9
15:13:58.688 > [ 12840][V][Parsing.cpp:254] _parseArguments(): args:
15:13:58.690 > [ 12845][V][Parsing.cpp:237] _parseRequest(): Request: /bootstrap.min.css
15:13:58.699 > [ 12852][V][Parsing.cpp:238] _parseRequest():  Arguments:
15:13:58.704 > [ 12858][W][WebServer.cpp:436] send(): content length is zero
15:13:58.759 > [ 12923][V][WebServer.cpp:296] handleClient(): New client: client.localIP()=192.168.4.1
15:13:58.765 > [ 12924][V][Parsing.cpp:122] _parseRequest(): method: GET url: /snapshot search:
15:13:58.773 > [ 12927][V][Parsing.cpp:226] _parseRequest(): headerName: Host
15:13:58.779 > [ 12932][V][Parsing.cpp:227] _parseRequest(): headerValue: 192.168.4.1
15:13:58.785 > [ 12939][V][Parsing.cpp:226] _parseRequest(): headerName: Connection
15:13:58.790 > [ 12945][V][Parsing.cpp:227] _parseRequest(): headerValue: keep-alive
15:13:58.799 > [ 12951][V][Parsing.cpp:226] _parseRequest(): headerName: User-Agent
15:13:58.804 > [ 12957][V][Parsing.cpp:227] _parseRequest(): headerValue: Mozilla/5.0 (Linux; Android 11; HD1905 Build/RQ3A.211001.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/105.0.5195.136 Mobile Safari/537.36
15:13:58.823 > [ 12976][V][Parsing.cpp:226] _parseRequest(): headerName: Accept
15:13:58.829 > [ 12982][V][Parsing.cpp:227] _parseRequest(): headerValue: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8
15:13:58.840 > [ 12993][V][Parsing.cpp:226] _parseRequest(): headerName: X-Requested-With
15:13:58.846 > [ 12999][V][Parsing.cpp:227] _parseRequest(): headerValue: com.android.captiveportallogin15:13:58.854 > [ 13007][V][Parsing.cpp:226] _parseRequest(): headerName: Referer
15:13:58.859 > [ 13013][V][Parsing.cpp:227] _parseRequest(): headerValue: http://192.168.4.1/
15:13:58.865 > [ 13020][V][Parsing.cpp:226] _parseRequest(): headerName: Accept-Encoding
15:13:58.873 > [ 13026][V][Parsing.cpp:227] _parseRequest(): headerValue: gzip, deflate
15:13:58.879 > [ 13033][V][Parsing.cpp:226] _parseRequest(): headerName: Accept-Language
15:13:58.884 > [ 13039][V][Parsing.cpp:227] _parseRequest(): headerValue: en-US,en;q=0.9
15:13:58.893 > [ 13046][V][Parsing.cpp:254] _parseArguments(): args:
15:13:58.895 > [ 13051][V][Parsing.cpp:237] _parseRequest(): Request: /snapshot
15:13:58.904 > [ 13056][V][Parsing.cpp:238] _parseRequest():  Arguments:
15:13:58.907 > [ 13062][V][main.cpp:145] handle_snapshot(): handle_jpg
15:13:58.912 > Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.
15:13:58.921 >
15:13:58.921 > Core  1 register dump:
15:13:58.923 > PC      : 0x400e20a7  PS      : 0x00060d30  A0      : 0x800d3468  A1      : 0x3ffb25f0
15:13:58.929 > A2      : 0x00000000  A3      : 0x3ffc543f  A4      : 0x0000003f  A5      : 0x0000003a
15:13:58.937 > A6      : 0x3f400155  A7      : 0x00000001  A8      : 0x800e20a4  A9      : 0x3ffb25d0
15:13:58.946 > A10     : 0x3ffc49dc  A11     : 0x00000000  A12     : 0x00000000  A13     : 0x00000000
15:13:58.954 > A14     : 0x3ffb8a28  A15     : 0x00000000  SAR     : 0x00000004  EXCCAUSE: 0x0000001c
15:13:58.962 > EXCVADDR: 0x00000004  LBEG    : 0x4008c5d5  LEND    : 0x4008c5e5  LCOUNT  : 0xfffffffb
15:13:58.970 >
15:13:58.970 >
15:13:58.970 > Backtrace:0x400e20a4:0x3ffb25f00x400d3465:0x3ffb2610 0x40170ea5:0x3ffb2660 0x400dc546:0x3ffb2680 0x400dc5ed:0x3ffb26a0 0x400dc6d3:0x3ffb26e0 0x400dc912:0x3ffb2750 0x40171199:0x3ffb27c0 0x400e13c1:0x3ffb27e0 0x400d43ca:0x3ffb2800 0x400e66e5:0x3ffb2820
15:13:58.993 >
15:13:58.993 >
15:13:58.993 >
15:13:58.993 >
15:13:58.993 > ELF file SHA256: 0000000000000000
15:13:58.996 >
15:13:58.996 > Rebooting...
15:13:58.996 > ets Jun  8 2016 00:22:57
15:13:58.999 >
15:13:58.999 > rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
15:13:59.004 > configsip: 0, SPIWP:0xee
15:13:59.007 > clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
15:13:59.013 > mode:DIO, clock div:2
15:13:59.015 > load:0x3fff0030,len:1184
15:13:59.018 > load:0x40078000,len:13132
15:13:59.018 > load:0x40080400,len:3036
15:13:59.021 > entry 0x400805e4
15:13:59.425 > [     2][V][WiFiServer.h:42] WiFiServer(): WiFiServer::WiFiServer(port=8␀␘       rrrJj
15:13:59.431 > [     3][V][WebServer.cpp:87] WebServer(): WebServer::Webserver(port=80)
15:13:59.437 > [     9][D][esp32-hal-cpu.c:244] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz
15:13:59.885 > [   461][I][esp32-hal-psram.c:96] psramInit(): PSRAM enabled
15:13:59.899 > [   475][I][main.cpp:231] setup(): CPU Freq: 240 Mhz
15:13:59.902 > [   476][I][main.cpp:232] setup(): Free heap: 246464 bytes
15:13:59.907 > [   476][I][main.cpp:233] setup(): Starting ESP32CAM-RTSP...
15:13:59.913 > Config version: 1.1
15:13:59.915 > Config size: 326
15:13:59.915 > Wrong config version. Applying defaults.
15:13:59.921 > [iwcAll]
15:13:59.921 > |-- [iwcSys]
15:13:59.921 > |   |-- 'iwcThingName' with value: 'ESP32CAM-RTSP'
15:13:59.927 > |   |-- 'iwcApPassword' with value: <hidden>
15:13:59.929 > |   |-- [iwcWifi0]
15:13:59.932 > |   |   |-- 'iwcWifiSsid' with value: ''
15:13:59.935 > |   |   \-- 'iwcWifiPassword' with value: <hidden>
15:13:59.940 > |   \-- 'iwcApTimeout' with value: '30'
15:13:59.943 > |-- [iwcCustom]
15:13:59.946 > |   \-- [settings]
15:13:59.946 > |       |-- 'config' with value: 'ESP32CAM'
15:13:59.951 > |       |-- 'fd' with value: '20'
15:13:59.954 > |       |-- 'fs' with value: 'SVGA (800x600)'
15:13:59.957 > |       |-- 'fb' with value: '2'
15:13:59.960 > |       \-- 'q' with value: '12'
15:13:59.963 > \-- [hidden]
15:13:59.965 > AP password was not set in configuration
15:13:59.968 > State changing from: 0 to 1
15:13:59.976 > [   553][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 0 - WIFI_READY
15:14:00.070 > Setting up AP: ESP32CAM-RTSP
15:14:00.070 > With default password: <hidden>
15:14:00.073 > [   647][E][WiFiAP.cpp:153] softAP(): passphrase too short!
15:14:00.078 > [   647][V][WiFiGeneric.cpp:390] _arduino_event_cb(): AP Started
15:14:00.084 > AP IP address: [   652][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 10 - AP_START
15:14:00.092 > 192.168.4.1
15:14:00.095 > AP password was not set.
15:14:00.098 > WiFi SSID was not set.
15:14:00.098 > Will stay in AP mode.
15:14:00.100 > State changed from: 0 to 1
15:14:22.881 > Connection to AP.
15:14:22.888 > [ 23465][V][WiFiGeneric.cpp:405] _arduino_event_cb(): AP Station Connected: MAC: 1e:d8:de:6b:a9:68, AID: 1
15:14:22.896 > [ 23466][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 12 - AP_STACONNECTED
15:14:23.024 > [ 23601][V][WiFiGeneric.cpp:419] _arduino_event_cb(): AP Station IP Assigned:192.168.4.2
15:14:23.029 > [ 23601][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 14 - AP_STAIPASSIGNED
15:14:23.211 > [ 23789][V][WebServer.cpp:296] handleClient(): New client: client.localIP()=192.168.4.1
15:14:23.217 > [ 23790][V][Parsing.cpp:122] _parseRequest(): method: GET url: /generate_204 search:
15:14:23.225 > [ 23793][V][Parsing.cpp:226] _parseRequest(): headerName: Connection
15:14:23.231 > [ 23799][V][Parsing.cpp:227] _parseRequest(): headerValue: close
15:14:23.237 > [ 23805][V][Parsing.cpp:226] _parseRequest(): headerName: User-Agent
15:14:23.242 > [ 23811][V][Parsing.cpp:227] _parseRequest(): headerValue: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.32 Safari/537.36
15:14:23.259 > [ 23825][V][Parsing.cpp:226] _parseRequest(): headerName: Host
15:14:23.264 > [ 23831][V][Parsing.cpp:227] _parseRequest(): headerValue: connectivitycheck.gstatic.com
15:14:23.270 > [ 23839][V][Parsing.cpp:226] _parseRequest(): headerName: Accept-Encoding
15:14:23.278 > [ 23845][V][Parsing.cpp:227] _parseRequest(): headerValue: gzip
15:14:23.284 > [ 23851][V][Parsing.cpp:254] _parseArguments(): args:
15:14:23.289 > [ 23856][V][Parsing.cpp:237] _parseRequest(): Request: /generate_204
15:14:23.295 > [ 23862][V][Parsing.cpp:238] _parseRequest():  Arguments:
15:14:23.301 > [ 23867][E][WebServer.cpp:649] _handleRequest(): request handler not found
15:14:23.306 > Request for connectivitycheck.gstatic.com redirected to 192.168.4.1:80
15:14:23.312 > [ 23885][W][WebServer.cpp:436] send(): content length is zero
15:14:23.592 > [ 24170][V][WebServer.cpp:296] handleClient(): New client: client.localIP()=192.168.4.1
15:14:23.598 > [ 24170][V][Parsing.cpp:122] _parseRequest(): method: GET url: / search:
15:14:23.606 > [ 24173][V][Parsing.cpp:226] _parseRequest(): headerName: Host
15:14:23.613 > [ 24179][V][Parsing.cpp:227] _parseRequest(): headerValue: 192.168.4.1
15:14:23.618 > [ 24185][V][Parsing.cpp:226] _parseRequest(): headerName: Connection
15:14:23.623 > [ 24191][V][Parsing.cpp:227] _parseRequest(): headerValue: keep-alive
15:14:23.630 > [ 24197][V][Parsing.cpp:226] _parseRequest(): headerName: Upgrade-Insecure-Requests
15:14:23.637 > [ 24204][V][Parsing.cpp:227] _parseRequest(): headerValue: 1
15:14:23.643 > [ 24210][V][Parsing.cpp:226] _parseRequest(): headerName: User-Agent
15:14:23.648 > [ 24216][V][Parsing.cpp:227] _parseRequest(): headerValue: Mozilla/5.0 (Linux; Android 11; HD1905 Build/RQ3A.211001.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/105.0.5195.136 Mobile Safari/537.36
15:14:23.668 > [ 24236][V][Parsing.cpp:226] _parseRequest(): headerName: Accept
15:14:23.673 > [ 24241][V][Parsing.cpp:227] _parseRequest(): headerValue: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
15:14:23.690 > [ 24258][V][Parsing.cpp:226] _parseRequest(): headerName: X-Requested-With
15:14:23.698 > [ 24264][V][Parsing.cpp:227] _parseRequest(): headerValue: com.android.captiveportallogin
15:14:23.704 > [ 24272][V][Parsing.cpp:226] _parseRequest(): headerName: Accept-Encoding
15:14:23.712 > [ 24279][V][Parsing.cpp:227] _parseRequest(): headerValue: gzip, deflate
15:14:23.718 > [ 24285][V][Parsing.cpp:226] _parseRequest(): headerName: Accept-Language
15:14:23.724 > [ 24292][V][Parsing.cpp:227] _parseRequest(): headerValue: en-US,en;q=0.9
15:14:23.732 > [ 24298][V][Parsing.cpp:254] _parseArguments(): args:
15:14:23.734 > [ 24303][V][Parsing.cpp:237] _parseRequest(): Request: /
15:14:23.740 > [ 24308][V][Parsing.cpp:238] _parseRequest():  Arguments:
15:14:23.746 > [ 24314][V][main.cpp:58] handle_root(): Handle root
15:14:23.859 > [ 24436][V][WebServer.cpp:296] handleClient(): New client: client.localIP()=192.168.4.1
15:14:23.865 > [ 24437][V][Parsing.cpp:122] _parseRequest(): method: GET url: /bootstrap.min.css search:
15:14:23.873 > [ 24442][V][Parsing.cpp:226] _parseRequest(): headerName: Host
15:14:23.879 > [ 24447][V][Parsing.cpp:227] _parseRequest(): headerValue: 192.168.4.1
15:14:23.884 > [ 24453][V][Parsing.cpp:226] _parseRequest(): headerName: Connection
15:14:23.893 > [ 24459][V][Parsing.cpp:227] _parseRequest(): headerValue: keep-alive
15:14:23.898 > [ 24466][V][Parsing.cpp:226] _parseRequest(): headerName: User-Agent
15:14:23.904 > [ 24471][V][Parsing.cpp:227] _parseRequest(): headerValue: Mozilla/5.0 (Linux; Android 11; HD1905 Build/RQ3A.211001.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/105.0.5195.136 Mobile Safari/537.36
15:14:23.923 > [ 24491][V][Parsing.cpp:226] _parseRequest(): headerName: Accept
15:14:23.929 > [ 24496][V][Parsing.cpp:227] _parseRequest(): headerValue: text/css,*/*;q=0.1
15:14:23.934 > [ 24503][V][Parsing.cpp:226] _parseRequest(): headerName: X-Requested-With
15:14:23.943 > [ 24510][V][Parsing.cpp:227] _parseRequest(): headerValue: com.android.captiveportallogin
15:14:23.951 > [ 24518][V][Parsing.cpp:226] _parseRequest(): headerName: Referer
15:14:23.957 > [ 24523][V][Parsing.cpp:227] _parseRequest(): headerValue: http://192.168.4.1/
15:14:23.962 > [ 24531][V][Parsing.cpp:226] _parseRequest(): headerName: Accept-Encoding
15:14:23.971 > [ 24537][V][Parsing.cpp:227] _parseRequest(): headerValue: gzip, deflate
15:14:23.976 > [ 24544][V][Parsing.cpp:226] _parseRequest(): headerName: Accept-Language
15:14:23.982 > [ 24550][V][Parsing.cpp:227] _parseRequest(): headerValue: en-US,en;q=0.9
15:14:23.990 > [ 24556][V][Parsing.cpp:254] _parseArguments(): args:
15:14:23.993 > [ 24561][V][Parsing.cpp:237] _parseRequest(): Request: /bootstrap.min.css
15:14:24.001 > [ 24568][V][Parsing.cpp:238] _parseRequest():  Arguments:
15:14:24.007 > [ 24574][W][WebServer.cpp:436] send(): content length is zero
15:14:24.049 > [ 24626][V][WebServer.cpp:296] handleClient(): New client: client.localIP()=192.168.4.1
15:14:24.055 > [ 24627][V][Parsing.cpp:122] _parseRequest(): method: GET url: /snapshot search:
15:14:24.063 > [ 24631][V][Parsing.cpp:226] _parseRequest(): headerName: Host
15:14:24.069 > [ 24636][V][Parsing.cpp:227] _parseRequest(): headerValue: 192.168.4.1
15:14:24.074 > [ 24643][V][Parsing.cpp:226] _parseRequest(): headerName: Connection
15:14:24.080 > [ 24648][V][Parsing.cpp:227] _parseRequest(): headerValue: keep-alive
15:14:24.088 > [ 24655][V][Parsing.cpp:226] _parseRequest(): headerName: User-Agent
15:14:24.094 > [ 24661][V][Parsing.cpp:227] _parseRequest(): headerValue: Mozilla/5.0 (Linux; Android 11; HD1905 Build/RQ3A.211001.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/105.0.5195.136 Mobile Safari/537.36
15:14:24.113 > [ 24680][V][Parsing.cpp:226] _parseRequest(): headerName: Accept
15:14:24.119 > [ 24686][V][Parsing.cpp:227] _parseRequest(): headerValue: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8
15:14:24.130 > [ 24697][V][Parsing.cpp:226] _parseRequest(): headerName: X-Requested-With
15:14:24.135 > [ 24703][V][Parsing.cpp:227] _parseRequest(): headerValue: com.android.captiveportallogin
15:14:24.144 > [ 24711][V][Parsing.cpp:226] _parseRequest(): headerName: Referer
15:14:24.149 > [ 24717][V][Parsing.cpp:227] _parseRequest(): headerValue: http://192.168.4.1/
15:14:24.155 > [ 24724][V][Parsing.cpp:226] _parseRequest(): headerName: Accept-Encoding
15:14:24.163 > [ 24730][V][Parsing.cpp:227] _parseRequest(): headerValue: gzip, deflate
15:14:24.169 > [ 24737][V][Parsing.cpp:226] _parseRequest(): headerName: Accept-Language
15:14:24.174 > [ 24743][V][Parsing.cpp:227] _parseRequest(): headerValue: en-US,en;q=0.9
15:14:24.183 > [ 24750][V][Parsing.cpp:254] _parseArguments(): args:
15:14:24.191 > [ 24755][V][Parsing.cpp:237] _parseRequest(): Request: /snapshot
15:14:24.194 > [ 24760][V][Parsing.cpp:238] _parseRequest():  Arguments:
15:14:24.197 > [ 24766][V][main.cpp:145] handle_snapshot(): handle_jpg
15:14:24.203 > Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.
15:14:24.211 >
15:14:24.211 > Core  1 register dump:
15:14:24.213 > PC      : 0x400e20a7  PS      : 0x00060d30  A0      : 0x800d3468  A1      : 0x3ffb25f0
15:14:24.219 > A2      : 0x00000000  A3      : 0x3ffc543f  A4      : 0x0000003f  A5      : 0x0000003a
15:14:24.227 > A6      : 0x3f400155  A7      : 0x00000001  A8      : 0x800e20a4  A9      : 0x3ffb25d0
15:14:24.236 > A10     : 0x3ffc49dc  A11     : 0x00000000  A12     : 0x00000000  A13     : 0x00000000
15:14:24.244 > A14     : 0x3ffb8a28  A15     : 0x00000000  SAR     : 0x00000004  EXCCAUSE: 0x0000001c
15:14:24.252 > EXCVADDR: 0x00000004  LBEG    : 0x4008c5d5  LEND    : 0x4008c5e5  LCOUNT  : 0xfffffffb
15:14:24.260 >
15:14:24.261 >
15:14:24.261 > Backtrace:0x400e20a4:0x3ffb25f00x400d3465:0x3ffb2610 0x40170ea5:0x3ffb2660 0x400dc546:0x3ffb2680 0x400dc5ed:0x3ffb26a0 0x400dc6d3:0x3ffb26e0 0x400dc912:0x3ffb2750 0x40171199:0x3ffb27c0 0x400e13c1:0x3ffb27e0 0x400d43ca:0x3ffb2800 0x400e66e5:0x3ffb2820
15:14:24.283 >
15:14:24.283 >
15:14:24.283 >
15:14:24.283 >
15:14:24.283 > ELF file SHA256: 0000000000000000
15:14:24.286 >
15:14:24.286 > Rebooting...
15:14:24.286 > ets Jun  8 2016 00:22:57
15:14:24.289 >
15:14:24.289 > rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
15:14:24.294 > configsip: 0, SPIWP:0xee
15:14:24.297 > clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
15:14:24.303 > mode:DIO, clock div:2
15:14:24.305 > load:0x3fff0030,len:1184
15:14:24.308 > load:0x40078000,len:13132
15:14:24.308 > load:0x40080400,len:3036
15:14:24.311 > entry 0x400805e4
15:14:24.716 > [     2][V][WiFiServer.h:42] WiFiServer(): WiFiServer::WiFiServer(port=8�␘␒rrrJj
15:14:24.721 > [     3][V][WebServer.cpp:87] WebServer(): WebServer::Webserver(port=80)
15:14:24.727 > [     9][D][esp32-hal-cpu.c:244] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz
15:14:25.174 > [   461][I][esp32-hal-psram.c:96] psramInit(): PSRAM enabled
15:14:25.189 > [   475][I][main.cpp:231] setup(): CPU Freq: 240 Mhz
15:14:25.191 > [   476][I][main.cpp:232] setup(): Free heap: 246464 bytes
15:14:25.197 > [   476][I][main.cpp:233] setup(): Starting ESP32CAM-RTSP...
15:14:25.203 > Config version: 1.1
15:14:25.205 > Config size: 326
15:14:25.205 > Wrong config version. Applying defaults.
15:14:25.211 > [iwcAll]
15:14:25.211 > |-- [iwcSys]
15:14:25.211 > |   |-- 'iwcThingName' with value: 'ESP32CAM-RTSP'
15:14:25.216 > |   |-- 'iwcApPassword' with value: <hidden>
15:14:25.219 > |   |-- [iwcWifi0]
15:14:25.222 > |   |   |-- 'iwcWifiSsid' with value: ''
15:14:25.225 > |   |   \-- 'iwcWifiPassword' with value: <hidden>
15:14:25.230 > |   \-- 'iwcApTimeout' with value: '30'
15:14:25.233 > |-- [iwcCustom]
15:14:25.236 > |   \-- [settings]
15:14:25.236 > |       |-- 'config' with value: 'ESP32CAM'
15:14:25.241 > |       |-- 'fd' with value: '20'
15:14:25.244 > |       |-- 'fs' with value: 'SVGA (800x600)'
15:14:25.248 > |       |-- 'fb' with value: '2'
15:14:25.250 > |       \-- 'q' with value: '12'
15:14:25.252 > \-- [hidden]
15:14:25.255 > AP password was not set in configuration
15:14:25.258 > State changing from: 0 to 1
15:14:25.266 > [   553][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 0 - WIFI_READY
15:14:25.357 > Setting up AP: ESP32CAM-RTSP
15:14:25.357 > With default password: <hidden>
15:14:25.360 > [   644][E][WiFiAP.cpp:153] softAP(): passphrase too short!
15:14:25.365 > [   644][V][WiFiGeneric.cpp:390] _arduino_event_cb(): AP Started
15:14:25.371 > AP IP address: [   649][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 10 - AP_START
15:14:25.379 > 192.168.4.1
15:14:25.382 > AP password was not set.
15:14:25.385 > WiFi SSID was not set.
15:14:25.385 > Will stay in AP mode.
15:14:25.388 > State changed from: 0 to 1

Relevent section appears to be;

15:13:58.893 > [ 13046][V][Parsing.cpp:254] _parseArguments(): args:
15:13:58.895 > [ 13051][V][Parsing.cpp:237] _parseRequest(): Request: /snapshot
15:13:58.904 > [ 13056][V][Parsing.cpp:238] _parseRequest():  Arguments:
15:13:58.907 > [ 13062][V][main.cpp:145] handle_snapshot(): handle_jpg
15:13:58.912 > Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.
15:13:58.921 >
15:13:58.921 > Core  1 register dump:
15:13:58.923 > PC      : 0x400e20a7  PS      : 0x00060d30  A0      : 0x800d3468  A1      : 0x3ffb25f0
15:13:58.929 > A2      : 0x00000000  A3      : 0x3ffc543f  A4      : 0x0000003f  A5      : 0x0000003a
15:13:58.937 > A6      : 0x3f400155  A7      : 0x00000001  A8      : 0x800e20a4  A9      : 0x3ffb25d0
15:13:58.946 > A10     : 0x3ffc49dc  A11     : 0x00000000  A12     : 0x00000000  A13     : 0x00000000
15:13:58.954 > A14     : 0x3ffb8a28  A15     : 0x00000000  SAR     : 0x00000004  EXCCAUSE: 0x0000001c
15:13:58.962 > EXCVADDR: 0x00000004  LBEG    : 0x4008c5d5  LEND    : 0x4008c5e5  LCOUNT  : 0xfffffffb
15:13:58.970 >
15:13:58.970 >
15:13:58.970 > Backtrace:0x400e20a4:0x3ffb25f00x400d3465:0x3ffb2610 0x40170ea5:0x3ffb2660 0x400dc546:0x3ffb2680 0x400dc5ed:0x3ffb26a0 0x400dc6d3:0x3ffb26e0 0x400dc912:0x3ffb2750 0x40171199:0x3ffb27c0 0x400e13c1:0x3ffb27e0 0x400d43ca:0x3ffb2800 0x400e66e5:0x3ffb2820
15:13:58.993 >
15:13:58.993 >
15:13:58.993 >
15:13:58.993 >
15:13:58.993 > ELF file SHA256: 0000000000000000
15:13:58.996 >

Rotate image 90 degrees in http://192.168.4.1/stream

Hi, I´m test your project, but my camara case is in horizontal.
Is it possible when you’re in stream mode, to rotate the image 90º? I don’t find option, and I think the only way would be an html.
Thank you.

Exception when requesting snapshot

Heyhey thanks so much for putting this firmware together!

I installed this on my Freenove Esp32-Wrover-Dev board and the wifi hotspot and config interface worked.
But as soon as I try to click on the /snapshot link, the board throws an exception and reboots:

11:04:24.367 > entry 0x400805e4
11:04:24.789 > [     4][V][WiFiServer.h:42] WiFiServer(): WiFiServer::WiFiServer(port=80, ...)
11:04:24.795 > [     4][V][WebServer.cpp:87] WebServer(): WebServer::Webserver(port=80)
11:04:24.818 > [    33][D][esp32-hal-cpu.c:244] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz
11:04:25.267 > [   481][I][esp32-hal-psram.c:96] psramInit(): PSRAM enabled
11:04:25.291 > [   506][V][[   507][I][main.cpp:400] setup(): CPU Freq: 240 Mhz, 2 core(s)
11:04:25.297 > [   507][I][main.cpp:401] setup(): Free heap: 248568 bytes
11:04:25.302 > [   508][I][main.cpp:402] setup(): SDK version: v4.4.4
11:04:25.308 > [   512][I][main.cpp:403] setup(): Starting ESP32CAM-RTSP...
11:04:25.311 > [   517][V][main.cpp:408] setup(): PSRAM found and initialized
11:04:25.316 > Config version: 1.5
11:04:25.319 > Config size: 455
11:04:25.322 > Loading configurations
11:04:25.322 > [iwcAll]
11:04:25.325 > |-- [iwcSys]
11:04:25.325 > |   |-- 'iwcThingName' with value: 'ESP32CAM1'
11:04:25.330 > |   |-- 'iwcApPassword' with value: <hidden>
11:04:25.333 > |   |-- [iwcWifi0]
11:04:25.336 > |   |   |-- 'iwcWifiSsid' with value: 'Husbando'
11:04:25.338 > |   |   \-- 'iwcWifiPassword' with value: <hidden>
11:04:25.344 > |   \-- 'iwcApTimeout' with value: '30'
11:04:25.347 > |-- [iwcCustom]
11:04:25.350 > |   |-- [board]
11:04:25.350 > |   |   \-- 'bt' with value: 'WROVER KIT'
11:04:25.355 > |   |-- [camera]
11:04:25.355 > |   |   |-- 'fd' with value: '100'
11:04:25.358 > |   |   |-- 'fs' with value: 'VGA (640x480)'
11:04:25.363 > |   |   |-- 'q' with value: '12'
11:04:25.366 > |   |   |-- 'eps' with value: '0'
11:04:25.369 > |   |   |-- 'fb' with value: '1'
11:04:25.372 > |   |   |-- 'b' with value: '0'
11:04:25.375 > |   |   |-- 'c' with value: '0'
11:04:25.377 > |   |   |-- 's' with value: '0'
11:04:25.380 > |   |   |-- 'e' with value: 'Normal'
11:04:25.383 > |   |   |-- 'wb' with value: '1'
11:04:25.386 > |   |   |-- 'awbg' with value: '1'
11:04:25.388 > |   |   |-- 'wbm' with value: 'Auto'
11:04:25.394 > |   |   |-- 'ec' with value: '1'
11:04:25.397 > |   |   |-- 'aec2' with value: '1'
11:04:25.400 > |   |   |-- 'ael' with value: '0'
11:04:25.402 > |   |   |-- 'aecv' with value: '300'
11:04:25.405 > |   |   |-- 'gc' with value: '1'
11:04:25.408 > |   |   |-- 'agcg' with value: '0'
11:04:25.411 > |   |   |-- 'gcl' with value: '2X'
11:04:25.413 > |   |   |-- 'bpc' with value: '0'
11:04:25.419 > |   |   |-- 'wpc' with value: '1'
11:04:25.422 > |   |   |-- 'rg' with value: '1'
11:04:25.425 > |   |   |-- 'lenc' with value: '1'
11:04:25.427 > |   |   |-- 'hm' with value: '0'
11:04:25.430 > |   |   |-- 'vm' with value: '0'
11:04:25.433 > |   |   |-- 'dcw' with value: '1'
11:04:25.436 > |   |   \-- 'cb' with value: '0'
11:04:25.438 > |   \-- [io]
11:04:25.441 > |       \-- 'li' with value: '0'
11:04:25.444 > \-- [hidden]
11:04:25.444 > [   656][V][main.cpp:286] initialize_camera(): initialize_camera
11:04:25.450 > [   656][I][main.cpp:287] initialize_camera(): Camera config: WROVER KIT
11:04:25.455 > [   662][I][main.cpp:293] initialize_camera(): Frame size: VGA (640x480)
11:04:25.463 > [   668][I][main.cpp:295] initialize_camera(): JPEG quality: 12
11:04:25.469 > [   674][I][main.cpp:296] initialize_camera(): Frame duration: 100 ms
11:04:25.475 > [   680][I][main.cpp:300] initialize_camera(): Enable PSRAM: 0
11:04:25.480 > [   685][I][main.cpp:301] initialize_camera(): Frame buffers: 1
11:04:25.486 > [   691][I][main.cpp:312] initialize_camera(): PSRAM disabled
11:04:25.691 > [   906][V][esp32-hal-ledc.c:231] analogWrite(): GPIO 4 - Using Channel 15, Value = 0
11:04:25.696 > State changing from: 0 to 2
11:04:25.710 > [   925][D][WiFiGeneric.cpp:1035] _eventCallback(): Arduino Event: 0 - WIFI_READY
11:04:25.803 > Setting up AP: ESP32CAM1
11:04:25.803 > Use password: <hidden>
11:04:25.805 > [  1018][V][WiFiGeneric.cpp:392] _arduino_event_cb(): AP Started
11:04:25.811 > [  1019][D][WiFiGeneric.cpp:1035] _eventCallback(): Arduino Event: 10 - AP_START
11:04:26.371 > AP IP address: 192.168.4.1
11:04:26.371 > [  1588][V][WiFiGeneric.cpp:395] _arduino_event_cb(): AP Stopped
11:04:26.377 > [  1589][D][WiFiGeneric.cpp:1035] _eventCallback(): Arduino Event: 11 - AP_STOP
11:04:26.385 > [  1589][V][WiFiGeneric.cpp:392] _arduino_event_cb(): AP Started
11:04:26.391 > [  1596][D][WiFiGeneric.cpp:1035] _eventCallback(): Arduino Event: 10 - AP_START
11:04:26.399 > AP timeout (ms): 30000
11:04:26.399 > State changed from: 0 to 2
11:04:56.393 > State changing from: 2 to 3
11:04:56.404 > [ 31618][V][WiFiGeneric.cpp:395] _arduino_event_cb(): AP Stopped
11:04:56.409 > [ 31618][D][WiFiGeneric.cpp:1035] _eventCallback(): Arduino Event: 11 - AP_STOP
11:04:56.415 > [ 31622][V][WiFiGeneric.cpp:392] _arduino_event_cb(): AP Started
11:04:56.420 > E (45610) wifi_init_default: esp_wifi_get_mac failed with 12289
11:04:56.426 > Connecting to [Husbando[ 31631][V][WiFiGeneric.cpp:395] _arduino_event_cb(): AP Stopped
11:04:56.434 > [ 31626][D][WiFiGeneric.cpp:1035] _eventCallback(): Arduino Event: 10 - AP_START
11:04:56.443 > [ 31646][D][WiFiGeneric.cpp:1035] _eventCallback(): Arduino Event: 11 - AP_STOP
11:04:56.448 > ] (password is hidden)
11:04:56.451 > WiFi timeout (ms): 30000
11:04:56.465 > [ 31679][D][WiFiGeneric.cpp:1035] _eventCallback(): Arduino Event: 0 - WIFI_READY
11:04:56.471 > [ 31686][V][WiFiGeneric.cpp:97] set_esp_interface_ip(): Configuring Station static IP: 0.0.0.0, MASK: 0.0.0.0, GW: 0.0.0.0
11:04:56.482 > [ 31684][V][WiFiGeneric.cpp:340] _arduino_event_cb(): STA Started
11:04:56.487 > [ 31692][D][WiFiGeneric.cpp:1035] _eventCallback(): Arduino Event: 2 - STA_START
11:04:56.495 > State changed from: 2 to 3
11:04:56.558 > [ 31772][V][WiFiGeneric.cpp:355] _arduino_event_cb(): STA Connected: SSID: Husbando, BSSID: d8:07:b6:a8:f3:a7, Channel: 10, Auth: WPA2_PSK
11:04:56.569 > [ 31773][D][WiFiGeneric.cpp:1035] _eventCallback(): Arduino Event: 4 - STA_CONNECTED
11:04:56.593 > [ 31807][V][WiFiGeneric.cpp:369] _arduino_event_cb(): STA Got New IP:192.168.0.60
11:04:56.599 > [ 31808][D][WiFiGeneric.cpp:1035] _eventCallback(): Arduino Event: 7 - STA_GOT_IP
11:04:56.607 > [ 31811][D][WiFiGeneric.cpp:1098] _eventCallback(): STA IP: 192.168.0.60, MASK: 255.255.255.0, GW: 192.168.0.1
11:04:56.615 > WiFi connected
11:04:56.618 > IP address: 192.168.0.60
11:04:56.623 > State changing from: 3 to 4
11:04:59.719 > Active mDNS services: 8 
11:04:59.719 > Accepting connection
11:04:59.722 > [ 34935][V][main.cpp:362] on_connected(): on_connected
11:04:59.733 > [ 34947][I][ArduinoOTA.cpp:141] begin(): OTA server at: esp32-70b8f6970048.local:3232
11:04:59.738 > [ 34947][V][main.cpp:353] start_rtsp_server(): start_rtsp_server
11:04:59.744 > [ 34949][V][WiFiServer.h:42] WiFiServer(): WiFiServer::WiFiServer(port=554, ...)
11:04:59.752 > [ 34956][I][rtsp_server.cpp:9] rtsp_server(): Starting RTSP server
11:04:59.758 > State changed from: 3 to 4
11:06:16.945 > Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.
11:06:16.951 > 
11:06:16.951 > Core  1 register dump:
11:06:16.953 > PC      : 0x400e644f  PS      : 0x00060930  A0      : 0x801660a4  A1      : 0x3ffb2160  
11:06:16.962 > A2      : 0x00000000  A3      : 0x3ffe35d4  A4      : 0x00000000  A5      : 0x00000008  
11:06:16.970 > A6      : 0x00000000  A7      : 0x3ffc71d8  A8      : 0x800e644c  A9      : 0x3ffb2140  
11:06:16.976 > A10     : 0x3fff37ec  A11     : 0x3fff3fe0  A12     : 0x0000180c  A13     : 0x00000001  
11:06:16.984 > A14     : 0x00000004  A15     : 0x3ffb65c4  SAR     : 0x00000016  EXCCAUSE: 0x0000001c  
11:06:16.992 > EXCVADDR: 0x00000008  LBEG    : 0x4008b2fc  LEND    : 0x4008b312  LCOUNT  : 0xffffffff  
11:06:17.001 > 
11:06:17.001 > 
11:06:17.001 > Backtrace: 0x400e644c:0x3ffb2160 0x401660a1:0x3ffb2180 0x400e78ae:0x3ffb21a0 0x400e7a07:0x3ffb21e0 0x400e762d:0x3ffb2230 0x400e7668:0x3ffb2250 0x400d6e0e:0x3ffb2270 0x400eafad:0x3ffb2290
11:06:17.017 > 
11:06:17.017 > 
11:06:17.017 > 
11:06:17.017 > 
11:06:17.017 > ELF file SHA256: 05229580823fb274
11:06:17.021 > 
11:06:17.217 > Rebooting...
11:06:17.218 > ets Jul 29 2019 12:21:46
11:06:17.220 > 
11:06:17.220 > rst:0xc (SW_CPU_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
11:06:17.225 > configsip: 0, SPIWP:0xee
11:06:17.225 > clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
11:06:17.234 > mode:DIO, clock div:2
11:06:17.234 > load:0x3fff0030,len:1184
11:06:17.237 > load:0x40078000,len:13192
11:06:17.239 > load:0x40080400,len:3028
11:06:17.244 > entry 0x400805e4

Any idea what this could be?
I've tried multiple settings including turning off PSRAM, setting the resolution to 640x480 and buffer to 1 but this still happens.

EDIT: the same thing happens when I try to open the RTSP stream in VLC.

Failing to initialize.... #2

Hi,
Your project looks exactly like something I really need. But... I can not get my camera to init.

Same board as reported in Failing to initialize.... #1 and I just can not get it to work. I know the PCB is good, it is working with arduino sketches.
noinit

Any ideas?

arduino

Hi
How can I upload your code on ESP32CAM using Arduino? Also, where is the Arduino code located in this program?

Stream not working in HA

Hi!

I have been able to get this installed on a generic ESP32CAM board and get it logged into HA, showing a picture (using "Generic Camera" integration). Works fine to show a (slowly updating) picture but when I click and it switches to showing the stream it shows an error. It flickers with the player and has occasionally the error: "Error with media stream contents". VLC shows the stream perfectly though :)

Tried with Firefox and Edge

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.