You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
NOTE: I already posted this issue on arduino-esp32 but since the TinyUSB driver integration happens in this repo, I figured this could be reposted here and it might spark an interesting conversation and maybe some ideas for a workaround. :)
I'm currently building a USB keyboard using the ESP32-S3 and when upgrading to the latest Arduino Core (3.0.0-3.0.4), 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.
Is this is something already known or do you know any workaround I could implement?
Sketch
#include<USB.h>
#include<USBCDC.h>
#include<USBHIDKeyboard.h>
USBHIDKeyboard m_keyboard;
USBCDC m_serial;
ESPUSB* m_usb;
staticvoidusbEventCallback(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;
}
} elseif (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;
}
} elseif (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;
}
}
}
voidsetup()
{
// 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();
}
voidloop()
{
// 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...
Board
ESP32-S3
Device Description
Custom ESP32-S3 keyboard but it should work on any ESP32-S3 devkit with USB connection.
Version
v3.0.4
IDE Name
Arduino IDE
Operating System
macOS 14.6.1
Flash frequency
80MHz
PSRAM enabled
no
Upload speed
921600
The text was updated successfully, but these errors were encountered:
NOTE: I already posted this issue on arduino-esp32 but since the TinyUSB driver integration happens in this repo, I figured this could be reposted here and it might spark an interesting conversation and maybe some ideas for a workaround. :)
I'm currently building a USB keyboard using the ESP32-S3 and when upgrading to the latest Arduino Core (3.0.0-3.0.4), 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.
Is this is something already known or do you know any workaround I could implement?
Sketch
Debug Message
Board
ESP32-S3
Device Description
Custom ESP32-S3 keyboard but it should work on any ESP32-S3 devkit with USB connection.
Version
v3.0.4
IDE Name
Arduino IDE
Operating System
macOS 14.6.1
Flash frequency
80MHz
PSRAM enabled
no
Upload speed
921600
The text was updated successfully, but these errors were encountered: