-
Notifications
You must be signed in to change notification settings - Fork 7.5k
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 serial and USB HID stall when DTR is activated a second time #9582
Comments
Is this about USB Serial Device (CDC-ACM) signals? |
@ChrGri - please keep in mind that DTR and RTS signals of the USB CDC port actually control "reset" and "boot mode" signals of the ESP32-S3. |
It may be putting the S3 into download mode... "freezing/halting" the S3 firmware execution... |
@ChrGri - Please read this: #6762 (comment) |
This behaviour can be disabled permanently by burning the correct eFuse. |
@SuGlider Thank you very much. I understood, that to enter the download mode on a regular ESP, one has to execute a specific DTR/RTS sequence, as shown below From the documentation you referenced, I understood that only the download mode flag is toggled, but the chip is never asked to reset:
BR |
I see that you are using PlatformIO. What is the Arduino Core version used with it? |
I've changed the platformIO as shown below. No difference. You can find the sample code here. I've played around with BR |
I understand that your project uses USB OTG and TinyUSB for both, HID and CDC. It may be necessary to run a deep investigation of this issue. |
Yes, CDC and HID. Do you have an idea, why Is there something I can to help to find a proper fix? Edit: BR |
I'd need to analyse it better and try to understand why it could fail. Regarding Arduino has a 1 ms time slice defined for FreeRTOS. It is necessary to see the whole picture and try to understand the sequence of actions and possible reasons for the issue. |
Just want to report that 2.0.17 behaves identical. |
@SuGlider I dont want to bother you, but is there something I can do to accelerate the investigation? Btw. I see serial stall even with deactivated HID output after longer period of time. So serial over USB CDC alone seem to be sufficient to make the communication stall. |
When DTR is activated, by the second time, the S3 detects It as a "enter in boot mode", which is described in the Technical Reference Manual. This state halts the processing and forces the S3 to enter in Boot Mode. Arduino or any software loaded into the S3 can't change such behavior. This is a ROM functionality. I think that it may be possible to burn an eFuse of the S3 to disable such behavior. |
There is a way to check if the S3 enters in Boot Mode by connecting another terminal application to the UART0 output and check the messages ROM will output when DTR is activated. |
Thank you @SuGlider You already explained the RTS/DTR logic above. The remaining issue is, that the serial output stalls after a while, see #9582 (comment) I initially thought that serial transmission only stalls, when CDC and HID output is activated, but it seams to stall when only CDC is activcated too. |
Would it be possible for you to post a basic sketch with detailed explanation in order to help me to reproduce the CDC stalling? Thanks. |
For sure. A sample script was posted here: |
The issue is also only with CDC, right? How should I reproduce the CDC issue? |
@SuGlider Did you had a chance to look into the HID+CDC example already? Edit: |
Hi @ChrGri - I just returned from vacation. This is in my list of work. Please give me a week and I'll test it. |
Then welcome back. Hope you had a good vacation too! To make your life as easy as possible, I'll add a test description below.
The expected behaviour is that CDC and HID output streams are stable and don't collapse. |
@SuGlider any updates? |
@SuGlider Anything I can do to help? |
The main issue was described. The cdc+hid issue will be tracked here. |
Board
ESP32 S3 dev
ESP32 S3 DevKitC 1 N16R8 ESP32 S3 WROOM1 N16R8 Entwicklungsboard WiFi Bluetooth 5.0 Mesh Entwicklungsboard https://amzn.eu/d/iAX62Sv
Device Description
esp32-s3-devkitc-1
The platformIO file can be found in the code section.
Hardware Configuration
USBOTG connection to PC
Version
latest master (checkout manually)
IDE Name
PlatformIO
Operating System
Win 11
Flash frequency
PSRAM enabled
no
Upload speed
Description
ESP32 S3 runs simple program that should provided USB HID gamepad and serial messages via USB OTG port. Im using the Windows inbuilt USB gamecontroller program to monitor the gamepad data and this serial monitor app to monitor the serial messages. The serial monitor app allows to set the DTR/RTS states manually, by pressing the red marked software buttons
The first activation of DTR enables the serial output as expected. When DTR is disabled, USB HID output continiues, which is also expected. But, when DTR is activated a second time, USB HID and serial output stall, which is not as expected.
DtrProblem.mp4
Apart from that, when serial and USB HID output are activated, both will stall after a while, see.
Sketch
Can be found here: https://github.com/ChrGri/DIY-Sim-Racing-FFB-Pedal/tree/develop/Validation/Joystick_Serial_test
Debug Message
Other Steps to Reproduce
I have checked existing issues, online documentation and the Troubleshooting Guide
The text was updated successfully, but these errors were encountered: