Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ESP32-S3 - Version 3.0 breaks USBHIDKeyboard LEDs events (Caps Lock, Num Lock, etc.) #10296

Closed
1 task done
TheCrypt0 opened this issue Sep 5, 2024 · 24 comments · Fixed by #10398
Closed
1 task done
Assignees
Labels
Status: In Progress ⚠️ Issue is in progress
Milestone

Comments

@TheCrypt0
Copy link

Board

ESP32-S3

Device Description

Custom ESP32-S3 keyboard but it should work on any ESP32-S3 devkit with USB connection.

Hardware Configuration

No.

Version

v3.0.4

IDE Name

Arduino IDE

Operating System

macOS 14.6.1

Flash frequency

80MHz

PSRAM enabled

no

Upload speed

921600

Description

I'm currently building a USB keyboard using the ESP32-S3 and when upgrading to the latest Arduino Core, the reporting of LEDs (Caps Lock, Num Lock, etc.) did not happen anymore, even though the typing works. Downgrading to 2.0.13 makes the code work again.

I attached a minimum reproducible example with the expected output when the devkit is connected to a PC.

Sketch

#include <USB.h>
#include <USBCDC.h>
#include <USBHIDKeyboard.h>

USBHIDKeyboard m_keyboard;
USBCDC         m_serial;
ESPUSB*        m_usb;

static void
usbEventCallback(void*            arg,
                 esp_event_base_t event_base,
                 int32_t          event_id,
                 void*            event_data)
{
  if (event_base == ARDUINO_USB_EVENTS) {
    arduino_usb_event_data_t* data = (arduino_usb_event_data_t*)event_data;
    switch (event_id) {
      case ARDUINO_USB_STARTED_EVENT:
        m_serial.println("USB PLUGGED");
        break;
      case ARDUINO_USB_STOPPED_EVENT:
        m_serial.println("USB UNPLUGGED");
        break;
      case ARDUINO_USB_SUSPEND_EVENT:
        m_serial.printf("USB SUSPENDED: remote_wakeup_en: %u\n",
                        data->suspend.remote_wakeup_en);
        break;
      case ARDUINO_USB_RESUME_EVENT:
        m_serial.println("USB RESUMED");
        break;

      default:
        break;
    }
  } else if (event_base == ARDUINO_USB_HID_EVENTS) {
    arduino_usb_hid_event_data_t* data =
      (arduino_usb_hid_event_data_t*)event_data;
    switch (event_id) {
      case ARDUINO_USB_HID_SET_PROTOCOL_EVENT:
        m_serial.printf("HID SET PROTOCOL: %s\n",
                        data->set_protocol.protocol ? "REPORT" : "BOOT");
        break;
      case ARDUINO_USB_HID_SET_IDLE_EVENT:
        m_serial.printf("HID SET IDLE: %u\n", data->set_idle.idle_rate);
        break;

      default:
        break;
    }
  } else if (event_base == ARDUINO_USB_HID_KEYBOARD_EVENTS) {
    arduino_usb_hid_keyboard_event_data_t* data =
      (arduino_usb_hid_keyboard_event_data_t*)event_data;
    switch (event_id) {
      case ARDUINO_USB_HID_KEYBOARD_LED_EVENT:
        m_serial.printf(
          "HID KEYBOARD LED: NumLock:%u, CapsLock:%u, ScrollLock:%u\n",
          data->numlock,
          data->capslock,
          data->scrolllock);
        break;

      default:
        break;
    }
  }
}

void
setup()
{
  // put your setup code here, to run once:
  // m_serial.begin(115200);

  USB.onEvent(usbEventCallback);
  m_keyboard.onEvent(usbEventCallback);
  m_serial.onEvent(usbEventCallback);

  m_keyboard.begin();
  m_serial.begin(115200);
  // m_serial.enableReboot(false);

  m_usb = &USB; // get the USB object
  m_usb->manufacturerName("TEST MAN");
  m_usb->productName("TEST DEV");

  m_usb->begin();
}

void
loop()
{
  // put your main code here, to run repeatedly:
  m_serial.println("Hello World!");

  delay(1000);
  m_keyboard.press(KEY_CAPS_LOCK);
  delay(1000);
  m_keyboard.release(KEY_CAPS_LOCK);

  delay(1000);
}

Debug Message

--- CORRECT OUTPUT WITH ARDUINO ESP32 VER 2.0.13 ---
KEYBOARD LED: NumLock:0, CapsLock:1, ScrollLock:0
Hello World!
HID KEYBOARD LED: NumLock:0, CapsLock:0, ScrollLock:0
Hello World!
HID KEYBOARD LED: NumLock:0, CapsLock:1, ScrollLock:0
Hello World!
etc...
--- OUTPUT WITH ARDUINO ESP32 VER 3.0.0 and 3.0.4 ---
Hello World!
Hello World!
Hello World!
etc...

Other Steps to Reproduce

No response

I have checked existing issues, online documentation and the Troubleshooting Guide

  • I confirm I have checked existing issues, online documentation and Troubleshooting guide.
@me-no-dev
Copy link
Member

@SuGlider PTAL

@me-no-dev
Copy link
Member

@TheCrypt0 can you please try with 3.1.0-RC1? We have switched the driver that TinyUSB uses internally and that might cause better behavior.

@TheCrypt0
Copy link
Author

@me-no-dev thanks, sure thing!

Is there a way I can manually install the pre-release version with the latest Arduino IDE?

@SuGlider SuGlider self-assigned this Sep 9, 2024
@SuGlider
Copy link
Collaborator

SuGlider commented Sep 9, 2024

@TheCrypt0 - In order to see the version 3.1.0-RC1 in the Menu->Tool->Board->Boards Manager list of Arduino IDE, it is necessary to add both JSON URLs to the list, by adding it to the Menu->File->Preferences->Additional Boards Manager URLs in the IDE Menu:

https://espressif.github.io/arduino-esp32/package_esp32_dev_index.json
https://espressif.github.io/arduino-esp32/package_esp32_index.json

@SuGlider
Copy link
Collaborator

SuGlider commented Sep 9, 2024

In the mean time, I'll reproduce the issue and verify what may have changed.

@TheCrypt0
Copy link
Author

@SuGlider thanks for the input!

With the 3.1.0-RC1 I get the following error when compiling:

FQBN: esp32:esp32:esp32s3
Using board 'esp32s3' from platform in folder: /Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1
Using core 'esp32' from platform in folder: /Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1

/usr/bin/env bash -c "[ ! -f \"/Users/user/projects/test_usb.ino\"/partitions.csv ] || cp -f \"/Users/user/projects/test_usb.ino\"/partitions.csv \"/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5\"/partitions.csv"
/usr/bin/env bash -c "[ -f \"/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5\"/partitions.csv ] || [ ! -f \"/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/variants/esp32s3\"/partitions.csv ] || cp \"/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/variants/esp32s3\"/partitions.csv \"/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5\"/partitions.csv"
/usr/bin/env bash -c "[ -f \"/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5\"/partitions.csv ] || cp \"/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1\"/tools/partitions/default.csv \"/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5\"/partitions.csv"
/usr/bin/env bash -c "[ -f \"/Users/user/projects/test_usb.ino\"/bootloader.bin ] && cp -f \"/Users/user/projects/test_usb.ino\"/bootloader.bin \"/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5\"/test_usb.ino.ino.bootloader.bin || ( [ -f \"/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/variants/esp32s3\"/bootloader.bin ] && cp \"/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/variants/esp32s3\"/bootloader.bin \"/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5\"/test_usb.ino.ino.bootloader.bin || \"/Users/user/Library/Arduino15/packages/esp32/tools/esptool_py/4.6\"/esptool --chip esp32s3 elf2image --flash_mode dio --flash_freq 80m --flash_size 4MB -o \"/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5\"/test_usb.ino.ino.bootloader.bin \"/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3\"/bin/bootloader_qio_80m.elf )"
esptool.py v4.6
Creating esp32s3 image...
Merged 2 ELF sections
Successfully created esp32s3 image.
/usr/bin/env bash -c "[ ! -f \"/Users/user/projects/test_usb.ino\"/build_opt.h ] || cp -f \"/Users/user/projects/test_usb.ino\"/build_opt.h \"/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5\"/build_opt.h"
/usr/bin/env bash -c "[ -f \"/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5\"/build_opt.h ] || : > \"/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5\"/build_opt.h"
/usr/bin/env bash -c ": > '/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/file_opts'"
Detecting libraries used...
/Users/user/Library/Arduino15/packages/esp32/tools/esp-x32/2405/bin/xtensa-esp32s3-elf-g++ -c @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/cpp_flags -w -Os -Werror=return-type -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10607 -DARDUINO_ESP32S3_DEV -DARDUINO_ARCH_ESP32 -DARDUINO_BOARD="ESP32S3_DEV" -DARDUINO_VARIANT="esp32s3" -DARDUINO_PARTITION_default -DARDUINO_HOST_OS="macosx" -DARDUINO_FQBN="esp32:esp32:esp32s3:UploadSpeed=921600,USBMode=hwcdc,CDCOnBoot=default,MSCOnBoot=default,DFUOnBoot=default,UploadMode=default,CPUFreq=240,FlashMode=qio,FlashSize=4M,PartitionScheme=default,DebugLevel=none,PSRAM=disabled,LoopCore=1,EventsCore=1,EraseFlash=none,JTAGAdapter=default,ZigbeeMode=default" -DESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1 -DARDUINO_USB_MODE=1 -DARDUINO_USB_CDC_ON_BOOT=0 -DARDUINO_USB_MSC_ON_BOOT=0 -DARDUINO_USB_DFU_ON_BOOT=0 @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/defines -I/Users/user/projects/test_usb.ino -iprefix /Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/include/ @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/includes -I/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/qio_qspi/include -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/cores/esp32 -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/variants/esp32s3 @/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/build_opt.h @/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/file_opts /private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/sketch/test_usb.ino.ino.cpp -o /dev/null
Alternatives for USBHIDKeyboard.h: [[email protected]]
ResolveLibrary(USBHIDKeyboard.h)
  -> candidates: [[email protected]]
/Users/user/Library/Arduino15/packages/esp32/tools/esp-x32/2405/bin/xtensa-esp32s3-elf-g++ -c @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/cpp_flags -w -Os -Werror=return-type -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10607 -DARDUINO_ESP32S3_DEV -DARDUINO_ARCH_ESP32 -DARDUINO_BOARD="ESP32S3_DEV" -DARDUINO_VARIANT="esp32s3" -DARDUINO_PARTITION_default -DARDUINO_HOST_OS="macosx" -DARDUINO_FQBN="esp32:esp32:esp32s3:UploadSpeed=921600,USBMode=hwcdc,CDCOnBoot=default,MSCOnBoot=default,DFUOnBoot=default,UploadMode=default,CPUFreq=240,FlashMode=qio,FlashSize=4M,PartitionScheme=default,DebugLevel=none,PSRAM=disabled,LoopCore=1,EventsCore=1,EraseFlash=none,JTAGAdapter=default,ZigbeeMode=default" -DESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1 -DARDUINO_USB_MODE=1 -DARDUINO_USB_CDC_ON_BOOT=0 -DARDUINO_USB_MSC_ON_BOOT=0 -DARDUINO_USB_DFU_ON_BOOT=0 @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/defines -I/Users/user/projects/test_usb.ino -iprefix /Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/include/ @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/includes -I/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/qio_qspi/include -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/cores/esp32 -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/variants/esp32s3 -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/libraries/USB/src @/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/build_opt.h @/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/file_opts /private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/sketch/test_usb.ino.ino.cpp -o /dev/null
/Users/user/Library/Arduino15/packages/esp32/tools/esp-x32/2405/bin/xtensa-esp32s3-elf-g++ -c @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/cpp_flags -w -Os -Werror=return-type -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10607 -DARDUINO_ESP32S3_DEV -DARDUINO_ARCH_ESP32 -DARDUINO_BOARD="ESP32S3_DEV" -DARDUINO_VARIANT="esp32s3" -DARDUINO_PARTITION_default -DARDUINO_HOST_OS="macosx" -DARDUINO_FQBN="esp32:esp32:esp32s3:UploadSpeed=921600,USBMode=hwcdc,CDCOnBoot=default,MSCOnBoot=default,DFUOnBoot=default,UploadMode=default,CPUFreq=240,FlashMode=qio,FlashSize=4M,PartitionScheme=default,DebugLevel=none,PSRAM=disabled,LoopCore=1,EventsCore=1,EraseFlash=none,JTAGAdapter=default,ZigbeeMode=default" -DESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1 -DARDUINO_USB_MODE=1 -DARDUINO_USB_CDC_ON_BOOT=0 -DARDUINO_USB_MSC_ON_BOOT=0 -DARDUINO_USB_DFU_ON_BOOT=0 @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/defines -I/Users/user/projects/test_usb.ino -iprefix /Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/include/ @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/includes -I/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/qio_qspi/include -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/cores/esp32 -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/variants/esp32s3 -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/libraries/USB/src @/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/build_opt.h @/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/file_opts /Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/libraries/USB/src/USBHID.cpp -o /dev/null
/Users/user/Library/Arduino15/packages/esp32/tools/esp-x32/2405/bin/xtensa-esp32s3-elf-g++ -c @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/cpp_flags -w -Os -Werror=return-type -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10607 -DARDUINO_ESP32S3_DEV -DARDUINO_ARCH_ESP32 -DARDUINO_BOARD="ESP32S3_DEV" -DARDUINO_VARIANT="esp32s3" -DARDUINO_PARTITION_default -DARDUINO_HOST_OS="macosx" -DARDUINO_FQBN="esp32:esp32:esp32s3:UploadSpeed=921600,USBMode=hwcdc,CDCOnBoot=default,MSCOnBoot=default,DFUOnBoot=default,UploadMode=default,CPUFreq=240,FlashMode=qio,FlashSize=4M,PartitionScheme=default,DebugLevel=none,PSRAM=disabled,LoopCore=1,EventsCore=1,EraseFlash=none,JTAGAdapter=default,ZigbeeMode=default" -DESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1 -DARDUINO_USB_MODE=1 -DARDUINO_USB_CDC_ON_BOOT=0 -DARDUINO_USB_MSC_ON_BOOT=0 -DARDUINO_USB_DFU_ON_BOOT=0 @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/defines -I/Users/user/projects/test_usb.ino -iprefix /Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/include/ @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/includes -I/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/qio_qspi/include -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/cores/esp32 -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/variants/esp32s3 -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/libraries/USB/src @/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/build_opt.h @/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/file_opts /Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/libraries/USB/src/USBHIDConsumerControl.cpp -o /dev/null
/Users/user/Library/Arduino15/packages/esp32/tools/esp-x32/2405/bin/xtensa-esp32s3-elf-g++ -c @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/cpp_flags -w -Os -Werror=return-type -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10607 -DARDUINO_ESP32S3_DEV -DARDUINO_ARCH_ESP32 -DARDUINO_BOARD="ESP32S3_DEV" -DARDUINO_VARIANT="esp32s3" -DARDUINO_PARTITION_default -DARDUINO_HOST_OS="macosx" -DARDUINO_FQBN="esp32:esp32:esp32s3:UploadSpeed=921600,USBMode=hwcdc,CDCOnBoot=default,MSCOnBoot=default,DFUOnBoot=default,UploadMode=default,CPUFreq=240,FlashMode=qio,FlashSize=4M,PartitionScheme=default,DebugLevel=none,PSRAM=disabled,LoopCore=1,EventsCore=1,EraseFlash=none,JTAGAdapter=default,ZigbeeMode=default" -DESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1 -DARDUINO_USB_MODE=1 -DARDUINO_USB_CDC_ON_BOOT=0 -DARDUINO_USB_MSC_ON_BOOT=0 -DARDUINO_USB_DFU_ON_BOOT=0 @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/defines -I/Users/user/projects/test_usb.ino -iprefix /Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/include/ @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/includes -I/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/qio_qspi/include -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/cores/esp32 -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/variants/esp32s3 -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/libraries/USB/src @/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/build_opt.h @/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/file_opts /Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/libraries/USB/src/USBHIDGamepad.cpp -o /dev/null
/Users/user/Library/Arduino15/packages/esp32/tools/esp-x32/2405/bin/xtensa-esp32s3-elf-g++ -c @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/cpp_flags -w -Os -Werror=return-type -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10607 -DARDUINO_ESP32S3_DEV -DARDUINO_ARCH_ESP32 -DARDUINO_BOARD="ESP32S3_DEV" -DARDUINO_VARIANT="esp32s3" -DARDUINO_PARTITION_default -DARDUINO_HOST_OS="macosx" -DARDUINO_FQBN="esp32:esp32:esp32s3:UploadSpeed=921600,USBMode=hwcdc,CDCOnBoot=default,MSCOnBoot=default,DFUOnBoot=default,UploadMode=default,CPUFreq=240,FlashMode=qio,FlashSize=4M,PartitionScheme=default,DebugLevel=none,PSRAM=disabled,LoopCore=1,EventsCore=1,EraseFlash=none,JTAGAdapter=default,ZigbeeMode=default" -DESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1 -DARDUINO_USB_MODE=1 -DARDUINO_USB_CDC_ON_BOOT=0 -DARDUINO_USB_MSC_ON_BOOT=0 -DARDUINO_USB_DFU_ON_BOOT=0 @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/defines -I/Users/user/projects/test_usb.ino -iprefix /Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/include/ @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/includes -I/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/qio_qspi/include -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/cores/esp32 -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/variants/esp32s3 -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/libraries/USB/src @/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/build_opt.h @/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/file_opts /Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/libraries/USB/src/USBHIDKeyboard.cpp -o /dev/null
/Users/user/Library/Arduino15/packages/esp32/tools/esp-x32/2405/bin/xtensa-esp32s3-elf-g++ -c @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/cpp_flags -w -Os -Werror=return-type -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10607 -DARDUINO_ESP32S3_DEV -DARDUINO_ARCH_ESP32 -DARDUINO_BOARD="ESP32S3_DEV" -DARDUINO_VARIANT="esp32s3" -DARDUINO_PARTITION_default -DARDUINO_HOST_OS="macosx" -DARDUINO_FQBN="esp32:esp32:esp32s3:UploadSpeed=921600,USBMode=hwcdc,CDCOnBoot=default,MSCOnBoot=default,DFUOnBoot=default,UploadMode=default,CPUFreq=240,FlashMode=qio,FlashSize=4M,PartitionScheme=default,DebugLevel=none,PSRAM=disabled,LoopCore=1,EventsCore=1,EraseFlash=none,JTAGAdapter=default,ZigbeeMode=default" -DESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1 -DARDUINO_USB_MODE=1 -DARDUINO_USB_CDC_ON_BOOT=0 -DARDUINO_USB_MSC_ON_BOOT=0 -DARDUINO_USB_DFU_ON_BOOT=0 @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/defines -I/Users/user/projects/test_usb.ino -iprefix /Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/include/ @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/includes -I/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/qio_qspi/include -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/cores/esp32 -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/variants/esp32s3 -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/libraries/USB/src @/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/build_opt.h @/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/file_opts /Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/libraries/USB/src/USBHIDMouse.cpp -o /dev/null
/Users/user/Library/Arduino15/packages/esp32/tools/esp-x32/2405/bin/xtensa-esp32s3-elf-g++ -c @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/cpp_flags -w -Os -Werror=return-type -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10607 -DARDUINO_ESP32S3_DEV -DARDUINO_ARCH_ESP32 -DARDUINO_BOARD="ESP32S3_DEV" -DARDUINO_VARIANT="esp32s3" -DARDUINO_PARTITION_default -DARDUINO_HOST_OS="macosx" -DARDUINO_FQBN="esp32:esp32:esp32s3:UploadSpeed=921600,USBMode=hwcdc,CDCOnBoot=default,MSCOnBoot=default,DFUOnBoot=default,UploadMode=default,CPUFreq=240,FlashMode=qio,FlashSize=4M,PartitionScheme=default,DebugLevel=none,PSRAM=disabled,LoopCore=1,EventsCore=1,EraseFlash=none,JTAGAdapter=default,ZigbeeMode=default" -DESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1 -DARDUINO_USB_MODE=1 -DARDUINO_USB_CDC_ON_BOOT=0 -DARDUINO_USB_MSC_ON_BOOT=0 -DARDUINO_USB_DFU_ON_BOOT=0 @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/defines -I/Users/user/projects/test_usb.ino -iprefix /Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/include/ @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/includes -I/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/qio_qspi/include -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/cores/esp32 -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/variants/esp32s3 -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/libraries/USB/src @/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/build_opt.h @/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/file_opts /Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/libraries/USB/src/USBHIDSystemControl.cpp -o /dev/null
/Users/user/Library/Arduino15/packages/esp32/tools/esp-x32/2405/bin/xtensa-esp32s3-elf-g++ -c @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/cpp_flags -w -Os -Werror=return-type -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10607 -DARDUINO_ESP32S3_DEV -DARDUINO_ARCH_ESP32 -DARDUINO_BOARD="ESP32S3_DEV" -DARDUINO_VARIANT="esp32s3" -DARDUINO_PARTITION_default -DARDUINO_HOST_OS="macosx" -DARDUINO_FQBN="esp32:esp32:esp32s3:UploadSpeed=921600,USBMode=hwcdc,CDCOnBoot=default,MSCOnBoot=default,DFUOnBoot=default,UploadMode=default,CPUFreq=240,FlashMode=qio,FlashSize=4M,PartitionScheme=default,DebugLevel=none,PSRAM=disabled,LoopCore=1,EventsCore=1,EraseFlash=none,JTAGAdapter=default,ZigbeeMode=default" -DESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1 -DARDUINO_USB_MODE=1 -DARDUINO_USB_CDC_ON_BOOT=0 -DARDUINO_USB_MSC_ON_BOOT=0 -DARDUINO_USB_DFU_ON_BOOT=0 @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/defines -I/Users/user/projects/test_usb.ino -iprefix /Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/include/ @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/includes -I/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/qio_qspi/include -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/cores/esp32 -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/variants/esp32s3 -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/libraries/USB/src @/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/build_opt.h @/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/file_opts /Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/libraries/USB/src/USBHIDVendor.cpp -o /dev/null
/Users/user/Library/Arduino15/packages/esp32/tools/esp-x32/2405/bin/xtensa-esp32s3-elf-g++ -c @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/cpp_flags -w -Os -Werror=return-type -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10607 -DARDUINO_ESP32S3_DEV -DARDUINO_ARCH_ESP32 -DARDUINO_BOARD="ESP32S3_DEV" -DARDUINO_VARIANT="esp32s3" -DARDUINO_PARTITION_default -DARDUINO_HOST_OS="macosx" -DARDUINO_FQBN="esp32:esp32:esp32s3:UploadSpeed=921600,USBMode=hwcdc,CDCOnBoot=default,MSCOnBoot=default,DFUOnBoot=default,UploadMode=default,CPUFreq=240,FlashMode=qio,FlashSize=4M,PartitionScheme=default,DebugLevel=none,PSRAM=disabled,LoopCore=1,EventsCore=1,EraseFlash=none,JTAGAdapter=default,ZigbeeMode=default" -DESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1 -DARDUINO_USB_MODE=1 -DARDUINO_USB_CDC_ON_BOOT=0 -DARDUINO_USB_MSC_ON_BOOT=0 -DARDUINO_USB_DFU_ON_BOOT=0 @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/defines -I/Users/user/projects/test_usb.ino -iprefix /Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/include/ @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/includes -I/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/qio_qspi/include -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/cores/esp32 -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/variants/esp32s3 -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/libraries/USB/src @/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/build_opt.h @/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/file_opts /Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/libraries/USB/src/USBMIDI.cpp -o /dev/null
/Users/user/Library/Arduino15/packages/esp32/tools/esp-x32/2405/bin/xtensa-esp32s3-elf-g++ -c @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/cpp_flags -w -Os -Werror=return-type -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10607 -DARDUINO_ESP32S3_DEV -DARDUINO_ARCH_ESP32 -DARDUINO_BOARD="ESP32S3_DEV" -DARDUINO_VARIANT="esp32s3" -DARDUINO_PARTITION_default -DARDUINO_HOST_OS="macosx" -DARDUINO_FQBN="esp32:esp32:esp32s3:UploadSpeed=921600,USBMode=hwcdc,CDCOnBoot=default,MSCOnBoot=default,DFUOnBoot=default,UploadMode=default,CPUFreq=240,FlashMode=qio,FlashSize=4M,PartitionScheme=default,DebugLevel=none,PSRAM=disabled,LoopCore=1,EventsCore=1,EraseFlash=none,JTAGAdapter=default,ZigbeeMode=default" -DESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1 -DARDUINO_USB_MODE=1 -DARDUINO_USB_CDC_ON_BOOT=0 -DARDUINO_USB_MSC_ON_BOOT=0 -DARDUINO_USB_DFU_ON_BOOT=0 @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/defines -I/Users/user/projects/test_usb.ino -iprefix /Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/include/ @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/includes -I/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/qio_qspi/include -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/cores/esp32 -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/variants/esp32s3 -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/libraries/USB/src @/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/build_opt.h @/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/file_opts /Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/libraries/USB/src/USBVendor.cpp -o /dev/null
Generating function prototypes...
/Users/user/Library/Arduino15/packages/esp32/tools/esp-x32/2405/bin/xtensa-esp32s3-elf-g++ -c @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/cpp_flags -w -Os -Werror=return-type -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10607 -DARDUINO_ESP32S3_DEV -DARDUINO_ARCH_ESP32 -DARDUINO_BOARD="ESP32S3_DEV" -DARDUINO_VARIANT="esp32s3" -DARDUINO_PARTITION_default -DARDUINO_HOST_OS="macosx" -DARDUINO_FQBN="esp32:esp32:esp32s3:UploadSpeed=921600,USBMode=hwcdc,CDCOnBoot=default,MSCOnBoot=default,DFUOnBoot=default,UploadMode=default,CPUFreq=240,FlashMode=qio,FlashSize=4M,PartitionScheme=default,DebugLevel=none,PSRAM=disabled,LoopCore=1,EventsCore=1,EraseFlash=none,JTAGAdapter=default,ZigbeeMode=default" -DESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1 -DARDUINO_USB_MODE=1 -DARDUINO_USB_CDC_ON_BOOT=0 -DARDUINO_USB_MSC_ON_BOOT=0 -DARDUINO_USB_DFU_ON_BOOT=0 @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/defines -I/Users/user/projects/test_usb.ino -iprefix /Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/include/ @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/includes -I/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/qio_qspi/include -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/cores/esp32 -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/variants/esp32s3 -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/libraries/USB/src @/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/build_opt.h @/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/file_opts /private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/sketch/test_usb.ino.ino.cpp -o /private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/383426782/sketch_merged.cpp
/Users/user/Library/Arduino15/packages/builtin/tools/ctags/5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives /private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/383426782/sketch_merged.cpp
Compiling sketch...
/Users/user/Library/Arduino15/packages/esp32/tools/esp-x32/2405/bin/xtensa-esp32s3-elf-g++ -MMD -c @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/cpp_flags -w -Os -Werror=return-type -DF_CPU=240000000L -DARDUINO=10607 -DARDUINO_ESP32S3_DEV -DARDUINO_ARCH_ESP32 "-DARDUINO_BOARD=\"ESP32S3_DEV\"" "-DARDUINO_VARIANT=\"esp32s3\"" -DARDUINO_PARTITION_default "-DARDUINO_HOST_OS=\"macosx\"" "-DARDUINO_FQBN=\"esp32:esp32:esp32s3:UploadSpeed=921600,USBMode=hwcdc,CDCOnBoot=default,MSCOnBoot=default,DFUOnBoot=default,UploadMode=default,CPUFreq=240,FlashMode=qio,FlashSize=4M,PartitionScheme=default,DebugLevel=none,PSRAM=disabled,LoopCore=1,EventsCore=1,EraseFlash=none,JTAGAdapter=default,ZigbeeMode=default\"" -DESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1 -DARDUINO_USB_MODE=1 -DARDUINO_USB_CDC_ON_BOOT=0 -DARDUINO_USB_MSC_ON_BOOT=0 -DARDUINO_USB_DFU_ON_BOOT=0 @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/defines -I/Users/user/projects/test_usb.ino -iprefix /Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/include/ @/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/flags/includes -I/Users/user/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-466a392a/esp32s3/qio_qspi/include -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/cores/esp32 -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/variants/esp32s3 -I/Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/libraries/USB/src @/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/build_opt.h @/private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/file_opts /private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/sketch/test_usb.ino.ino.cpp -o /private/var/folders/mw/g1t9swfn11g3q8cqvyl1y6nr0000gn/T/arduino/sketches/944B92B3C4EACF51BBE64D63195ED8F5/sketch/test_usb.ino.ino.cpp.o
/Users/user/projects/test_usb.ino/test_usb.ino.ino:10:1: error: 'void usbEventCallback(void*, esp_event_base_t, int32_t, void*)' was declared 'extern' and later 'static' [-fpermissive]
   10 | usbEventCallback(void*            arg,
      | ^~~~~~~~~~~~~~~~
/Users/user/projects/test_usb.ino/test_usb.ino.ino:8:6: note: previous declaration of 'void usbEventCallback(void*, esp_event_base_t, int32_t, void*)'
    8 | 
      |      ^               

Using library USB at version 3.1.0 in folder: /Users/user/Library/Arduino15/packages/esp32/hardware/esp32/3.1.0-RC1/libraries/USB 
exit status 1

Compilation error: 'void usbEventCallback(void*, esp_event_base_t, int32_t, void*)' was declared 'extern' and later 'static' [-fpermissive]

@SuGlider
Copy link
Collaborator

SuGlider commented Sep 9, 2024

Compilation error: 'void usbEventCallback(void*, esp_event_base_t, int32_t, void*)' was declared 'extern' and later 'static' [-fpermissive]

This error also ocours within Arduino Core 3.0.4.
In order to fix it, just remove static from the declaration in the sketch.

@TheCrypt0
Copy link
Author

You are right, I can now compile but the output is still as follows without any reference to CapsLock, etc.

Hello World!
Hello World!
Hello World!

@SuGlider
Copy link
Collaborator

SuGlider commented Sep 9, 2024

This is the log with 3.0.4 and 3.1.0-RC. It seems to send the report, but it gets no report back from USB Host.
I'm investigating the issue. I see that my PC gets pressing/releasing CAPS Lock key.

Hello World!
[ 31718][E][USBHID.cpp:347] SendReport(): not ready
[ 32723][E][USBHID.cpp:347] SendReport(): not ready
Hello World!
USB UNPLUGGED
[ 34728][E][USBHID.cpp:347] SendReport(): not ready
[ 35733][E][USBHID.cpp:347] SendReport(): not ready
Hello World!
USB PLUGGED
[ 37516][V][USBHID.cpp:240] tud_hid_set_idle_cb(): instance: 0, idle_rate:0
[ 37524][V][USBHID.cpp:219] tud_hid_descriptor_report_cb(): instance: 0
[ 37531][D][USBHID.cpp:176] tinyusb_load_enabled_hid_devices(): Loaded HID Descriptor with the following reports:
[ 37541][D][USBHID.cpp:179] tinyusb_load_enabled_hid_devices():   ID:   1, Type:   INPUT, Size:  8, Usage: KEYBOARD
[ 37551][D][USBHID.cpp:179] tinyusb_load_enabled_hid_devices():   ID:   1, Type:  OUTPUT, Size:  1, Usage: KEYBOARD
[ 37577][D][USBHID.cpp:270] tud_hid_set_report_cb(): instance: 0, report_id: 0, report_type: OUTPUT, bufsize: 2
[ 37740][D][USBHID.cpp:270] tud_hid_set_report_cb(): instance: 0, report_id: 0, report_type: OUTPUT, bufsize: 2
[ 38227][D][USBHID.cpp:270] tud_hid_set_report_cb(): instance: 0, report_id: 0, report_type: OUTPUT, bufsize: 2
[ 38259][D][USBHID.cpp:270] tud_hid_set_report_cb(): instance: 0, report_id: 0, report_type: OUTPUT, bufsize: 2
[ 38291][D][USBHID.cpp:270] tud_hid_set_report_cb(): instance: 0, report_id: 0, report_type: OUTPUT, bufsize: 2
[ 38339][D][USBHID.cpp:270] tud_hid_set_report_cb(): instance: 0, report_id: 0, report_type: OUTPUT, bufsize: 2
[ 38371][D][USBHID.cpp:270] tud_hid_set_report_cb(): instance: 0, report_id: 0, report_type: OUTPUT, bufsize: 2
[ 38405][D][USBHID.cpp:270] tud_hid_set_report_cb(): instance: 0, report_id: 0, report_type: OUTPUT, bufsize: 2
[ 38438][D][USBHID.cpp:270] tud_hid_set_report_cb(): instance: 0, report_id: 0, report_type: OUTPUT, bufsize: 2
[ 38466][D][USBHID.cpp:270] tud_hid_set_report_cb(): instance: 0, report_id: 0, report_type: OUTPUT, bufsize: 2
[ 38498][D][USBHID.cpp:270] tud_hid_set_report_cb(): instance: 0, report_id: 0, report_type: OUTPUT, bufsize: 2
[ 38530][D][USBHID.cpp:270] tud_hid_set_report_cb(): instance: 0, report_id: 0, report_type: OUTPUT, bufsize: 2
[ 38562][D][USBHID.cpp:270] tud_hid_set_report_cb(): instance: 0, report_id: 0, report_type: OUTPUT, bufsize: 2
[ 38595][D][USBHID.cpp:270] tud_hid_set_report_cb(): instance: 0, report_id: 0, report_type: OUTPUT, bufsize: 2
[ 38626][D][USBHID.cpp:270] tud_hid_set_report_cb(): instance: 0, report_id: 0, report_type: OUTPUT, bufsize: 2
[ 38678][D][USBHID.cpp:270] tud_hid_set_report_cb(): instance: 0, report_id: 0, report_type: OUTPUT, bufsize: 2
[ 38692][D][USBHID.cpp:270] tud_hid_set_report_cb(): instance: 0, report_id: 0, report_type: OUTPUT, bufsize: 2
[ 38722][D][USBHID.cpp:270] tud_hid_set_report_cb(): instance: 0, report_id: 0, report_type: OUTPUT, bufsize: 2
Hello World!

@TheCrypt0
Copy link
Author

Yep, I can confirm sending the HID Code works, it's just the report back from the USB Host not working.

@SuGlider
Copy link
Collaborator

SuGlider commented Sep 9, 2024

Apparently, PR #6964 has introduced the problem into Arduno Core 3.0.x
This is the only differnce from Core 2.0.17 and Core 3.0.0.

@VojtechBartoska VojtechBartoska added this to the 3.0.5 milestone Sep 10, 2024
@VojtechBartoska VojtechBartoska added Status: In Progress ⚠️ Issue is in progress and removed Status: Awaiting triage Issue is waiting for triage labels Sep 10, 2024
@SuGlider
Copy link
Collaborator

Investigation demonstrates that reverting PR #6954 doesn't change/solve the issue.
Arduino Core 3.0.0-RC1 works correctly, but Core 3.0.0-RC2 doesn't.

Something else in the TinyUSB implementation may have changed.

@TheCrypt0
Copy link
Author

@SuGlider

Just tested and I can confirm Arduino Core 3.0.0-RC1 works correctly.

@SuGlider
Copy link
Collaborator

There is something different from the TinyUSB Lib from RC1 to RC2.
RC1 can detect that the USB port is already connected and the sketch works right away.
RC2 says it is not ready and it can't detect that USB is already plugged.

The function tud_hid_n_ready(0) returns always false. I have to unplug and then plug it back.

@SuGlider
Copy link
Collaborator

SuGlider commented Sep 10, 2024

@TheCrypt0 | @me-no-dev
OK. The issue lays on Hathach/TinyUSB commit used to create libarduino_tinyusb.a file.

When I use commit https://github.com/hathach/tinyusb/commits/0877a486c to build the ESP32 Arduino libraties, it works.
This is the commit from 3.0.0-RC1.

After 3.0.0-RC2, Lib Builder is using whatever found in master branch, which causes the current issue.

@me-no-dev - I think that we shall not use https://github.com/hathach/tinyusb anymore.
We shall start using https://github.com/espressif/tinyusb/tree/release/v0.15 instead.

I'll work on a PR for Arduino Lib Builder script https://github.com/espressif/esp32-arduino-lib-builder/blob/master/tools/update-components.sh

@me-no-dev
Copy link
Member

Let's figure it out and report it to @hathach . I am partial about not using upstream TinyUSB

@TheCrypt0
Copy link
Author

@SuGlider | @me-no-dev

I did some tests myself based on SuGlider's discoveries and I found 2 different issues that IMO should not be mixed. My setup for production firmware is not standard but I'll try my best to explain it.

I have a platformio project running pioarduino Arduino core 3.1.0 rc1 based on IDF 5.3.0+, I use arduino as an IDF component so I had to include arduino-tinyusb as component and tinyusb repo as submodule to use the functionalities.

This allows me to manually select the tinyusb commit I want to use for the project, and not be dependent on the Arduino Core version.

What I found is pretty interesting.

By going back to a previous commit in the tinyusb submodule (a0e5626bc5), I get the following compiling errors in USBHIDMouse:

/Users/crypto/.platformio/packages/framework-arduinoespressif32/libraries/USB/src/USBHIDMouse.cpp:68:118: error: expected primary-expression before ')' token
   68 | static const uint8_t abs_mouse_report_descriptor[] = {TUD_HID_REPORT_DESC_ABSMOUSE(HID_REPORT_ID(HID_REPORT_ID_MOUSE))};
      |                                                                                                                      ^
/Users/crypto/.platformio/packages/framework-arduinoespressif32/libraries/USB/src/USBHIDMouse.cpp:68:55: error: 'TUD_HID_REPORT_DESC_ABSMOUSE' was not declared in this scope; did you mean 'TUD_HID_REPORT_DESC_MOUSE'?
   68 | static const uint8_t abs_mouse_report_descriptor[] = {TUD_HID_REPORT_DESC_ABSMOUSE(HID_REPORT_ID(HID_REPORT_ID_MOUSE))};
      |                                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                       TUD_HID_REPORT_DESC_MOUSE
/Users/crypto/.platformio/packages/framework-arduinoespressif32/libraries/USB/src/USBHIDMouse.cpp:70:124: error: 'hid_abs_mouse_report_t' was not declared in this scope; did you mean 'hid_mouse_report_t'?
   70 | HIDMouseType_t HIDMouseAbs = {HID_MOUSE_ABSOLUTE, abs_mouse_report_descriptor, sizeof(abs_mouse_report_descriptor), sizeof(hid_abs_mouse_report_t)};
      |                                                                                                                            ^~~~~~~~~~~~~~~~~~~~~~
      |                                                                                                                            hid_mouse_report_t

Not a big deal, I just commented out the problematic parts and went on with the build process.

What's interesting is that the code works fine and the HID reports comes back successfully, I can actually check the CapsLock, NumLock, etc. status. This is with Arduino Core 3.1.0 RC1 and tinyusb a0e5626bc5.

But the problem @SuGlider noticed is still present:

There is something different from the TinyUSB Lib from RC1 to RC2.
RC1 can detect that the USB port is already connected and the sketch works right away.
RC2 says it is not ready and it can't detect that USB is already plugged.

The function tud_hid_n_ready(0) returns always false. I have to unplug and then plug it back.

This happens to my setup too, even though the other issue seems to not happen anymore. This tell me, that the issue with the NumLock, CapsLock, etc. could be tinyusb related, but the other problem might have been introduced with the latest Arduino release.

I hope this helps clarify things up, if you have some other suggestion for tests please let me know!

@me-no-dev
Copy link
Member

I don't think we have introduced either problem in Arduino. If the issue persists with our libs and 3.1.0-RC1, that means that it's not caused by the different DCD that we used. I would guess that the changes are in TinyUSB's HID module. There is a versions.txt file in each release's libs package that shows which commit was used in TinyUSB.

@SuGlider as far as I understand in 3.0.0-RC1 is broken the callback for the LEDs and in 3.0.0-RC2 tud_hid_n_ready starts returning false. Do I get this correct?

@SuGlider
Copy link
Collaborator

SuGlider commented Sep 11, 2024

@SuGlider as far as I understand in 3.0.0-RC1 is broken the callback for the LEDs and in 3.0.0-RC2 tud_hid_n_ready starts returning false. Do I get this correct?

All problems started with 3.0.0-RC2 forward:

  1. Using HID Keyboard, Host sends back the LED status and it is caught by 3.0.0-RC1 but not by any other latter version RC2, RC3, 3.0.0 up to 3.04 and neither with 3.1.0-RC1.
  2. Once USB is already plugged in, RC1 detects it correctly with tud_hid_n_ready (using HID Lib), but it doesn't work anymore with 3.0.0-RC2 forward / 3.1.0-RC1.

When I build 3.0.4 using Hathach TinyUSB commit from nov/2023, it works fine again.
This leads me to think that master branch TinyUSB has broken ESP32 Arduino USB Library.

ESP-IDF uses a specific working branch which is a fork from Hathach (https://github.com/espressif/tinyusb/tree/release/v0.15) .
It has new commits on top of some past commit/state, but it has not been merged into Hatchach repository yet.

@me-no-dev
Copy link
Member

@hathach does any of this ring a bell?

@TheCrypt0
Copy link
Author

@me-no-dev @hathach Any news on this?

@SuGlider
Copy link
Collaborator

SuGlider commented Oct 2, 2024

investigation is on going this week.

@me-no-dev
Copy link
Member

We tried to find the offending commit, but we have failed. Since @hathach is not responding here, it seems only fair to submit an issue in the TinyUSB repository and let it be handled over there. We need to stay on top of TinyUSB in order to have support for the upcoming ESP32-P4. @TheCrypt0 please file an issue in https://github.com/hathach/tinyusb

@me-no-dev
Copy link
Member

I found a workaround. The way that output reports were sent has changed. Fix is in the PR mentioned above

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Status: In Progress ⚠️ Issue is in progress
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants