Skip to content

Conversation

SuGlider
Copy link
Collaborator

@SuGlider SuGlider commented Aug 20, 2025

Description of Change

The problem affects more often SoC that supports REF_TICK UART Clock source (ESP32 and ESP32-S2).

The implementation has an issue retated to when the user doesn't set any specific UART source clock and the UART changes its baudrate from lower than 250,000 to higher (ESP32/ESP32-S2).

The bug is about not changing the clock source to something faster (APB) in order to get correct clock resolution in order to reach closer enough to the new baudrate selection.

The new behaviour (which was working before) is that is the application doesn't set any specific UART clock rate, it shall follow a rule:

ESP32/ESP32-S2 will use REF_TICK whenever baudrate is lower than 250,000. Other SoC will use XTAL. ESP32/ESP32-S2 will change UART Clock Source to APB when baudrate is higher than 250,000 for a better final result.

If the user application explicitaly changes the UART Clock Source using setClockSource(), this new clock source will be used always, independently from the target SoC and selected baudrate (overriding the rule above).

Test Scenarios

Using ESP32 / ESP32-S2 and setting Debug Level to Verbose - Checking the logs about UART_1 Clock Source.
Tested also with ESP32-C3 and ESP32-S3 to check if it uses XTAL for all baudrates by default and later it changes to APB.

void setup() {
  Serial.begin(115200);
  delay(1000);
  Serial.println("No USER SET for UART_1 Clock Source");
  Serial.println("==============================");
  Serial.println("Serial1 @ 9600");
  Serial1.begin(9600);
  Serial.println("==============================");
  Serial.println("Serial1 @ 230400");
  Serial1.begin(115200 * 2);
  delay(1000);
  Serial.println("==============================");
  Serial.println("Serial1 @ 460800");
  Serial1.begin(115200 * 4);
  delay(1000);
  Serial.println("==============================");

  Serial1.end();
  
  Serial.println("USER SET for UART_1 Clock Source");
  Serial1.setClockSource(UART_CLK_SRC_APB);  // VALID ONLY FOR ESP32/ESP32-S2
  Serial.println("==============================");
  Serial.println("Serial1 @ 9600");
  Serial1.begin(9600);
  Serial.println("==============================");
  Serial.println("Serial1 @ 230400");
  Serial1.begin(115200 * 2);
  delay(1000);
  Serial.println("==============================");
  Serial.println("Serial1 @ 460800");
  Serial1.begin(115200 * 4);
  delay(1000);
  Serial.println("==============================");
}

void loop() {
  delay(1000);
}

PR Verbose Output:

ESP32 - UART Clock Sources are REF_TICK (11) or APB (4)
If baudrate < 250,000 ESP32/S2 shall use REF_TICK as UART Clock Source unless it is explicitally set by the user with, for instance:
setClockSource(UART_CLK_SRC_APB); // VALID ONLY FOR ESP32/ESP32-S2

------------------------------------------
Software Info:
------------------------------------------
  Compile Date/Time : Sep  8 2025 10:57:59
  Compile Host OS   : windows
  ESP-IDF Version   : v5.5-1-gb66b5448e0
  Arduino Version   : 3.3.0
------------------------------------------
Board Info:
------------------------------------------
  Arduino Board     : ESP32_DEV
  Arduino Variant   : esp32
  Arduino FQBN      : espressif:orig:esp32:UploadSpeed=921600,CPUFreq=240,FlashFreq=80,FlashMode=qio,FlashSize=4M,PartitionScheme=default,DebugLevel=verbose,PSRAM=disabled,LoopCore=1,EventsCore=1,EraseFlash=none,JTAGAdapter=default,ZigbeeMode=default
============ Before Setup End ============
[   733][V][esp32-hal-uart.c:707] uartBegin(): UART0 baud(115200) Mode(800001c) rxPin(3) txPin(1)
[   742][V][esp32-hal-uart.c:805] uartBegin(): UART0 not installed. Starting installation
[   752][V][esp32-hal-uart.c:815] uartBegin(): UART0 RX FIFO full threshold set to 120 (value requested: 120 || FIFO Max = 128)
[   766][V][esp32-hal-uart.c:845] uartBegin(): Setting UART0 to use REF_TICK clock
[   776][V][esp32-hal-uart.c:898] uartBegin(): UART0 initialization done.
[   790][V][esp32-hal-uart.c:949] uartSetRxFIFOFull(): UART0 RX FIFO Full value set to 120 from a requested value of 120
No USER SET for UART_1 Clock Source
==============================
Serial1 @ 9600
[  1800][V][esp32-hal-uart.c:707] uartBegin(): UART1 baud(9600) Mode(800001c) rxPin(26) txPin(27)
[  1816][V][esp32-hal-uart.c:805] uartBegin(): UART1 not installed. Starting installation
[  1824][V][esp32-hal-uart.c:815] uartBegin(): UART1 RX FIFO full threshold set to 120 (value requested: 120 || FIFO Max = 128)
[  1835][V][esp32-hal-uart.c:845] uartBegin(): Setting UART1 to use REF_TICK clock
[  1843][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 26 successfully set to type UART_RX (2) with bus 0x3ffbdb80
[  1854][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 27 successfully set to type UART_TX (3) with bus 0x3ffbdb80
[  1864][V][esp32-hal-uart.c:898] uartBegin(): UART1 initialization done.
[  1871][V][esp32-hal-uart.c:949] uartSetRxFIFOFull(): UART1 RX FIFO Full value set to 1 from a requested value of 1
==============================
Serial1 @ 230400
[  1881][V][esp32-hal-uart.c:707] uartBegin(): UART1 baud(230400) Mode(800001c) rxPin(26) txPin(27)
[  1894][V][esp32-hal-uart.c:731] uartBegin(): UART1 Driver already installed.
[  1901][V][esp32-hal-uart.c:735] uartBegin(): UART1 changing buffer sizes or inverted signal or rxfifo_full_thrhd. IDF driver will be restarted
[  1914][V][esp32-hal-uart.c:736] uartBegin(): RX buffer size: 256 -> 256
[  1920][V][esp32-hal-uart.c:737] uartBegin(): TX buffer size: 0 -> 0
[  1927][V][esp32-hal-uart.c:738] uartBegin(): Inverted signal: false -> false
[  1934][V][esp32-hal-uart.c:739] uartBegin(): RX FIFO full threshold: 1 -> 120
[  1941][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 26 successfully set to type INIT (0) with bus 0x0
[  1950][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 27 successfully set to type INIT (0) with bus 0x0
[  1960][V][esp32-hal-uart.c:815] uartBegin(): UART1 RX FIFO full threshold set to 120 (value requested: 120 || FIFO Max = 128)
[  1972][V][esp32-hal-uart.c:845] uartBegin(): Setting UART1 to use REF_TICK clock
[  1979][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 26 successfully set to type UART_RX (2) with bus 0x3ffbdb80
[  1990][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 27 successfully set to type UART_TX (3) with bus 0x3ffbdb80
[  2000][V][esp32-hal-uart.c:898] uartBegin(): UART1 initialization done.
==============================
Serial1 @ 460800
[  3006][V][esp32-hal-uart.c:707] uartBegin(): UART1 baud(460800) Mode(800001c) rxPin(26) txPin(27)
[  3019][V][esp32-hal-uart.c:731] uartBegin(): UART1 Driver already installed.
[  3026][V][esp32-hal-uart.c:1172] uartSetBaudRate(): Setting UART1 to use APB clock
[  3034][V][esp32-hal-uart.c:1187] uartSetBaudRate(): Setting UART1 baud rate to 460800.
==============================
[  4041][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 26 successfully set to type INIT (0) with bus 0x0
[  4054][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 27 successfully set to type INIT (0) with bus 0x0
USER SET for UART_1 Clock Source
[  4064][V][esp32-hal-uart.c:1304] uartSetClockSource(): UART1 set clock source to 4
==============================
Serial1 @ 9600
[  4074][V][esp32-hal-uart.c:707] uartBegin(): UART1 baud(9600) Mode(800001c) rxPin(26) txPin(27)
[  4087][V][esp32-hal-uart.c:805] uartBegin(): UART1 not installed. Starting installation
[  4095][V][esp32-hal-uart.c:815] uartBegin(): UART1 RX FIFO full threshold set to 120 (value requested: 120 || FIFO Max = 128)
[  4106][V][esp32-hal-uart.c:835] uartBegin(): Setting UART1 to user defined HP clock source (4) 
[  4115][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 26 successfully set to type UART_RX (2) with bus 0x3ffbdb80
[  4125][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 27 successfully set to type UART_TX (3) with bus 0x3ffbdb80
[  4136][V][esp32-hal-uart.c:898] uartBegin(): UART1 initialization done.
[  4143][V][esp32-hal-uart.c:949] uartSetRxFIFOFull(): UART1 RX FIFO Full value set to 1 from a requested value of 1
==============================
Serial1 @ 230400
[  4153][V][esp32-hal-uart.c:707] uartBegin(): UART1 baud(230400) Mode(800001c) rxPin(26) txPin(27)
[  4166][V][esp32-hal-uart.c:731] uartBegin(): UART1 Driver already installed.
[  4173][V][esp32-hal-uart.c:735] uartBegin(): UART1 changing buffer sizes or inverted signal or rxfifo_full_thrhd. IDF driver will be restarted
[  4186][V][esp32-hal-uart.c:736] uartBegin(): RX buffer size: 256 -> 256
[  4192][V][esp32-hal-uart.c:737] uartBegin(): TX buffer size: 0 -> 0
[  4198][V][esp32-hal-uart.c:738] uartBegin(): Inverted signal: false -> false
[  4205][V][esp32-hal-uart.c:739] uartBegin(): RX FIFO full threshold: 1 -> 120
[  4212][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 26 successfully set to type INIT (0) with bus 0x0
[  4222][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 27 successfully set to type INIT (0) with bus 0x0
[  4232][V][esp32-hal-uart.c:815] uartBegin(): UART1 RX FIFO full threshold set to 120 (value requested: 120 || FIFO Max = 128)
[  4243][V][esp32-hal-uart.c:835] uartBegin(): Setting UART1 to user defined HP clock source (4) 
[  4252][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 26 successfully set to type UART_RX (2) with bus 0x3ffbdb80
[  4263][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 27 successfully set to type UART_TX (3) with bus 0x3ffbdb80
[  4273][V][esp32-hal-uart.c:898] uartBegin(): UART1 initialization done.
==============================
Serial1 @ 460800
[  5279][V][esp32-hal-uart.c:707] uartBegin(): UART1 baud(460800) Mode(800001c) rxPin(26) txPin(27)
[  5292][V][esp32-hal-uart.c:731] uartBegin(): UART1 Driver already installed.
[  5299][V][esp32-hal-uart.c:1159] uartSetBaudRate(): Setting UART1 to use HP clock source (4) 
[  5308][V][esp32-hal-uart.c:1187] uartSetBaudRate(): Setting UART1 baud rate to 460800.
==============================
=========== After Setup Start ============
INTERNAL Memory Info:
------------------------------------------
  Total Size        :   378936 B ( 370.1 KB)
  Free Bytes        :   331820 B ( 324.0 KB)
  Allocated Bytes   :    39088 B (  38.2 KB)
  Minimum Free Bytes:   325804 B ( 318.2 KB)
  Largest Free Block:   110580 B ( 108.0 KB)
------------------------------------------
GPIO Info:
------------------------------------------
  GPIO : BUS_TYPE[bus/unit][chan]
  --------------------------------------  
     1 : UART_TX[0]
     3 : UART_RX[0]
    26 : UART_RX[1]
    27 : UART_TX[1]
============ After Setup End =============

Related links

Closes #11721

The problem affects more often SoC that supports REF_TICK UART Clock source (ESP32 and ESP32-S2). 

The implementation has an issue retated to when the user doesn't set any specific UART source clock and the UART changes its baudrate from lower than 250,000 to higher (ESP32/ESP32-S2).

The bug is about not changing the clock source to something faster (APB) in order to get correct clock resolution in order to reach closer enough to the new baudrate selection.

The new behaviour (which was working before) is that is the application doesn't set any specific UART clock rate, it shall follow a rule:

ESP32/ESP32-S2 will use REF_TICK whenever baudrate is lower than 250,000. Other SoC will use XTAL.
ESP32/ESP32-S2 will change UART Clock Source to APB when baudrate is higher than 250,000 for a better final result.

If the user application explicitaly changes the UART Clock Source using `setClockSource()`, this new clock source will be used always, independently from the target SoC and selected baudrate (overriding the rule above).
@SuGlider SuGlider added this to the 3.3.0 milestone Aug 20, 2025
@SuGlider SuGlider self-assigned this Aug 20, 2025
@SuGlider SuGlider requested a review from a team as a code owner August 20, 2025 13:42
@SuGlider SuGlider added the Peripheral: UART Related to the UART peripheral or its functionality. label Aug 20, 2025
Copy link
Contributor

github-actions bot commented Aug 20, 2025

Warnings
⚠️

Some issues found for the commit messages in this PR:

  • the commit message "fix(uart): always applies the user selected UART Clock Source":
    • body's lines must not be longer than 100 characters

Please fix these commit messages - here are some basic tips:

  • follow Conventional Commits style
  • correct format of commit message should be: <type/action>(<scope/component>): <summary>, for example fix(esp32): Fixed startup timeout issue
  • allowed types are: change,ci,docs,feat,fix,refactor,remove,revert,test
  • sufficiently descriptive message summary should be between 10 to 72 characters and start with upper case letter
  • avoid Jira references in commit messages (unavailable/irrelevant for our customers)

TIP: Install pre-commit hooks and run this check when committing (uses the Conventional Precommit Linter).

👋 Hello SuGlider, we appreciate your contribution to this project!


📘 Please review the project's Contributions Guide for key guidelines on code, documentation, testing, and more.

🖊️ Please also make sure you have read and signed the Contributor License Agreement for this project.

Click to see more instructions ...


This automated output is generated by the PR linter DangerJS, which checks if your Pull Request meets the project's requirements and helps you fix potential issues.

DangerJS is triggered with each push event to a Pull Request and modify the contents of this comment.

Please consider the following:
- Danger mainly focuses on the PR structure and formatting and can't understand the meaning behind your code or changes.
- Danger is not a substitute for human code reviews; it's still important to request a code review from your colleagues.
- Resolve all warnings (⚠️ ) before requesting a review from human reviewers - they will appreciate it.
- To manually retry these Danger checks, please navigate to the Actions tab and re-run last Danger workflow.

Review and merge process you can expect ...


We do welcome contributions in the form of bug reports, feature requests and pull requests.

1. An internal issue has been created for the PR, we assign it to the relevant engineer.
2. They review the PR and either approve it or ask you for changes or clarifications.
3. Once the GitHub PR is approved we do the final review, collect approvals from core owners and make sure all the automated tests are passing.
- At this point we may do some adjustments to the proposed change, or extend it by adding tests or documentation.
4. If the change is approved and passes the tests it is merged into the default branch.

Generated by 🚫 dangerJS against 3f3e4a6

Copy link
Contributor

github-actions bot commented Aug 20, 2025

Test Results

 76 files   76 suites   13m 12s ⏱️
 38 tests  38 ✅ 0 💤 0 ❌
241 runs  241 ✅ 0 💤 0 ❌

Results for commit 3f3e4a6.

♻️ This comment has been updated with latest results.

Copy link
Contributor

github-actions bot commented Aug 20, 2025

Memory usage test (comparing PR against master branch)

The table below shows the summary of memory usage change (decrease - increase) in bytes and percentage for each target.

MemoryFLASH [bytes]FLASH [%]RAM [bytes]RAM [%]
TargetDECINCDECINCDECINCDECINC
ESP32C5💚 -540💚 -0.020.00000.000.00
ESP32P4💚 -480💚 -0.010.00000.000.00
ESP32S3💚 -600💚 -0.010.00000.000.00
ESP32S2💚 -320💚 -0.010.00000.000.00
ESP32C3💚 -300💚 -0.010.00000.000.00
ESP32C6💚 -540💚 -0.020.00000.000.00
ESP32H2💚 -320💚 -0.010.00000.000.00
ESP32💚 -40⚠️ +32💚 -0.010.00000.000.00
Click to expand the detailed deltas report [usage change in BYTES]
TargetESP32C5ESP32P4ESP32S3ESP32S2ESP32C3ESP32C6ESP32H2ESP32
ExampleFLASHRAMFLASHRAMFLASHRAMFLASHRAMFLASHRAMFLASHRAMFLASHRAMFLASHRAM
libraries/ArduinoOTA/examples/BasicOTA💚 -520💚 -420💚 -240💚 -320💚 -280💚 -520--💚 -280
libraries/AsyncUDP/examples/AsyncUDPClient💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -320
libraries/AsyncUDP/examples/AsyncUDPMulticastServer💚 -520💚 -420💚 -240💚 -280💚 -280💚 -520--💚 -280
libraries/AsyncUDP/examples/AsyncUDPServer💚 -520💚 -420💚 -240💚 -280💚 -280💚 -520--💚 -400
libraries/BLE/examples/Beacon_Scanner💚 -520--💚 -240--💚 -280💚 -520💚 -300💚 -280
libraries/BLE/examples/Client💚 -520--💚 -240--💚 -280💚 -520💚 -300💚 -280
libraries/BLE/examples/Client_secure_static_passkey💚 -520--💚 -240--💚 -280💚 -520💚 -300💚 -280
libraries/BLE/examples/EddystoneTLM_Beacon💚 -520--💚 -240--💚 -280💚 -520💚 -300💚 -280
libraries/BLE/examples/EddystoneURL_Beacon💚 -520--💚 -240--💚 -280💚 -520💚 -300💚 -280
libraries/BLE/examples/Notify💚 -520--💚 -240--💚 -280💚 -520💚 -300💚 -280
libraries/BLE/examples/Scan💚 -520--💚 -240--💚 -280💚 -520💚 -300💚 -280
libraries/BLE/examples/Server💚 -520--💚 -240--💚 -280💚 -520💚 -300💚 -320
libraries/BLE/examples/Server_multiconnect💚 -520--💚 -240--💚 -280💚 -520💚 -300💚 -280
libraries/BLE/examples/Server_secure_static_passkey💚 -520--💚 -240--💚 -280💚 -520💚 -300💚 -280
libraries/BLE/examples/UART💚 -520--💚 -240--💚 -280💚 -520💚 -300💚 -280
libraries/BLE/examples/Write💚 -520--💚 -240--💚 -280💚 -520💚 -300💚 -280
libraries/BLE/examples/iBeacon💚 -520--💚 -240--💚 -280💚 -520💚 -300💚 -280
libraries/DNSServer/examples/CaptivePortal💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/EEPROM/examples/eeprom_class💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/EEPROM/examples/eeprom_extra💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/EEPROM/examples/eeprom_write💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP32/examples/AnalogOut/LEDCFade💚 -520💚 -440💚 -240💚 -240💚 -300💚 -520💚 -300💚 -280
libraries/ESP32/examples/AnalogOut/LEDCGammaFade💚 -520💚 -420------💚 -520💚 -300--
libraries/ESP32/examples/AnalogOut/LEDCSingleChannel0000000000000000
libraries/ESP32/examples/AnalogOut/LEDCSoftwareFade0000000000000000
libraries/ESP32/examples/AnalogOut/SigmaDelta0000000000000000
libraries/ESP32/examples/AnalogOut/ledcFrequency0000000000000000
libraries/ESP32/examples/AnalogOut/ledcWrite_RGB💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP32/examples/AnalogRead💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -320💚 -280
libraries/ESP32/examples/AnalogReadContinuous💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP32/examples/ArduinoStackSize💚 -540💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP32/examples/CI/CIBoardsTest💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -320
libraries/ESP32/examples/ChipID/GetChipID💚 -520💚 -420💚 -240💚 -240💚 -280💚 -540💚 -300💚 -280
libraries/ESP32/examples/DeepSleep/TimerWakeUp💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/ESP32/examples/FreeRTOS/BasicMultiThreading💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP32/examples/FreeRTOS/Mutex💚 -520💚 -420💚 -240💚 -240💚 -280💚 -540💚 -300💚 -280
libraries/ESP32/examples/FreeRTOS/Queue💚 -540💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP32/examples/FreeRTOS/Semaphore💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP32/examples/GPIO/BlinkRGB0000000000000000
libraries/ESP32/examples/GPIO/FunctionalInterrupt💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP32/examples/GPIO/FunctionalInterruptLambda💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP32/examples/GPIO/FunctionalInterruptStruct💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP32/examples/GPIO/GPIOInterrupt💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -320💚 -280
libraries/ESP32/examples/HWCDC_Events💚 -52000💚 -240--💚 -280💚 -520💚 -320--
libraries/ESP32/examples/MacAddress/GetMacAddress💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP32/examples/RMT/Legacy_RMT_Driver_Compatible💚 -540💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP32/examples/RMT/RMTCallback💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP32/examples/RMT/RMTLoopback💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP32/examples/RMT/RMTReadXJT💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP32/examples/RMT/RMTWrite_RGB_LED💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP32/examples/RMT/RMT_CPUFreq_Test💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP32/examples/RMT/RMT_EndOfTransmissionState💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP32/examples/RMT/RMT_LED_Blink💚 -540💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP32/examples/ResetReason/ResetReason💚 -540💚 -420💚 -240💚 -240💚 -280💚 -540💚 -300💚 -280
libraries/ESP32/examples/ResetReason/ResetReason2💚 -540💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP32/examples/Serial/BaudRateDetect_Demo💚 -520💚 -420💚 -240💚 -280💚 -280💚 -540💚 -300💚 -280
libraries/ESP32/examples/Serial/OnReceiveError_BREAK_Demo💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP32/examples/Serial/OnReceive_Demo💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP32/examples/Serial/RS485_Echo_Demo💚 -520💚 -420💚 -240💚 -240💚 -280💚 -540💚 -300💚 -280
libraries/ESP32/examples/Serial/RxFIFOFull_Demo💚 -520💚 -420💚 -240💚 -240💚 -280💚 -540💚 -300💚 -280
libraries/ESP32/examples/Serial/RxTimeout_Demo💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP32/examples/Serial/Serial_All_CPU_Freqs💚 -520💚 -440💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP32/examples/Serial/Serial_STD_Func_OnReceive💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -320💚 -280
libraries/ESP32/examples/Serial/onReceiveExample💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP32/examples/Template/ExampleTemplate0000000000000000
libraries/ESP32/examples/Time/SimpleTime💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/ESP32/examples/Timer/RepeatTimer💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP32/examples/Timer/WatchdogTimer💚 -520💚 -420💚 -240💚 -240💚 -300💚 -520💚 -300💚 -280
libraries/ESP_I2S/examples/ES8388_loopback💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP_I2S/examples/Simple_tone💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/ESP_NOW/examples/ESP_NOW_Broadcast_Master💚 -520--💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/ESP_NOW/examples/ESP_NOW_Broadcast_Slave💚 -520--💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/ESP_NOW/examples/ESP_NOW_Network💚 -520--💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/ESP_NOW/examples/ESP_NOW_Serial💚 -520--💚 -200💚 -320💚 -280💚 -520--💚 -280
libraries/ESPmDNS/examples/mDNS-SD_Extended💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/ESPmDNS/examples/mDNS_Web_Server💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/Ethernet/examples/ETH_W5500_Arduino_SPI💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/Ethernet/examples/ETH_W5500_IDF_SPI💚 -520💚 -420💚 -280💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/Ethernet/examples/ETH_WIFI_BRIDGE💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/FFat/examples/FFat_Test💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/FFat/examples/FFat_time💚 -520💚 -420💚 -240💚 -280💚 -280💚 -520--💚 -280
libraries/HTTPClient/examples/Authorization💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/HTTPClient/examples/BasicHttpClient💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/HTTPClient/examples/BasicHttpsClient💚 -520💚 -420💚 -240💚 -280💚 -280💚 -520--💚 -320
libraries/HTTPClient/examples/HTTPClientEnterprise💚 -520--💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/HTTPClient/examples/ReuseConnection💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -240
libraries/HTTPClient/examples/StreamHttpClient💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -240
libraries/HTTPUpdate/examples/httpUpdate💚 -520💚 -420💚 -240💚 -200💚 -280💚 -520--💚 -280
libraries/HTTPUpdate/examples/httpUpdateSPIFFS💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/HTTPUpdate/examples/httpUpdateSecure💚 -520💚 -420💚 -240💚 -280💚 -280💚 -520--💚 -280
libraries/HTTPUpdateServer/examples/WebUpdater💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -320
libraries/Hash/examples/HEX💚 -520💚 -440💚 -240💚 -240💚 -300💚 -520💚 -300💚 -280
libraries/Hash/examples/MD5💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/Hash/examples/PBKDF2_HMAC💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/Hash/examples/SHA1💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/Hash/examples/SHA2💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/Hash/examples/SHA3💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/Hash/examples/SHA3Stream💚 -540💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/Insights/examples/DiagnosticsSmokeTest💚 -520--💚 -280💚 -240💚 -280💚 -520--💚 -280
libraries/Insights/examples/MinimalDiagnostics💚 -520--💚 -240💚 -240💚 -280💚 -520--💚 -400
libraries/LittleFS/examples/LITTLEFS_test💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/LittleFS/examples/LITTLEFS_time💚 -520💚 -420💚 -280💚 -240💚 -280💚 -520--💚 -320
libraries/Matter/examples/MatterColorLight💚 -520--💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/Matter/examples/MatterCommissionTest💚 -520--💚 -240💚 -200💚 -280💚 -520💚 -300💚 -280
libraries/Matter/examples/MatterComposedLights💚 -520--💚 -240💚 -240💚 -280💚 -520💚 -320💚 -280
libraries/Matter/examples/MatterContactSensor💚 -520--💚 -240💚 -280💚 -280💚 -520💚 -300💚 -280
libraries/Matter/examples/MatterDimmableLight💚 -520--💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/Matter/examples/MatterEnhancedColorLight💚 -520--💚 -24000💚 -280💚 -520💚 -300⚠️ +320
libraries/Matter/examples/MatterEvents💚 -520--💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/Matter/examples/MatterFan💚 -520--💚 -240💚 -240💚 -280💚 -520💚 -300💚 -320
libraries/Matter/examples/MatterHumiditySensor💚 -520--💚 -320💚 -280💚 -280💚 -520💚 -300💚 -320
libraries/Matter/examples/MatterLambdaSingleCallbackManyEPs💚 -520--💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/Matter/examples/MatterMinimum💚 -520--💚 -160💚 -280💚 -280💚 -520💚 -300💚 -280
libraries/Matter/examples/MatterOccupancySensor💚 -520--💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/Matter/examples/MatterOnIdentify💚 -520--💚 -240💚 -240💚 -280💚 -520💚 -300💚 -320
libraries/Matter/examples/MatterOnOffLight💚 -520--💚 -240💚 -240💚 -280💚 -520💚 -300💚 -240
libraries/Matter/examples/MatterOnOffPlugin💚 -520--💚 -280💚 -240💚 -280💚 -520💚 -300💚 -320
libraries/Matter/examples/MatterPressureSensor💚 -520--💚 -280💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/Matter/examples/MatterSmartButon💚 -520--💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/Matter/examples/MatterTemperatureLight💚 -520--💚 -280💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/Matter/examples/MatterTemperatureSensor💚 -520--💚 -320💚 -280💚 -280💚 -520💚 -300💚 -320
libraries/Matter/examples/MatterThermostat💚 -540--💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/NetBIOS/examples/ESP_NBNST💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/NetworkClientSecure/examples/WiFiClientInsecure💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -240
libraries/NetworkClientSecure/examples/WiFiClientPSK💚 -520💚 -420💚 -600💚 -240💚 -280💚 -520--💚 -280
libraries/NetworkClientSecure/examples/WiFiClientSecure💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/NetworkClientSecure/examples/WiFiClientSecureEnterprise💚 -520--💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/NetworkClientSecure/examples/WiFiClientSecureProtocolUpgrade💚 -520💚 -420💚 -24000💚 -280💚 -520--💚 -280
libraries/NetworkClientSecure/examples/WiFiClientShowPeerCredentials💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/NetworkClientSecure/examples/WiFiClientTrustOnFirstUse💚 -520💚 -420💚 -240💚 -280💚 -280💚 -520--💚 -280
libraries/OpenThread/examples/CLI/COAP/coap_lamp💚 -520--------💚 -520💚 -300--
libraries/OpenThread/examples/CLI/COAP/coap_switch💚 -520--------💚 -520💚 -300--
libraries/OpenThread/examples/CLI/SimpleCLI💚 -540--------💚 -520💚 -300--
libraries/OpenThread/examples/CLI/SimpleNode💚 -520--------💚 -520💚 -320--
libraries/OpenThread/examples/CLI/SimpleThreadNetwork/ExtendedRouterNode💚 -520--------💚 -520💚 -300--
libraries/OpenThread/examples/CLI/SimpleThreadNetwork/LeaderNode💚 -520--------💚 -520💚 -300--
libraries/OpenThread/examples/CLI/SimpleThreadNetwork/RouterNode💚 -520--------💚 -520💚 -300--
libraries/OpenThread/examples/CLI/ThreadScan💚 -520--------💚 -520💚 -300--
libraries/OpenThread/examples/CLI/onReceive💚 -540--------💚 -520💚 -300--
libraries/OpenThread/examples/Native/SimpleThreadNetwork/LeaderNode💚 -520--------💚 -520💚 -300--
libraries/OpenThread/examples/Native/SimpleThreadNetwork/RouterNode💚 -520--------💚 -520💚 -300--
libraries/PPP/examples/PPP_Basic💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/PPP/examples/PPP_WIFI_BRIDGE💚 -520💚 -420💚 -200💚 -240💚 -280💚 -520--💚 -280
libraries/Preferences/examples/Prefs2Struct💚 -520💚 -420💚 -240💚 -240💚 -280💚 -540💚 -300💚 -280
libraries/Preferences/examples/StartCounter💚 -520💚 -420💚 -240💚 -240💚 -280💚 -540💚 -300💚 -280
libraries/RainMaker/examples/RMakerCustom💚 -520--💚 -240💚 -240💚 -280💚 -520----
libraries/RainMaker/examples/RMakerCustomAirCooler💚 -520--💚 -240💚 -280💚 -280💚 -520----
libraries/RainMaker/examples/RMakerSonoffDualR3💚 -520--💚 -240💚 -240💚 -280💚 -520----
libraries/RainMaker/examples/RMakerSwitch💚 -520--💚 -240💚 -280💚 -280💚 -520----
libraries/SD/examples/SD_Test💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/SD/examples/SD_time💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/SPI/examples/SPI_Multiple_Buses0000000000000000
libraries/SPIFFS/examples/SPIFFS_Test💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/SPIFFS/examples/SPIFFS_time💚 -520💚 -420💚 -200💚 -240💚 -280💚 -520--💚 -280
libraries/TFLiteMicro/examples/hello_world0000000000000000
libraries/Ticker/examples/Blinker0000000000000000
libraries/Ticker/examples/TickerBasic0000000000000000
libraries/Ticker/examples/TickerParameter0000000000000000
libraries/Update/examples/AWS_S3_OTA_Update💚 -520💚 -420💚 -240💚 -280💚 -280💚 -520--💚 -280
libraries/Update/examples/HTTPS_OTA_Update💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -320
libraries/Update/examples/HTTP_Client_AES_OTA_Update💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/Update/examples/HTTP_Server_AES_OTA_Update💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/Update/examples/OTAWebUpdater💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/Update/examples/SD_Update💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/WebServer/examples/AdvancedWebServer💚 -520💚 -420💚 -240💚 -320💚 -280💚 -520--💚 -280
libraries/WebServer/examples/FSBrowser💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -320
libraries/WebServer/examples/Filters💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/WebServer/examples/HelloServer💚 -520💚 -420💚 -320💚 -240💚 -280💚 -520--💚 -280
libraries/WebServer/examples/HttpAdvancedAuth💚 -520💚 -420💚 -240💚 -160💚 -280💚 -520--💚 -320
libraries/WebServer/examples/HttpAuthCallback💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/WebServer/examples/HttpAuthCallbackInline💚 -520💚 -420💚 -240💚 -280💚 -280💚 -520--💚 -280
libraries/WebServer/examples/HttpBasicAuth💚 -520💚 -420💚 -24000💚 -280💚 -520--💚 -240
libraries/WebServer/examples/HttpBasicAuthSHA1💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/WebServer/examples/HttpBasicAuthSHA1orBearerToken💚 -520💚 -420💚 -240💚 -280💚 -280💚 -520--💚 -280
libraries/WebServer/examples/Middleware💚 -520--💚 -240💚 -240💚 -280💚 -520--💚 -320
libraries/WebServer/examples/MultiHomedServers💚 -520💚 -420💚 -240💚 -280💚 -280💚 -520--💚 -280
libraries/WebServer/examples/PathArgServer💚 -520💚 -420💚 -240💚 -280💚 -280💚 -520--💚 -280
libraries/WebServer/examples/SDWebServer💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/WebServer/examples/SimpleAuthentification💚 -520💚 -420💚 -240💚 -320💚 -280💚 -520--💚 -280
libraries/WebServer/examples/UploadHugeFile💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/WebServer/examples/WebServer💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/WebServer/examples/WebUpdate💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/WiFi/examples/FTM/FTM_Initiator💚 -520💚 -420💚 -240💚 -280💚 -280💚 -520--💚 -280
libraries/WiFi/examples/FTM/FTM_Responder💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/WiFi/examples/SimpleWiFiServer💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/WiFi/examples/WPS💚 -520--💚 -24000💚 -280💚 -520--💚 -280
libraries/WiFi/examples/WiFiAccessPoint💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/WiFi/examples/WiFiBlueToothSwitch💚 -520--💚 -240--💚 -280💚 -520--💚 -280
libraries/WiFi/examples/WiFiClient💚 -520💚 -420💚 -280💚 -280💚 -280💚 -520--💚 -280
libraries/WiFi/examples/WiFiClientBasic💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/WiFi/examples/WiFiClientConnect💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -120
libraries/WiFi/examples/WiFiClientEnterprise💚 -520--💚 -280💚 -240💚 -280💚 -520--💚 -280
libraries/WiFi/examples/WiFiClientEvents💚 -520💚 -420💚 -240💚 -320💚 -280💚 -520--💚 -280
libraries/WiFi/examples/WiFiClientStaticIP💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/WiFi/examples/WiFiExtender💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/WiFi/examples/WiFiIPv6💚 -520💚 -420💚 -200💚 -240💚 -280💚 -520--💚 -280
libraries/WiFi/examples/WiFiMulti💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/WiFi/examples/WiFiMultiAdvanced💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -320
libraries/WiFi/examples/WiFiScan💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/WiFi/examples/WiFiScanAsync💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/WiFi/examples/WiFiScanDualAntenna💚 -520💚 -420💚 -240💚 -200💚 -280💚 -520--💚 -280
libraries/WiFi/examples/WiFiScanTime💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520--💚 -320
libraries/WiFi/examples/WiFiSmartConfig💚 -520--💚 -240💚 -200💚 -280💚 -520--💚 -280
libraries/WiFi/examples/WiFiTelnetToSerial💚 -520💚 -420💚 -120💚 -160💚 -280💚 -520--💚 -280
libraries/WiFi/examples/WiFiUDPClient💚 -520💚 -420💚 -240💚 -200💚 -280💚 -520--💚 -120
libraries/WiFiProv/examples/WiFiProv💚 -520--💚 -240💚 -240💚 -280💚 -520--💚 -280
libraries/Wire/examples/WireMaster💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -320💚 -280
libraries/Wire/examples/WireScan💚 -520💚 -420💚 -240💚 -240💚 -280💚 -520💚 -320💚 -280
libraries/Wire/examples/WireSlave💚 -520💚 -420💚 -240💚 -240💚 -300💚 -540💚 -300💚 -280
libraries/Wire/examples/WireSlaveFunctionalCallback💚 -520💚 -420💚 -240💚 -240💚 -300💚 -540💚 -300💚 -280
libraries/Zigbee/examples/Zigbee_Analog_Input_Output💚 -520--💚 -240💚 -280💚 -280💚 -520💚 -300💚 -280
libraries/Zigbee/examples/Zigbee_Binary_Input_Output💚 -520--------💚 -520💚 -300--
libraries/Zigbee/examples/Zigbee_CarbonDioxide_Sensor💚 -520--------💚 -520💚 -300--
libraries/Zigbee/examples/Zigbee_Color_Dimmable_Light💚 -520--------💚 -520💚 -300--
libraries/Zigbee/examples/Zigbee_Color_Dimmer_Switch💚 -520--💚 -280💚 -240💚 -280💚 -520💚 -300💚 -320
libraries/Zigbee/examples/Zigbee_Contact_Switch💚 -520--------💚 -520💚 -300--
libraries/Zigbee/examples/Zigbee_Dimmable_Light💚 -520--------💚 -520💚 -300--
libraries/Zigbee/examples/Zigbee_Electrical_AC_Sensor💚 -520--💚 -120💚 -280💚 -280💚 -520💚 -300💚 -280
libraries/Zigbee/examples/Zigbee_Electrical_AC_Sensor_MultiPhase💚 -520--💚 -240💚 -240💚 -280💚 -520💚 -300💚 -320
libraries/Zigbee/examples/Zigbee_Electrical_DC_Sensor💚 -520--------💚 -520💚 -300--
libraries/Zigbee/examples/Zigbee_Fan_Control💚 -520--💚 -240💚 -240💚 -280💚 -520💚 -300💚 -320
libraries/Zigbee/examples/Zigbee_Gateway💚 -520--💚 -280💚 -240💚 -280----💚 -280
libraries/Zigbee/examples/Zigbee_Illuminance_Sensor💚 -520--------💚 -520💚 -300--
libraries/Zigbee/examples/Zigbee_Multistate_Input_Output💚 -520--💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/Zigbee/examples/Zigbee_OTA_Client💚 -520--------💚 -520💚 -300--
libraries/Zigbee/examples/Zigbee_Occupancy_Sensor💚 -520--------💚 -520💚 -300--
libraries/Zigbee/examples/Zigbee_On_Off_Light💚 -520--------💚 -520💚 -300--
libraries/Zigbee/examples/Zigbee_On_Off_MultiSwitch💚 -520--💚 -240💚 -280💚 -280💚 -520💚 -300💚 -280
libraries/Zigbee/examples/Zigbee_On_Off_Switch💚 -520--💚 -240💚 -320💚 -280💚 -520💚 -300💚 -280
libraries/Zigbee/examples/Zigbee_PM25_Sensor💚 -520--------💚 -520💚 -300--
libraries/Zigbee/examples/Zigbee_Power_Outlet💚 -520--💚 -240💚 -240💚 -280💚 -520💚 -300💚 -280
libraries/Zigbee/examples/Zigbee_Pressure_Flow_Sensor💚 -520--------💚 -520💚 -300--
libraries/Zigbee/examples/Zigbee_Range_Extender💚 -520--💚 -320💚 -240💚 -280💚 -520💚 -300💚 -320
libraries/Zigbee/examples/Zigbee_Scan_Networks💚 -520--------💚 -520💚 -300--
libraries/Zigbee/examples/Zigbee_Temp_Hum_Sensor_Sleepy💚 -520--------💚 -520💚 -300--
libraries/Zigbee/examples/Zigbee_Temperature_Sensor💚 -520--------💚 -520💚 -300--
libraries/Zigbee/examples/Zigbee_Thermostat💚 -520--💚 -240💚 -240💚 -280💚 -520💚 -300💚 -120
libraries/Zigbee/examples/Zigbee_Vibration_Sensor💚 -520--------💚 -520💚 -300--
libraries/Zigbee/examples/Zigbee_Wind_Speed_Sensor💚 -520--------💚 -520💚 -300--
libraries/Zigbee/examples/Zigbee_Window_Covering💚 -520--------💚 -520💚 -300--
libraries/ESP32/examples/DeepSleep/TouchWakeUp--💚 -420💚 -240💚 -240------💚 -280
libraries/ESP32/examples/TWAI/TWAIreceive--💚 -420💚 -240💚 -240💚 -280💚 -540💚 -300💚 -280
libraries/ESP32/examples/TWAI/TWAItransmit--💚 -420💚 -240💚 -240💚 -280💚 -540💚 -300💚 -280
libraries/ESP32/examples/Touch/TouchButton--💚 -420💚 -240💚 -240------💚 -280
libraries/ESP32/examples/Touch/TouchInterrupt--💚 -420💚 -240💚 -240------💚 -280
libraries/ESP32/examples/Touch/TouchRead--💚 -420💚 -240💚 -240------💚 -280
libraries/ESP_I2S/examples/Record_to_WAV--💚 -420💚 -240--------💚 -280
libraries/ESP_SR/examples/Basic--💚 -480💚 -240----------
libraries/Ethernet/examples/ETH_TLK110--💚 -420----------💚 -280
libraries/SD_MMC/examples/SD2USBMSC--💚 -420💚 -200----------
libraries/SD_MMC/examples/SDMMC_Test--💚 -420💚 -240--------💚 -280
libraries/SD_MMC/examples/SDMMC_time--💚 -420💚 -200--------💚 -280
libraries/USB/examples/CompositeDevice--💚 -420💚 -240💚 -240--------
libraries/USB/examples/ConsumerControl--000000--------
libraries/USB/examples/CustomHIDDevice--💚 -420💚 -240💚 -240--------
libraries/USB/examples/FirmwareMSC--💚 -420💚 -240💚 -240--------
libraries/USB/examples/Gamepad--💚 -420💚 -240💚 -240--------
libraries/USB/examples/HIDVendor--💚 -420💚 -240💚 -240--------
libraries/USB/examples/Keyboard/KeyboardLogout--000000--------
libraries/USB/examples/Keyboard/KeyboardMessage--000000--------
libraries/USB/examples/Keyboard/KeyboardReprogram--000000--------
libraries/USB/examples/Keyboard/KeyboardSerial--💚 -420💚 -240💚 -240--------
libraries/USB/examples/KeyboardAndMouseControl--💚 -420💚 -240💚 -240--------
libraries/USB/examples/MIDI/MidiController--💚 -420💚 -240💚 -240--------
libraries/USB/examples/MIDI/MidiInterface--💚 -420💚 -240💚 -240--------
libraries/USB/examples/MIDI/MidiMusicBox--💚 -420💚 -240💚 -240--------
libraries/USB/examples/MIDI/ReceiveMidi--💚 -420💚 -240💚 -240--------
libraries/USB/examples/Mouse/ButtonMouseControl--000000--------
libraries/USB/examples/SystemControl--000000--------
libraries/USB/examples/USBMSC--💚 -420💚 -240💚 -240--------
libraries/USB/examples/USBSerial--💚 -420💚 -240💚 -240--------
libraries/USB/examples/USBVendor--💚 -420💚 -240💚 -240--------
libraries/ESP32/examples/Camera/CameraWebServer----💚 -280💚 -240------💚 -240
ESP32/examples/Camera/CameraWebServer (2)----💚 -240💚 -240------💚 -280
ESP32/examples/Camera/CameraWebServer (3)----💚 -280----------
libraries/ESP32/examples/DeepSleep/ExternalWakeUp----💚 -240💚 -240------💚 -280
libraries/BluetoothSerial/examples/DiscoverConnect--------------💚 -280
libraries/BluetoothSerial/examples/GetLocalMAC--------------💚 -280
libraries/BluetoothSerial/examples/SerialToSerialBT--------------💚 -280
libraries/BluetoothSerial/examples/SerialToSerialBTM--------------💚 -360
libraries/BluetoothSerial/examples/SerialToSerialBT_Legacy--------------💚 -320
libraries/BluetoothSerial/examples/SerialToSerialBT_SSP--------------💚 -280
libraries/BluetoothSerial/examples/bt_classic_device_discovery--------------💚 -280
libraries/BluetoothSerial/examples/bt_remove_paired_devices--------------💚 -280
libraries/ESP32/examples/DeepSleep/SmoothBlink_ULP_Code--------------💚 -280
libraries/Ethernet/examples/ETH_LAN8720--------------💚 -280
libraries/SimpleBLE/examples/SimpleBleDevice--------------💚 -320

@SuGlider SuGlider requested a review from Copilot September 6, 2025 15:52
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR fixes a bug in the ESP32 UART driver where the clock source wasn't properly applied when changing baud rates. The issue specifically affected ESP32 and ESP32-S2 SoCs when switching from low to high baud rates without explicit clock source configuration.

Key changes:

  • Removes automatic clock source tracking that was overriding user-defined settings
  • Ensures user-selected clock sources are always respected regardless of baud rate changes
  • Fixes condition check to properly handle user-defined clock sources (>= 0 instead of > 0)

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

@SuGlider SuGlider added the Status: Review needed Issue or PR is awaiting review label Sep 8, 2025
@SuGlider SuGlider moved this from Todo to In Review in Arduino ESP32 Core Project Roadmap Sep 8, 2025
@SuGlider SuGlider marked this pull request as ready for review September 8, 2025 14:19
@me-no-dev me-no-dev added Status: Pending Merge Pull Request is ready to be merged and removed Status: Review needed Issue or PR is awaiting review labels Sep 10, 2025
@me-no-dev me-no-dev merged commit 6dedab3 into master Sep 10, 2025
86 of 88 checks passed
@me-no-dev me-no-dev deleted the uart_user_defined_clock_source branch September 10, 2025 19:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Peripheral: UART Related to the UART peripheral or its functionality. Status: Pending Merge Pull Request is ready to be merged
Projects
Development

Successfully merging this pull request may close these issues.

[UART] Large deviation between requested and actual baud on ESP32 (Arduino core 3.2.1) — breaks comms
3 participants