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

Native USB CDC hangs up on ESP32-S2 after about 320 characters #6221

Open
1 task done
technoblogy opened this issue Feb 1, 2022 · 127 comments · Fixed by #6413
Open
1 task done

Native USB CDC hangs up on ESP32-S2 after about 320 characters #6221

technoblogy opened this issue Feb 1, 2022 · 127 comments · Fixed by #6413
Assignees
Labels
Area: ESP-IDF related ESP-IDF related issues Chip: ESP32-S2 Issue is related to support of ESP32-S2 Chip Status: Needs investigation We need to do some research before taking next steps on this issue Type: Bug 🐛 All bugs
Milestone

Comments

@technoblogy
Copy link

technoblogy commented Feb 1, 2022

Board

Adafruit QT-Py ESP32-S2

Device Description

Plain board.

Hardware Configuration

No.

Version

v2.0.2

IDE Name

Arduino IDE

Operating System

macOS 10.13.6

Flash frequency

80MHz

PSRAM enabled

yes

Upload speed

921600

Description

Entering text into the Serial Monitor causes the Serial to hang up after about 320 characters. Run the following sketch, then cut and paste all the following text (total 512 characters) into the Serial Monitor input field, and press Return:

$0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
$0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
$0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
$0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
$0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
$0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
$0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
$0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

The Serial Monitor prints:

64
128
192
256
320

ie it hangs up after 320 characters and doesn't reach 512.

NB I've implemented the patch suggested by @SuGlider from PR #6133 in Issue #6205.

Sketch

void setup() {  
  Serial.begin(9600);
}

int Count = 0;

void loop (void) {
  if (Serial.available()) {
    Serial.read(); Count++;
    if (Count % 64 == 0) Serial.println(Count);
  }
}

Debug Message

No debug output.

Other Steps to Reproduce

Also tested on UM FeatherS2 - hangs up in the same way.

Works fine on ESP32-C3 DevKit and Adafruit ESP32 Feather.

I've tried adding Serial.setRxBufferSize(1024) but has no effect.

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

  • I confirm I have checked existing issues, online documentation and Troubleshooting guide.
@technoblogy technoblogy added the Status: Awaiting triage Issue is waiting for triage label Feb 1, 2022
@SuGlider SuGlider self-assigned this Feb 1, 2022
@SuGlider
Copy link
Collaborator

SuGlider commented Feb 1, 2022

@technoblogy
I have tested it with ESP32, ESP32-C3 and ESP32-S2 (Saola) - using the latest Github version (git checkout master).
I've tested it with 300, 4800, 9600, 38400, 57600, 115200 and 230400 baud.
All of them reached 512.

Could you test it with the complete latest Arduino Core Version?

Please let me know.
Thanks!

Results with ESP-ROM version information - using 115200 baud for reading the boot messages

ESP-ROM:esp32s2-rc4-20191025
Build:Oct 25 2019
rst:0x1 (POWERON),boot:0x8 (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:1
load:0x3ffe6100,len:0x510
load:0x4004c000,len:0xa50
load:0x40050000,len:0x28bc
entry 0x4004c18c
64
128
192
256
320
384
448
512

@SuGlider SuGlider added Resolution: More info needed More info must be provided in this issue and removed Status: Awaiting triage Issue is waiting for triage labels Feb 1, 2022
@technoblogy
Copy link
Author

Could you test it with the complete latest Arduino Core Version?

@SuGlider I'm not quite sure how to do this. If I download arduino-esp32-master it's not in a form that I can put in /library/Arduino15/packages. Can you point me to some instructions?

@SuGlider
Copy link
Collaborator

SuGlider commented Feb 2, 2022

@technoblogy
You can add a new set of ESP boards from github.
Follow this instructions

This is how it will look like:
image

You shall see ESP32 Arduino (in sketchbook) in the Menu-->Tools-->Board.

@technoblogy
Copy link
Author

I installed from the development link:

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json

Is that correct? It still seems to be version 2.0.2.

@SuGlider
Copy link
Collaborator

SuGlider commented Feb 5, 2022

@technoblogy
The idea is to create a folder under your regular sketch Arduino, i.e. ~/Arduino/hardware/espressif/esp32 and clone the current repository into this folder.

These are the commands for Linux:

cd <Your Arduino Sketch folder>
mkdir hardware
cd hardware
mkdir espressif
cd espressif
git clone --recursive https://github.com/espressif/arduino-esp32 esp32

After cloning the master branch into esp32, it is necessary to run esp32/tools/get.py (or get.exe for Windows).
Then restart your Arduino IDE and you will see the new board ESP32 Arduino (in sketchbook) in the Board Menu.
Open it and select your ESP32 board. This will compile to the lastest ESP32 GitHub version.

To update the GitHub in you computer, just go to the esp32 folder in <Your Arduino Sketch folder>/hardware/espressif/esp32 and run git pull. No need to run get.py again - run it once, in the first time.

@technoblogy
Copy link
Author

Thanks - I'll try it.

@technoblogy
Copy link
Author

@SuGlider I followed your instructions which worked without error, but when I try to compile I get:

fork/exec /Users/david/Documents/Arduino/hardware/espressif/esp32/tools/xtensa-esp32-elf/bin/xtensa-esp32-elf-g++: no such file or directory

I can see that file, but it's in the path:

/Users/david/Documents/Arduino/hardware/espressif/xtensa-esp32-elf/bin/xtensa-esp32-elf-g++

@SuGlider
Copy link
Collaborator

SuGlider commented Feb 5, 2022

Did you also run get.py?

@technoblogy
Copy link
Author

Yes, and it ran without errors.

@me-no-dev
Copy link
Member

me-no-dev commented Feb 5, 2022

ha! could you post a log from get.py?

@technoblogy
Copy link
Author

Log from get.py:

Phobos-309:espressif david$ esp32/tools/get.py
System: Darwin, Bits: 64, Info: Darwin-17.7.0-x86_64-i386-64bit
Platform: x86_64-apple-darwin
Downloading riscv32-esp-elf-gcc8_4_0-esp-2021r2-macos.tar.gz ...
Done
Extracting riscv32-esp-elf-gcc8_4_0-esp-2021r2-macos.tar.gz ...
Downloading xtensa-esp32-elf-gcc8_4_0-esp-2021r2-macos.tar.gz ...
Done
Extracting xtensa-esp32-elf-gcc8_4_0-esp-2021r2-macos.tar.gz ...
Downloading xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-macos.tar.gz ...
Done
Extracting xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-macos.tar.gz ...
Downloading esptool-3.1.0-macos.tar.gz ...
Done
Extracting esptool-3.1.0-macos.tar.gz ...
Downloading x86_64-apple-darwin14.mklittlefs-c41e51a.200706.tar.gz ...
Done
Extracting x86_64-apple-darwin14.mklittlefs-c41e51a.200706.tar.gz ...
Downloading mkspiffs-0.2.3-arduino-esp32-osx.tar.gz ...
Done
Extracting mkspiffs-0.2.3-arduino-esp32-osx.tar.gz ...
Renaming mkspiffs-0.2.3-arduino-esp32-osx to mkspiffs ...
Platform Tools Installed
Phobos-309:espressif david$ 

@SuGlider
Copy link
Collaborator

SuGlider commented Feb 6, 2022

Ok. It seems fine.
So the error you get is from Arduino IDE?
Can you post the complete log?

@technoblogy
Copy link
Author

Complete log:

/Applications/Arduino.app/Contents/Java/arduino-builder -dump-prefs -logger=machine -hardware /Applications/Arduino.app/Contents/Java/hardware -hardware /Users/david/Library/Arduino15/packages -hardware /Users/david/Documents/Arduino/hardware -tools /Applications/Arduino.app/Contents/Java/tools-builder -tools /Applications/Arduino.app/Contents/Java/hardware/tools/avr -tools /Users/david/Library/Arduino15/packages -built-in-libraries /Applications/Arduino.app/Contents/Java/libraries -libraries /Users/david/Documents/Arduino/libraries -fqbn=espressif:esp32:esp32:PSRAM=disabled,PartitionScheme=default,CPUFreq=240,FlashMode=qio,FlashFreq=80,FlashSize=4M,UploadSpeed=921600,LoopCore=1,EventsCore=1,DebugLevel=none -vid-pid=239A_80AB -ide-version=10813 -build-path /var/folders/fd/7rbn3jxx5j942sk5kn0vhb740000gn/T/arduino_build_266758 -warnings=all -prefs=build.warn_data_percentage=75 -verbose /Users/david/Documents/Arduino/SerialTestESP32-S2/SerialTestESP32-S2.ino
/Applications/Arduino.app/Contents/Java/arduino-builder -compile -logger=machine -hardware /Applications/Arduino.app/Contents/Java/hardware -hardware /Users/david/Library/Arduino15/packages -hardware /Users/david/Documents/Arduino/hardware -tools /Applications/Arduino.app/Contents/Java/tools-builder -tools /Applications/Arduino.app/Contents/Java/hardware/tools/avr -tools /Users/david/Library/Arduino15/packages -built-in-libraries /Applications/Arduino.app/Contents/Java/libraries -libraries /Users/david/Documents/Arduino/libraries -fqbn=espressif:esp32:esp32:PSRAM=disabled,PartitionScheme=default,CPUFreq=240,FlashMode=qio,FlashFreq=80,FlashSize=4M,UploadSpeed=921600,LoopCore=1,EventsCore=1,DebugLevel=none -vid-pid=239A_80AB -ide-version=10813 -build-path /var/folders/fd/7rbn3jxx5j942sk5kn0vhb740000gn/T/arduino_build_266758 -warnings=all -prefs=build.warn_data_percentage=75 -verbose /Users/david/Documents/Arduino/SerialTestESP32-S2/SerialTestESP32-S2.ino
Using board 'esp32' from platform in folder: /Users/david/Documents/Arduino/hardware/espressif/esp32
Using core 'esp32' from platform in folder: /Users/david/Documents/Arduino/hardware/espressif/esp32
bash -c "[ ! -f \"/Users/david/Documents/Arduino/SerialTestESP32-S2\"/partitions.csv ] || cp -f \"/Users/david/Documents/Arduino/SerialTestESP32-S2\"/partitions.csv \"/var/folders/fd/7rbn3jxx5j942sk5kn0vhb740000gn/T/arduino_build_266758\"/partitions.csv"
bash -c "[ -f \"/var/folders/fd/7rbn3jxx5j942sk5kn0vhb740000gn/T/arduino_build_266758\"/partitions.csv ] || [ ! -f \"/Users/david/Documents/Arduino/hardware/espressif/esp32/variants/esp32\"/partitions.csv ] || cp \"/Users/david/Documents/Arduino/hardware/espressif/esp32/variants/esp32\"/partitions.csv \"/var/folders/fd/7rbn3jxx5j942sk5kn0vhb740000gn/T/arduino_build_266758\"/partitions.csv"
bash -c "[ -f \"/var/folders/fd/7rbn3jxx5j942sk5kn0vhb740000gn/T/arduino_build_266758\"/partitions.csv ] || cp \"/Users/david/Documents/Arduino/hardware/espressif/esp32\"/tools/partitions/default.csv \"/var/folders/fd/7rbn3jxx5j942sk5kn0vhb740000gn/T/arduino_build_266758\"/partitions.csv"
bash -c "[ -f \"/Users/david/Documents/Arduino/SerialTestESP32-S2\"/bootloader.bin ] && cp -f \"/Users/david/Documents/Arduino/SerialTestESP32-S2\"/bootloader.bin \"/var/folders/fd/7rbn3jxx5j942sk5kn0vhb740000gn/T/arduino_build_266758\"/SerialTestESP32-S2.ino.bootloader.bin || ( [ -f \"/Users/david/Documents/Arduino/hardware/espressif/esp32/variants/esp32\"/bootloader.bin ] && cp \"/Users/david/Documents/Arduino/hardware/espressif/esp32/variants/esp32\"/bootloader.bin \"/var/folders/fd/7rbn3jxx5j942sk5kn0vhb740000gn/T/arduino_build_266758\"/SerialTestESP32-S2.ino.bootloader.bin || cp -f \"/Users/david/Documents/Arduino/hardware/espressif/esp32\"/tools/sdk/esp32/bin/bootloader_qio_80m.bin \"/var/folders/fd/7rbn3jxx5j942sk5kn0vhb740000gn/T/arduino_build_266758\"/SerialTestESP32-S2.ino.bootloader.bin )"
bash -c "[ ! -f \"/Users/david/Documents/Arduino/SerialTestESP32-S2\"/build_opt.h ] || cp -f \"/Users/david/Documents/Arduino/SerialTestESP32-S2\"/build_opt.h \"/var/folders/fd/7rbn3jxx5j942sk5kn0vhb740000gn/T/arduino_build_266758\"/build_opt.h"
bash -c "[ -f \"/var/folders/fd/7rbn3jxx5j942sk5kn0vhb740000gn/T/arduino_build_266758\"/build_opt.h ] || touch \"/var/folders/fd/7rbn3jxx5j942sk5kn0vhb740000gn/T/arduino_build_266758\"/build_opt.h"
Detecting libraries used...
/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/xtensa-esp32-elf/bin/xtensa-esp32-elf-g++ -DHAVE_CONFIG_H "-DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\"" -DUNITY_INCLUDE_CONFIG_H -DWITH_POSIX -D_GNU_SOURCE "-DIDF_VER=\"v4.4-beta1-308-gf3e0c8bc41\"" -DESP_PLATFORM -D_POSIX_READER_WRITER_LOCKS -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/config -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/newlib/platform_include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/freertos/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/freertos/include/esp_additions/freertos -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/freertos/port/xtensa/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/freertos/include/esp_additions -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_hw_support/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_hw_support/include/soc -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_hw_support/include/soc/esp32 -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_hw_support/port/esp32 -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/heap/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/log/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/lwip/include/apps -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/lwip/include/apps/sntp -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/lwip/lwip/src/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/lwip/port/esp32/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/lwip/port/esp32/include/arch -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/soc/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/soc/esp32 -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/soc/esp32/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/hal/esp32/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/hal/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/hal/platform_port/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_rom/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_rom/include/esp32 -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_rom/esp32 -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_common/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_system/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_system/port/soc -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_system/port/public_compat -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp32/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/xtensa/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/xtensa/esp32/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/driver/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/driver/esp32/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_pm/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_ringbuf/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/efuse/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/efuse/esp32/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/vfs/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_wifi/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_event/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_netif/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_eth/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/tcpip_adapter/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_phy/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_phy/esp32/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_ipc/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/app_trace/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_timer/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/mbedtls/port/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/mbedtls/mbedtls/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/mbedtls/esp_crt_bundle/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/app_update/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/spi_flash/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/bootloader_support/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/nvs_flash/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/pthread/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_gdbstub/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_gdbstub/xtensa -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_gdbstub/esp32 -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/espcoredump/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/espcoredump/include/port/xtensa -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/wpa_supplicant/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/wpa_supplicant/port/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/wpa_supplicant/esp_supplicant/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/ieee802154/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/console -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/asio/asio/asio/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/asio/port/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/bt/common/osi/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/bt/include/esp32/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/bt/common/api/include/api -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/bt/common/btc/profile/esp/blufi/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/bt/common/btc/profile/esp/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/bt/host/bluedroid/api/include/api -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/cbor/port/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/unity/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/unity/unity/src -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/cmock/CMock/src -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/coap/port/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/coap/libcoap/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/nghttp/port/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/nghttp/nghttp2/lib/includes -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-tls -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-tls/esp-tls-crypto -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_adc_cal/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_hid/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/tcp_transport/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_http_client/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_http_server/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_https_ota/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_lcd/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_lcd/interface -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/protobuf-c/protobuf-c -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/protocomm/include/common -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/protocomm/include/security -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/protocomm/include/transports -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/mdns/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_local_ctrl/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/sdmmc/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_serial_slave_link/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_websocket_client/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/expat/expat/expat/lib -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/expat/port/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/wear_levelling/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/fatfs/diskio -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/fatfs/vfs -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/fatfs/src -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/freemodbus/common/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/idf_test/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/idf_test/include/esp32 -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/jsmn/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/json/cJSON -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/libsodium/libsodium/src/libsodium/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/libsodium/port_include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/mqtt/esp-mqtt/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/openssl/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/perfmon/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/spiffs/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/ulp/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/wifi_provisioning/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/button/button/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/json_parser -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/json_parser/jsmn/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/json_generator -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_schedule/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_rainmaker/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/qrcode/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/ws2812_led -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_littlefs/src -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp_littlefs/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-dsp/modules/dotprod/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-dsp/modules/support/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-dsp/modules/windows/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-dsp/modules/windows/hann/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-dsp/modules/windows/blackman/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-dsp/modules/windows/blackman_harris/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-dsp/modules/windows/blackman_nuttall/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-dsp/modules/windows/nuttall/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-dsp/modules/windows/flat_top/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-dsp/modules/iir/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-dsp/modules/fir/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-dsp/modules/math/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-dsp/modules/math/add/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-dsp/modules/math/sub/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-dsp/modules/math/mul/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-dsp/modules/math/addc/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-dsp/modules/math/mulc/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-dsp/modules/math/sqrt/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-dsp/modules/matrix/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-dsp/modules/fft/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-dsp/modules/dct/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-dsp/modules/conv/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-dsp/modules/common/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-dsp/modules/kalman/ekf/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-dsp/modules/kalman/ekf_imu13states/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-face/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-face/include/tool -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-face/include/typedef -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-face/include/image -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-face/include/math -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-face/include/nn -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-face/include/layer -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-face/include/detect -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp-face/include/model_zoo -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp32-camera/driver/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/esp32-camera/conversions/include -I/Users/david/Documents/Arduino/hardware/espressif/esp32/tools/sdk/esp32/include/fb_gfx/include -mlongcalls -Wno-frame-address -ffunction-sections -fdata-sections -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-sign-compare -ggdb -Os -freorder-blocks -Wwrite-strings -fstack-protector -fstrict-volatile-bitfields -Wno-error=unused-but-set-variable -fno-jump-tables -fno-tree-switch-conversion -std=gnu++11 -fexceptions -fno-rtti -c -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10813 -DARDUINO_ESP32_DEV -DARDUINO_ARCH_ESP32 "-DARDUINO_BOARD=\"ESP32_DEV\"" "-DARDUINO_VARIANT=\"esp32\"" -DARDUINO_PARTITION_default -DESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1 -DARDUINO_USB_CDC_ON_BOOT=0 @/var/folders/fd/7rbn3jxx5j942sk5kn0vhb740000gn/T/arduino_build_266758/build_opt.h -I/Users/david/Documents/Arduino/hardware/espressif/esp32/cores/esp32 -I/Users/david/Documents/Arduino/hardware/espressif/esp32/variants/esp32 /var/folders/fd/7rbn3jxx5j942sk5kn0vhb740000gn/T/arduino_build_266758/sketch/SerialTestESP32-S2.ino.cpp -o /dev/null -DARDUINO_LIB_DISCOVERY_PHASE
fork/exec /Users/david/Documents/Arduino/hardware/espressif/esp32/tools/xtensa-esp32-elf/bin/xtensa-esp32-elf-g++: no such file or directory
Error compiling for board ESP32 Dev Module.

@SuGlider
Copy link
Collaborator

SuGlider commented Feb 6, 2022

Try reinstall Arduino Core 2.0.2.
I think that doing it may bring the environment to a better state.
Keep the GitHub installation while reinstalling the 2.0.2.
Then try to run get.py again.

I hope it may make it work.

@technoblogy
Copy link
Author

I haven't got Arduino Core 2.0.2, I'm on 1.8.13.

@SuGlider
Copy link
Collaborator

SuGlider commented Feb 6, 2022

I think that 1.8.13 is the version of the Arduino IDE.

ESP Arduino Core 2.0.2 is the version of the Espressif Arduino Framework. You will see it when installing ESP board in the IDE.

@technoblogy
Copy link
Author

OK, I had deleted my ESP32 2.0.2 installation. I've reinstalled it and then got an error about esptool.

I added an esptool folder containing esptool and it now compiles from ESP32 Arduino (in sketchbook).

However I still get the same behaviour with the UM featherS2 board. In other words the Serial Monitor prints:

64
128
192
256
320

ie it hangs up after 320 characters and doesn't reach 512. Sorry :(

@SuGlider
Copy link
Collaborator

SuGlider commented Feb 7, 2022

Did you select the ESO board from ESP32 Arduino (in sketchbook) option in the Arduino IDE Menu-->Tools-->Board?

@technoblogy
Copy link
Author

No, I selected UM FeatherS2. I don't have an entry for ESO. What's ESO?

@SuGlider
Copy link
Collaborator

SuGlider commented Feb 7, 2022

Sorry, I meant ESP.

You must select your board or at least the ESP32 Devkit board in the new ESP32 Arduino (in sketchbook) selection in the IDE menu.

@technoblogy
Copy link
Author

I'm sorry I don't yet have an ESP32-S2 Devkit board (I've got one on order).

I tried with an UM Feather S2 board:
Selected ESP32 Arduino (in sketchbook) -> UM FeatherS2
With the test program above, Serial hangs in the same way.

I tried with an Adafruit QT Py ESP32-S2 board:
Selected ESP32 Arduino (in sketchbook) -> Adafruit QT Py ESP32-S2
Again, with the test program above, Serial hangs in the same way.

I tried with an Adafruit ESP32 Feather board:
Selected ESP32 Arduino (in sketchbook) -> Adafruit ESP32 Feather
The test program above completes successfully.

So the complete latest Arduino Core Version behaves just like the 2.0.2 release version: it works on ESP32 but has Serial problems for me on ESP32-S2.

@SuGlider
Copy link
Collaborator

SuGlider commented Feb 7, 2022

Ok.

My suggestion is to hold up to we launch Arduino 2.0.3 which will include all those fixes.

Then you can try the example again and test it.

In case the issue still occurs, please reopen this issue and mention my login, so I can look at it.

I'll close it in this meantime.

@technoblogy
Copy link
Author

@SuGlider - I was going to suggest the same. Thanks - I'll report back!

@SuGlider SuGlider closed this as completed Feb 7, 2022
@technoblogy
Copy link
Author

technoblogy commented Feb 8, 2022

OK, good news! This morning I just received the ESP32-S2 Dev Kit I ordered (ESP32-S2 Saola 1R Dev Kit featuring ESP32-S2 WROVER), and tried this as follows:

Selected ESP32 Arduino (in sketchbook) -> ESP32S2 Dev Module
and the test program above completes successfully.
I've also tried uploading substantial programs over Serial to my uLisp interpreter, and it all works fine.

I also went back and checked the 2.0.2 Release version with the ESP32-S2 Dev Kit board and same settings, and this fails.

Have you made changes to the Serial in 2.0.3 that might only be affecting the ESP32-S2 Dev Kit?

The other thing that occurs to me is that all the ESP32-S2 boards that failed the test have a USB-C connector, whereas the ESP32-S2 Dev Kit has a USB Micro connector. Could that be significant?

@SuGlider
Copy link
Collaborator

SuGlider commented Feb 8, 2022

Have you made changes to the Serial in 2.0.3 that might only be affecting the ESP32-S2 Dev Kit?

No. All changes are in the PR that I mentioned earlier. This PR applies to all the Chips.

The other thing that occurs to me is that all the ESP32-S2 boards that failed the test have a USB-C connector, whereas the ESP32-S2 Dev Kit has a USB Micro connector. Could that be significant?

I don't see a relationship with the type of USB connector. Maybe it has to do with the Serial-USB conversor chipset of the board.

Usually the Dev Kit board comes with the CP2102 chip. I'm not sure about the board with USB-C. You can check it out in the USB log (lsusb or dmesg on Linux).

@SuGlider SuGlider reopened this Sep 8, 2023
@SuGlider
Copy link
Collaborator

SuGlider commented Sep 8, 2023

Let me take a look at it again.

@technoblogy
Copy link
Author

@SuGlider I've seen that you've released version 3.0.0-alpha2 of the ESP32 Arduino core, so I was hopeful that this might be fixed.

However, the problem is exactly the same as before. Sending a string of more than about 255 characters via Serial using the USB CDC causes characters to be dropped from the end.

Tested on ESP32-S3 using the ESP32-S3 Dev Module Board option with version 3.0.0-alpha2 of the ESP32 Arduino core.

Shall I open a new issue for this?

@technoblogy
Copy link
Author

I've done some more testing, and I've found that if I insert a delay of 0.5 secs every few characters, so that I don't transmit a continuous sequence of more than about 250 characters, I can send a long file successfully without errors.

So it seems that something is pausing processing every 250 or so characters, causing characters on the serial input to be lost.

@VojtechBartoska
Copy link
Collaborator

VojtechBartoska commented Feb 20, 2024

@SuGlider Can this ticket be closed as solved? Or at least we need to delete "solved" label.

@technoblogy
Copy link
Author

Yes, please delete "solved" label - as far as I'm concerned it's not solved.

@tablatronix
Copy link
Contributor

It works better? But is still flaky I think. Not really sure how to quantify it as I have not had time to test more.

@SuGlider
Copy link
Collaborator

@SuGlider Can this ticket be closed as solved? Or at least we need to delete "solved" label.

I need to test it again using the process described in #6221 (comment)

@technoblogy
Copy link
Author

I will be happy to test it again. Which version of the ESP32 core should I use?

The ESP32 package in Boards Manager now only seems to offer these versions:

  • 3.0.0-alpha3
  • 2.0.11
  • 2.0.10

I'm not sure why there are no earlier versions, and why 2.0.12 and 2.0.14 have been removed from the list?

@me-no-dev
Copy link
Member

@technoblogy you see only those because you did not add the package json in your IDE config. The packages you see are the ones which are released by Arduino.cc and have only their Nano32 board listed.

@me-no-dev
Copy link
Member

@pillo79 I see this question asked often. Any ideas how we can improve it?

@pillo79
Copy link
Contributor

pillo79 commented Feb 21, 2024

@me-no-dev sorry about this! We are indeed currently working on simplifying the management of the official package JSON, including improving third-party package integration.
I was actually waiting for any new release to test this new system before moving it to production.

@me-no-dev
Copy link
Member

@pillo79 I guess 2.0.15 would be a nice target to try before 3.0.0

@technoblogy
Copy link
Author

technoblogy commented Feb 21, 2024

@me-no-dev I have:

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json

That used to be the right one; is it no longer correct?

Sorry - I see it should now be:

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

@technoblogy
Copy link
Author

Oh, I still only get;

  • 3.0.0-alpha3
  • 2.0.11
  • 2.0.10

@pillo79
Copy link
Contributor

pillo79 commented Feb 21, 2024

@technoblogy the file you mentioned is a development index that only defines 3.0.0-alpha3.
Please make sure you also have in the list the official ESP32 package index (without the _dev):

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

(old address works as well!)

@technoblogy
Copy link
Author

Please make sure you also have in the list the official ESP32 package index (without the _dev):

@pillo79 OK, thanks, now I can see them all.

I haven't changed that URL for at least a couple of years, and recently they all disappeared, so the policy must have been changed. Other people may have been confused by this.

@me-no-dev I can't see 2.0.15 on the list.

@technoblogy
Copy link
Author

I see that I've already tested with 2.0.12; see:

#6221 (comment)

and with 3.0.0-alpha2; see:

#6221 (comment)

and I also reported a workaround that made the problem go away, which may help tracking down the issue:

#6221 (comment)

Is anything likely to have changed in 3.0.0-alpha3, so should I test that too?

@SuGlider
Copy link
Collaborator

I'll investigate it again... I'll get back with some answer in a couple days.

@SuGlider SuGlider added Status: Needs investigation We need to do some research before taking next steps on this issue and removed Status: Solved labels Feb 21, 2024
@SuGlider SuGlider added this to the 3.0.0 milestone Feb 21, 2024
@technoblogy
Copy link
Author

That would be great. Let me know if I can help.

@VojtechBartoska VojtechBartoska modified the milestones: 3.0.0, 3.0.0-RC1 Feb 21, 2024
@SuGlider
Copy link
Collaborator

SuGlider commented Mar 1, 2024

Issue is (re)confirmed for the USB OTG using ESP32-S2 and ESP32-S3.

@SuGlider
Copy link
Collaborator

SuGlider commented Mar 11, 2024

@technoblogy - I've found the root cause of this issue: as soon as the RX Buffer is full, with 256 bytes, the remaining bytes from the 512 are discarted by Buffer Overflow.

This happens because the USB HOST (the PC) sends all the 512 bytes at once and the ESP32 executes the TinyUSB CDC ISR continuosly not giving FreeRTOS Scheduler time to execute the Arduino Task for the lopp(). Threfore, only the _onRx() callback (TinyUSB CDC ISR callback) is executed up to overflowing the buffer and discarting the remaining data.

When all the 512 bytes are finally sent by the HOST, the loop() task is executed, but the buffer, that has up to the 256 bytes by default, will hold just the first bytes received, and available() reports that it has received less than 512 bytes sent by the HOST.

A sollution, that depends on how the CDC data exchange is done, would be to increase the RX Buffer size with the maximum space that the USB HOST would send at once. In this case, the RX Buffer can be set to 1024 and this would solve this specific issue with the LISP code uploading sletch.

A broader solution that doesn't depend on the size of the RX Buffer is to change the _onRx() code to only execute tud_cdc_n_read() when there is space left in the RX Buffer (a FreeRTOS Queue) or after a timeout.
tud_cdc_n_read() reads the the 64 bytes sent by the USB HOST, but as side effect also ACK the HOST to let it send more data. Beause the HOST (PC) runs way faster than the DEVICE (ESP32), it raises the USB CDC ISR continuously, not giving time to execute other Tasks, such as the Consumer Task (loop()).

This broader solution is under investigation for implementation.

@technoblogy
Copy link
Author

@SuGlider that's great news!

Unfortunately there's no size of RX Buffer that would be sufficient for every Lisp upload, so I remain hopeful that you succeed in finding the broader solution.

@VojtechBartoska VojtechBartoska modified the milestones: 3.0.0-RC1, 3.0.1 Apr 12, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area: ESP-IDF related ESP-IDF related issues Chip: ESP32-S2 Issue is related to support of ESP32-S2 Chip Status: Needs investigation We need to do some research before taking next steps on this issue Type: Bug 🐛 All bugs
Projects
Status: Under investigation
Development

Successfully merging a pull request may close this issue.

10 participants