Skip to content

Fix boot loop on single-core targets (ESP32-S2, C3/C6/H2) by guarding task pinning - #5

Merged
luar123 merged 1 commit into
luar123:componentfrom
tortfeaser:fix/single-core-task-pinning
Sep 21, 2026
Merged

luar123 merged 1 commit into
luar123:componentfrom
tortfeaser:fix/single-core-task-pinning

Conversation

@tortfeaser

Copy link
Copy Markdown

start_player() and start_snapcast() both call xTaskCreatePinnedToCore(..., 1) unconditionally. On single-core parts (S2, and the RISC-V C3/C6/H2 family) there is no core 1, so the xCoreID < configNUMBER_OF_CORES assert in freertos_tasks_c_additions.h fires immediately and the chip resets in a loop. Guard both call sites on CONFIG_FREERTOS_NUMBER_OF_CORES == 1, falling back to a plain xTaskCreate (unpinned) only on single-core targets. Multi-core boards keep the existing pinned-task behaviour unchanged. Reported and reproduced on a LOLIN S2 Mini (ESP32-S2FN4R2) via esphome/esphome#14389; the same underlying pinning issue was independently hit on an ESP32-C5 in the same thread.

Tested on: LOLIN S2 Mini (ESP32-S2). Boot loop resolved — ran 20+ seconds without a reset, past the point where the original assert previously fired immediately on boot.

start_player() and start_snapcast() both call xTaskCreatePinnedToCore(..., 1)
unconditionally. On single-core parts (S2, and the RISC-V C3/C6/H2 family)
there is no core 1, so the xCoreID < configNUMBER_OF_CORES assert in
freertos_tasks_c_additions.h fires immediately and the chip resets in a loop.

Guard both call sites on CONFIG_FREERTOS_NUMBER_OF_CORES == 1, falling back
to a plain xTaskCreate (unpinned) only on single-core targets. Multi-core
boards keep the existing pinned-task behaviour unchanged.

Reported and reproduced on a LOLIN S2 Mini (ESP32-S2FN4R2) via
esphome/esphome#14389; the same underlying pinning issue was independently
hit on an ESP32-C5 in the same thread.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@luar123
luar123 merged commit 7742680 into luar123:component Sep 21, 2026
2 checks passed
@luar123

luar123 commented Sep 21, 2026

Copy link
Copy Markdown
Owner

Thank you

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants