espressif / esp-iot-solution

Espressif IoT Library. IoT Device Drivers, Documentations And Solutions.
Apache License 2.0
1.82k stars 745 forks source link

usb_webcam example no longer working because no versions of espressif/tinyusb match >=0.15.0~10 (AEGHB-730) #383

Open ohault opened 2 weeks ago

ohault commented 2 weeks ago

Answers checklist.

IDF version.

esp-idf-v5.2.2-2-v5.2

Espressif SoC revision.

ESP32-S3

Operating System used.

Windows

How did you build your project?

Command line with idf.py

If you are using Windows, please specify command line type.

CMD

Development Kit.

ESP32-S3-CAM WROOM

Steps to reproduce.

c:>git clone https://github.com/espressif/esp-iot-solution.git c:>cd esp-iot-solution\usb\device\usb_webcam c:\esp-iot-solution\examples\usb\device\usb_webcam>idf.py set-target esp32s3

Build Logs.

c:\>git clone https://github.com/espressif/esp-iot-solution.git
Cloning into 'esp-iot-solution'...
remote: Enumerating objects: 26311, done.
remote: Counting objects: 100% (26311/26311), done.
remote: Compressing objects: 100% (9820/9820), done.
remote: Total 26311 (delta 15251), reused 26090 (delta 15184), pack-reused 0
Receiving objects: 100% (26311/26311), 108.92 MiB | 6.38 MiB/s, done.
Resolving deltas: 100% (15251/15251), done.
Updating files: 100% (2750/2750), done.

c:\>cd esp-iot-solution\usb\device\usb_webcam

c:\esp-iot-solution\examples\usb\device\usb_webcam>idf.py set-target esp32s3
Adding "set-target"'s dependency "fullclean" to list of commands with default set of options.
Executing action: fullclean
Build directory 'C:\esp-iot-solution\examples\usb\device\usb_webcam\build' not found. Nothing to clean.
Executing action: set-target
Set Target to: esp32s3, new sdkconfig will be created.
Running cmake in directory C:\esp-iot-solution\examples\usb\device\usb_webcam\build
Executing "cmake -G Ninja -DPYTHON_DEPS_CHECKED=1 -DPYTHON=C:\Espressif\python_env\idf5.2_py3.11_env\Scripts\python.exe -DESP_PLATFORM=1 -DIDF_TARGET=esp32s3 -DCCACHE_ENABLE=1 C:\esp-iot-solution\examples\usb\device\usb_webcam"...
-- Found Git: C:/Espressif/tools/idf-git/2.44.0/cmd/git.exe (found version "2.44.0.windows.1")
-- sdkconfig not exist
EYES_SHOW_TARGET is set to esp32s3
-- ccache will be used for faster recompilation
-- The C compiler identification is GNU 13.2.0
-- The CXX compiler identification is GNU 13.2.0
-- The ASM compiler identification is GNU
-- Found assembler: C:/Espressif/tools/xtensa-esp-elf/esp-13.2.0_20230928/xtensa-esp-elf/bin/xtensa-esp32s3-elf-gcc.exe
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Espressif/tools/xtensa-esp-elf/esp-13.2.0_20230928/xtensa-esp-elf/bin/xtensa-esp32s3-elf-gcc.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Espressif/tools/xtensa-esp-elf/esp-13.2.0_20230928/xtensa-esp-elf/bin/xtensa-esp32s3-elf-g++.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Building ESP-IDF components for target esp32s3
Dependencies lock doesn't exist, solving dependencies.
Using component placed at C:\esp-iot-solution\examples\usb\device\usb_webcam\eyes_show for dependency eyes_show(*), specified in C:/esp-iot-solution/examples/usb/device/usb_webcam/main\idf_component.yml
Using component placed at C:\esp-iot-solution\components\usb\usb_device_uvc for dependency usb_device_uvc(1.1.*), specified in C:/esp-iot-solution/examples/usb/device/usb_webcam/main\idf_component.yml
...................Using component placed at C:\esp-iot-solution\examples\usb\device\usb_webcam\eyes_show for dependency eyes_show(*), specified in C:/esp-iot-solution/examples/usb/device/usb_webcam/main\idf_component.yml
Using component placed at C:\esp-iot-solution\components\usb\usb_device_uvc for dependency usb_device_uvc(1.1.*), specified in C:/esp-iot-solution/examples/usb/device/usb_webcam/main\idf_component.yml
CMake Error at C:/Espressif/frameworks/esp-idf-v5.2.2-2/tools/cmake/build.cmake:544 (message):
  ERROR: Because no versions of usb_device_uvc match >1.1.0,<1.2.0

   and usb_device_uvc (1.1.0) depends on espressif/tinyusb (>=0.15.0~10), usb_device_uvc (>=1.1.0,<1.2.0) requires espressif/tinyusb (>=0.15.0~10).

  So, because no versions of espressif/tinyusb match >=0.15.0~10

   and project depends on usb_device_uvc (1.1.*), version solving failed.

Call Stack (most recent call first):
  C:/Espressif/frameworks/esp-idf-v5.2.2-2/tools/cmake/project.cmake:605 (idf_build_process)
  CMakeLists.txt:25 (project)

...................-- Configuring incomplete, errors occurred!
See also "C:/esp-iot-solution/examples/usb/device/usb_webcam/build/CMakeFiles/CMakeOutput.log".
cmake failed with exit code 1, output of the command is in the C:\esp-iot-solution\examples\usb\device\usb_webcam\build\log\idf_py_stderr_output_576 and C:\esp-iot-solution\examples\usb\device\usb_webcam\build\log\idf_py_stdout_output_576

c:\esp-iot-solution\examples\usb\device\usb_webcam>

More Information.

No response

leeebo commented 2 weeks ago
  ERROR: Because no versions of usb_device_uvc match >1.1.0,<1.2.0

   and usb_device_uvc (1.1.0) depends on espressif/tinyusb (>=0.15.0~10), usb_device_uvc (>=1.1.0,<1.2.0) requires espressif/tinyusb (>=0.15.0~10).

  So, because no versions of espressif/tinyusb match >=0.15.0~10

Seems like IDF component manager parse components' version failed like #352, we did have https://components.espressif.com/components/espressif/tinyusb/versions/0.15.0~10.

@ohault Which version of idf-component-manager are you using? please run pip show idf-component-manager after you export IDF environment.

leeebo commented 2 weeks ago

I tested your case also using IDF v5.2.2 with idf-component-manager v1.5.3 , it works as normal. 🤔

ohault commented 2 weeks ago

Hi @leeebo,

C:\Espressif\frameworks\esp-idf-v5.2.2-2>pip show idf-component-manager
Name: idf-component-manager
Version: 1.5.3
Summary: The component manager for ESP-IDF
Home-page: https://github.com/espressif/idf-component-manager
Author: Sergei Silnov
Author-email: sergei.silnov@espressif.com
License: Apache License 2.0
Location: C:\Espressif\python_env\idf5.2_py3.11_env\Lib\site-packages
Requires: cachecontrol, click, colorama, contextlib2, packaging, pyparsing, pyyaml, requests, requests-file, requests-toolbelt, schema, six, tqdm, urllib3
Required-by:

This has been done on Microsoft Windows version 10.0.19045.4598

leeebo commented 2 weeks ago

@ohault Thanks for your report, I did reproduce the issue on Windows OS with the same code and idf-component-manager v1.5.3. The IDF component manager team is working on the fix. cc @hfudev

The current workaround is :

  1. (in IDF environment) upgrade idf-component-manager to v2.0 using pip install idf-component-manager==2.0.0.dev1
  2. modify the espidf.constraints.v5.2 file in your tools install path, change idf-component-manager~=1.2 to idf-component-manager>=1.2
  3. delete the build folder then retry
ohault commented 2 weeks ago

Hi @leeebo, thank you. I can confirm that the proposed workaround is indeed working in the while of the fix for v1.5.3 release

ohault commented 2 weeks ago

Now, I have this compile error with usb_webcam.

C:/esp-iot-solution/examples/usb/device/usb_webcam/main/usb_webcam_main.c:21:10: fatal error: bsp/esp-bsp.h: No such file or directory
   21 | #include "bsp/esp-bsp.h"
      |          ^~~~~~~~~~~~~~~
compilation terminated.

Full log:

c:\esp-iot-solution\examples\usb\device\usb_webcam>idf.py build
Executing action: all (aliases: build)
Running ninja in directory C:\esp-iot-solution\examples\usb\device\usb_webcam\build
Executing "ninja all"...
[28/1016] Generating ../../partition_table/partition-table.bin
Partition table binary generated. Contents:
*******************************************************************************
# ESP-IDF Partition Table
# Name, Type, SubType, Offset, Size, Flags
nvs,data,nvs,0x9000,24K,
factory,app,factory,0x10000,2M,
*******************************************************************************
[993/1016] Performing configure step for 'bootloader'
-- Found Git: C:/Espressif/tools/idf-git/2.44.0/cmd/git.exe (found version "2.44.0.windows.1")
-- The C compiler identification is GNU 13.2.0
-- The CXX compiler identification is GNU 13.2.0
-- The ASM compiler identification is GNU
-- Found assembler: C:/Espressif/tools/xtensa-esp-elf/esp-13.2.0_20230928/xtensa-esp-elf/bin/xtensa-esp32s3-elf-gcc.exe
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Espressif/tools/xtensa-esp-elf/esp-13.2.0_20230928/xtensa-esp-elf/bin/xtensa-esp32s3-elf-gcc.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Espressif/tools/xtensa-esp-elf/esp-13.2.0_20230928/xtensa-esp-elf/bin/xtensa-esp32s3-elf-g++.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Building ESP-IDF components for target esp32s3
-- Project sdkconfig file C:/esp-iot-solution/examples/usb/device/usb_webcam/sdkconfig
-- Compiler supported targets: xtensa-esp-elf
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of time_t
-- Check size of time_t - done
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/soc/esp32s3/ld/esp32s3.peripherals.ld
-- Bootloader project name: "bootloader" version: 1
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_rom/esp32s3/ld/esp32s3.rom.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_rom/esp32s3/ld/esp32s3.rom.api.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_rom/esp32s3/ld/esp32s3.rom.libgcc.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_rom/esp32s3/ld/esp32s3.rom.newlib.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/bootloader/subproject/main/ld/esp32s3/bootloader.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/bootloader/subproject/main/ld/esp32s3/bootloader.rom.ld
-- Components: boot_hooks bootloader bootloader_support efuse esp_app_format esp_bootloader_format esp_common esp_hw_support esp_rom esp_system esptool_py freertos hal log main micro-ecc newlib partition_table soc spi_flash xtensa
-- Component paths: C:/esp-iot-solution/examples/usb/device/usb_webcam/bootloader_components/boot_hooks C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/bootloader C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/bootloader_support C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/efuse C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_app_format C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_bootloader_format C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_common C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_hw_support C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_rom C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_system C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esptool_py C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/freertos C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/hal C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/log C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/bootloader/subproject/main C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/bootloader/subproject/components/micro-ecc C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/newlib C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/partition_table C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/soc C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/spi_flash C:/Espressif/frameworks/esp-idf-v5.2.2-2/components/xtensa
-- Configuring done
-- Generating done
-- Build files have been written to: C:/esp-iot-solution/examples/usb/device/usb_webcam/build/bootloader
[998/1016] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/usb_webcam_main.c.obj
FAILED: esp-idf/main/CMakeFiles/__idf_main.dir/usb_webcam_main.c.obj
ccache C:\Espressif\tools\xtensa-esp-elf\esp-13.2.0_20230928\xtensa-esp-elf\bin\xtensa-esp32s3-elf-gcc.exe -DESP_PLATFORM -DIDF_VER=\"v5.2.2\" -DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ -DUNITY_INCLUDE_CONFIG_H -D_GLIBCXX_HAVE_POSIX_SEMAPHORE -D_GLIBCXX_USE_POSIX_SEMAPHORE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -IC:/esp-iot-solution/examples/usb/device/usb_webcam/build/config -IC:/esp-iot-solution/examples/usb/device/usb_webcam/main -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/newlib/platform_include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/freertos/config/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/freertos/config/include/freertos -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/freertos/config/xtensa/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/freertos/FreeRTOS-Kernel/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/freertos/FreeRTOS-Kernel/portable/xtensa/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/freertos/esp_additions/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_hw_support/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_hw_support/include/soc -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_hw_support/include/soc/esp32s3 -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_hw_support/port/esp32s3/. -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/heap/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/log/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/soc/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/soc/esp32s3 -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/soc/esp32s3/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/hal/platform_port/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/hal/esp32s3/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/hal/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_rom/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_rom/include/esp32s3 -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_rom/esp32s3 -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_common/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_system/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_system/port/soc -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_system/port/include/private -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/xtensa/esp32s3/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/xtensa/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/xtensa/deprecated_include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/lwip/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/lwip/include/apps -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/lwip/include/apps/sntp -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/lwip/lwip/src/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/lwip/port/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/lwip/port/freertos/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/lwip/port/esp32xx/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/lwip/port/esp32xx/include/arch -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/lwip/port/esp32xx/include/sys -IC:/esp-iot-solution/examples/usb/device/usb_webcam/managed_components/espressif__esp32-camera/driver/include -IC:/esp-iot-solution/examples/usb/device/usb_webcam/managed_components/espressif__esp32-camera/conversions/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/driver/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/driver/deprecated -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/driver/analog_comparator/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/driver/dac/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/driver/gpio/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/driver/gptimer/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/driver/i2c/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/driver/i2s/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/driver/ledc/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/driver/mcpwm/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/driver/parlio/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/driver/pcnt/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/driver/rmt/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/driver/sdio_slave/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/driver/sdmmc/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/driver/sigma_delta/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/driver/spi/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/driver/temperature_sensor/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/driver/touch_sensor/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/driver/twai/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/driver/uart/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/driver/usb_serial_jtag/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/driver/touch_sensor/esp32s3/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_pm/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_ringbuf/include -IC:/esp-iot-solution/components/usb/usb_device_uvc/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/usb/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_timer/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/efuse/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/efuse/esp32s3/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_mm/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/mbedtls/port/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/mbedtls/mbedtls/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/mbedtls/mbedtls/library -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/mbedtls/esp_crt_bundle/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/mbedtls/mbedtls/3rdparty/everest/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/mbedtls/mbedtls/3rdparty/p256-m -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/mbedtls/mbedtls/3rdparty/p256-m/p256-m -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_bootloader_format/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_app_format/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/bootloader_support/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/bootloader_support/bootloader_flash/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_partition/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/app_update/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/spi_flash/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/pthread/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/app_trace/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_event/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/nvs_flash/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_phy/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_phy/esp32s3/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/vfs/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_netif/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/wpa_supplicant/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/wpa_supplicant/port/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/wpa_supplicant/esp_supplicant/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_coex/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_wifi/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_wifi/wifi_apps/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/unity/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/unity/unity/src -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/cmock/CMock/src -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/console -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/http_parser -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp-tls -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp-tls/esp-tls-crypto -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_adc/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_adc/interface -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_adc/esp32s3/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_adc/deprecated/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_eth/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_gdbstub/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_hid/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/tcp_transport/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_http_client/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_http_server/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_https_ota/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_psram/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_lcd/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_lcd/interface -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/protobuf-c/protobuf-c -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/protocomm/include/common -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/protocomm/include/security -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/protocomm/include/transports -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/protocomm/include/crypto/srp6a -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/protocomm/proto-c -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/esp_local_ctrl/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/espcoredump/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/espcoredump/include/port/xtensa -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/wear_levelling/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/sdmmc/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/fatfs/diskio -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/fatfs/src -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/fatfs/vfs -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/idf_test/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/idf_test/include/esp32s3 -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/ieee802154/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/json/cJSON -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/mqtt/esp-mqtt/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/nvs_sec_provider/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/perfmon/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/spiffs/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/touch_element/include -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/wifi_provisioning/include -IC:/esp-iot-solution/examples/usb/device/usb_webcam/managed_components/espressif__tinyusb/src -IC:/Espressif/frameworks/esp-idf-v5.2.2-2/components/freertos/FreeRTOS-Kernel/include/freertos -IC:/esp-iot-solution/components/usb/usb_device_uvc/tusb -mlongcalls  -fno-builtin-memcpy -fno-builtin-memset -fno-builtin-bzero -fno-builtin-stpcpy -fno-builtin-strncpy -fdiagnostics-color=always -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -O2 -fmacro-prefix-map=C:/esp-iot-solution/examples/usb/device/usb_webcam=. -fmacro-prefix-map=C:/Espressif/frameworks/esp-idf-v5.2.2-2=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu17 -Wno-old-style-declaration -DUSB_DEVICE_UVC_VER_MAJOR=1 -DUSB_DEVICE_UVC_VER_MINOR=1 -DUSB_DEVICE_UVC_VER_PATCH=0 -DCFG_TUSB_MCU=OPT_MCU_ESP32S3 -MD -MT esp-idf/main/CMakeFiles/__idf_main.dir/usb_webcam_main.c.obj -MF esp-idf\main\CMakeFiles\__idf_main.dir\usb_webcam_main.c.obj.d -o esp-idf/main/CMakeFiles/__idf_main.dir/usb_webcam_main.c.obj -c C:/esp-iot-solution/examples/usb/device/usb_webcam/main/usb_webcam_main.c
C:/esp-iot-solution/examples/usb/device/usb_webcam/main/usb_webcam_main.c:21:10: fatal error: bsp/esp-bsp.h: No such file or directory
   21 | #include "bsp/esp-bsp.h"
      |          ^~~~~~~~~~~~~~~
compilation terminated.
[113/114] Generating binary image from built executable
esptool.py v4.7.0
Creating esp32s3 image...
Merged 2 ELF sections
Successfully created esp32s3 image.
Generated C:/esp-iot-solution/examples/usb/device/usb_webcam/build/bootloader/bootloader.bin
[114/114] cmd.exe /C "cd /D C:\esp-iot-solution\examples\usb\device\usb_webcam\build\bootloader\esp-idf\...x8000 bootloader 0x0 C:/esp-iot-solution/examples/usb/device/usb_webcam/build/bootloader/bootloader.bin
Bootloader binary size 0x5840 bytes. 0x27c0 bytes (31%) free.
ninja: build stopped: subcommand failed.
ninja failed with exit code 1, output of the command is in the C:\esp-iot-solution\examples\usb\device\usb_webcam\build\log\idf_py_stderr_output_17508 and C:\esp-iot-solution\examples\usb\device\usb_webcam\build\log\idf_py_stdout_output_17508

c:\esp-iot-solution\examples\usb\device\usb_webcam>idf.py menuconfig
Executing action: menuconfig
Running ninja in directory C:\esp-iot-solution\examples\usb\device\usb_webcam\build
Executing "ninja menuconfig"...
[0/1] cmd.exe /C "cd /D C:\esp-iot-solution\examples\usb\device\usb_webcam\build && C:\Espressif\python_...env IDF_INIT_VERSION=5.2.2 --output config C:/esp-iot-solution/examples/usb/device/usb_webcam/sdkconfig
Loading defaults file C:/esp-iot-solution/examples/usb/device/usb_webcam/sdkconfig.defaults...
C:/esp-iot-solution/examples/usb/device/usb_webcam/sdkconfig.defaults:14 CONFIG_ESP32S3_SPIRAM_SUPPORT was replaced with CONFIG_SPIRAM
C:/esp-iot-solution/examples/usb/device/usb_webcam/sdkconfig.defaults:16 CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240 was replaced with CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240
C:/Espressif/frameworks/esp-idf-v5.2.2-2/Kconfig:15: warning: IDF_ENV_FPGA has 'option env="IDF_ENV_FPGA"', but the environment variable IDF_ENV_FPGA is not set
Loaded configuration 'C:/esp-iot-solution/examples/usb/device/usb_webcam/sdkconfig'
No changes to save (for 'C:/esp-iot-solution/examples/usb/device/usb_webcam/sdkconfig')
Loading defaults file C:/esp-iot-solution/examples/usb/device/usb_webcam/sdkconfig.defaults...
C:/esp-iot-solution/examples/usb/device/usb_webcam/sdkconfig.defaults:14 CONFIG_ESP32S3_SPIRAM_SUPPORT was replaced with CONFIG_SPIRAM
C:/esp-iot-solution/examples/usb/device/usb_webcam/sdkconfig.defaults:16 CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240 was replaced with CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240
ohault commented 1 week ago

Hi @leeebo,

do you confirm it is a bug or is it a missing dependencies I should have installed manually ?

Is there a possible workaround ?

lijunru-hub commented 1 week ago

Hi @ohault Before compiling, did you modify any configuration items in the menuconfig? Can you show me which components are in your management_components directory?

ohault commented 1 week ago

Hi @ohault Before compiling, did you modify any configuration items in the menuconfig? Can you show me which components are in your management_components directory?

Hi @lijunru-hub,

I didn't change menuconfig. I can see the following three subdirectories in c:\esp-iot-solution\examples\usb\device\usb_webcam\managed_components

lijunru-hub commented 1 week ago

This is where the problem lies: the package manager did not retrieve the esp32_s3_eye and eyes_show packages. For some reason, the following lines in the idf_component.yml did not take effect. I think you can delete them.

    rules:
      - if: "target == $EYES_SHOW_TARGET"

Is your development board an esp32-s3-eye? If not, you can set the macro CAMERA_MODULE to CAMERA_MODULE_CUSTOM or another appropriate value.

ohault commented 1 week ago

@lijunru-hub,

I'm using an ESP32 S3 CAM ESP32 S3 WROOM 1 N16R8 Development Board with OV5640 Camera.

This module is working from ESP Launchpad for esp-iot-solution when I use the webcam application using ESP chipset type : esp32s3-esp32s3_eye

I need some help because if I remove only

rules:
      - if: "target == $EYES_SHOW_TARGET"

I get the following error

nts/usb/usb_device_uvc/tusb -mlongcalls  -fno-builtin-memcpy -fno-builtin-memset -fno-builtin-bzero -fno-builtin-stpcpy -fno-builtin-strncpy -fdiagnostics-color=always -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -O2 -fmacro-prefix-map=C:/esp-iot-solution/examples/usb/device/usb_webcam=. -fmacro-prefix-map=C:/Espressif/frameworks/esp-idf-v5.2.2-2=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu17 -Wno-old-style-declaration -DBUTTON_VER_MAJOR=2 -DBUTTON_VER_MINOR=5 -DBUTTON_VER_PATCH=6 -DUSB_DEVICE_UVC_VER_MAJOR=1 -DUSB_DEVICE_UVC_VER_MINOR=1 -DUSB_DEVICE_UVC_VER_PATCH=0 -DCFG_TUSB_MCU=OPT_MCU_ESP32S3 -MD -MT esp-idf/main/CMakeFiles/__idf_main.dir/usb_webcam_main.c.obj -MF esp-idf\main\CMakeFiles\__idf_main.dir\usb_webcam_main.c.obj.d -o esp-idf/main/CMakeFiles/__idf_main.dir/usb_webcam_main.c.obj -c C:/esp-iot-solution/examples/usb/device/usb_webcam/main/usb_webcam_main.c
C:/esp-iot-solution/examples/usb/device/usb_webcam/main/usb_webcam_main.c:22:10: fatal error: show_eyes.h: No such file or directory
   22 | #include "show_eyes.h"
      |          ^~~~~~~~~~~~~
compilation terminated.
ninja: build stopped: subcommand failed.
BUG: component_requirements.py: cannot match original component filename for source component main
ninja failed with exit code 1, output of the command is in the C:\esp-iot-solution\examples\usb\device\usb_webcam\build\log\idf_py_stderr_output_7164 and C:\esp-iot-solution\examples\usb\device\usb_webcam\build\log\idf_py_stdout_output_7164

With the same board, I can run without any problem this sample also using the camera with the default (ESP-S3-EYE DevKit) - https://github.com/espressif/esp-iot-solution/tree/master/examples/camera/video_stream_server

I hope this usb_webcam example app would be soon fixed and aligned with the same level of camera support than /examples/camera/video_stream_server.

In the while, how should I configure the usb_webcam example app to build it without errors (e.g. by removing the support of the LCD screen animation) ?

lijunru-hub commented 1 week ago

Just try set CAMERA_MODULE to CAMERA_MODULE_CUSTOM and set your camera IO.

ohault commented 1 week ago

Hi @lijunru-hub, with this last command applied, it is eventually working. Thank you.

To summarize :

Actions/suggestions:

Expected behavior:

- git clone https://github.com/espressif/esp-iot-solution
- cd esp-iot-solution/examples/usb/device/usb_webcam
- idf.py set-target esp32s3
- idf.py build
- idf.py flash

without any errors.