Commit Graph
2025 Commits
Author SHA1 Message Date
Marek FialaandCursor 3f005c8a4d feat(tools): mcp-server added monitor-device tool
Add a `monitor_device` MCP tool that lets an AI agent run a scripted,
non-interactive `esp-idf-monitor` session against a flashed device and
get back a short status plus a log file path, instead of raw serial
output inline.

Under the hood:

- The agent supplies a plain-text command body (expect/send/sleep/reset/
  exit/comments). `assemble_monitor_script_from_agent_commands()` frames
  it into a script the monitor's non-interactive command mode can
  consume via stdin: it appends `exit` if the agent didn't already end
  with one, and rewrites every bare `expect <regex>` into `expect
  --timeout <timeout_sec> <regex>` via `_monitor_normalize_expect_line()`
  (an already-bounded `expect --timeout ...` line is left untouched so
  the monitor itself reports a bad value). A leading `reset` is not
  prepended - the monitor already resets the chip when it opens the
  port - and any `reset` the agent wrote is left in place.
  `_monitor_parse_sleep_duration()` extracts each `sleep <n>` duration.
  The effective timeout is the sum of every bounded expect duration
  plus every sleep duration. Scripts whose sum exceeds
  `MONITOR_MAX_SCRIPT_SEC` are rejected. If the script has neither
  expect nor sleep (for example only `send`), `timeout_sec` is used so
  the process still has a kill bound.

- `monitor_device()` runs `python -m esp_idf_monitor` via
  `subprocess.run(..., input=script, timeout=2 * effective_timeout)`.
  `no_reset` is forwarded as `--no-reset` so the connection reset can be
  skipped; an explicit `-p` is forwarded when a port is given. Extra
  arguments match `idf.py monitor` where a build exists: baud (`baud`
  tool arg, else `monitor_baud` from `project_description.json`),
  toolchain prefix, `--target`/`--revision`, coredump/panic decode, and
  ELF files with the app ELF first. The 2x hard timeout is a safety net
  independent of the script's own `expect --timeout`/`exit` logic; on
  `TimeoutExpired` the process is killed but any output already captured
  is preserved and logged. `decode_stream()` normalizes that captured
  output, which can be `bytes` on the timeout path even though the
  process otherwise runs in text mode.

- The monitor's exit code drives the reported status via
  `_monitor_status()`, using `EXIT_EXPECT_TIMEOUT` and
  `EXIT_SCRIPT_ERROR` from `esp_idf_monitor.base.constants`: 0 is
  success, 110 means an `expect` pattern never showed up before its
  `--timeout` elapsed, 2 means the monitor rejected the script (bad
  syntax/timeout/regex), anything else is reported generically.

- Serial output and the monitor's own messages share one pipe
  (`stderr=STDOUT`) so decoded panic backtraces stay next to the lines
  that triggered them. `_save_monitor_output()` writes the full merge to
  `<tempdir>/esp_idf_mcp_log/action_monitor/monitor_<timestamp>.log` and
  reports a dedicated `Log file:` line. On non-zero exit or process
  kill, a short tail of that same merge is also returned inline so the
  agent has some failure context without a second file read. If the log
  file can't be written, it falls back to inlining a truncated tail.

Closes https://github.com/espressif/esp-idf/issues/18757
Closes https://github.com/espressif/esp-idf/pull/18385

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 15:20:45 +02:00
Roland Dobai 2e6d41c2e9 Merge branch 'task/buildv2_gdbinit_multi_exec' into 'master'
feat(cmakev2): parameterize gdbinit for multi-executable builds

Closes IDF-15860

See merge request espressif/esp-idf!51239
2026-09-10 10:59:42 +02:00
Mo Fei Fei bb2c545085 docs(uart): clarify example pins need a USB-to-UART bridge 2026-09-10 14:50:43 +08:00
Roland Dobai f20a9211af Merge branch 'docs/idf-monitor-fast-reflash' into 'master'
docs: Update idf-monitor fast reflash shortcut documentation

See merge request espressif/esp-idf!51445
2026-09-09 10:17:46 +02:00
Peter Dragun ae4396b5ed docs: Update idf-monitor fast reflash shortcut documentation 2026-09-07 08:42:38 +02:00
Marius Vikhammer b38c8a0625 Merge branch 'feat/llvm-opt-integration' into 'master'
feat(compiler): add ESP-IDF LLVM optimization enablement framework

See merge request espressif/esp-idf!51154
2026-09-07 10:11:37 +08:00
Sudeep Mohanty 0ca0b8da52 feat(cmakev2): parameterize gdbinit for multi-executable builds
__generate_gdbinit wrote into a single shared directory and derived the
application ELF from a global property, so a project building multiple
executables had their gdbinit files overwrite each other. Take the ELF
path and output directory as arguments, and derive them per executable in
idf_build_generate_metadata.
2026-09-04 13:00:09 +08:00
chenqianandCursor 25046e7959 feat(compiler): add ESP-IDF LLVM optimization enablement framework
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 13:02:58 +08:00
Vojtech Piroch 19676ffa46 fix(tools): Detect serial port matching the project target
Auto-detect used to pick the first Espressif device, even when it did
not match IDF_TARGET. With several boards attached, flash/monitor could
talk to the wrong chip.

Pass the project target into esptool so unmatched ports are skipped.
Resolve the port after ensure_build_directory() so the target is known.
For monitor on an unconfigured project, probe the connected chip and
pass it directly to idf_monitor without configuring the project.
2026-09-02 17:18:57 +08:00
yinqingzhao 164190b8c8 feat(wifi): support disable dfs channels in apsta example 2026-08-24 10:33:10 +08:00
Marius Vikhammer 5c0facdaba fix(cmakev2): include config-selected default components 2026-08-20 11:09:58 +08:00
Daniel Paul b764f073ac feat: Consume root-managed components from IDF Component Manager 2026-08-18 20:51:54 +08:00
Wei Yu Han 55afb36110 Merge branch 'feat/update_ble_feature_support_status_0813' into 'master'
feat(docs): update BLE feature support status for ISO and Core 6.1-6.3

See merge request espressif/esp-idf!51719
2026-08-17 08:30:58 +08:00
Wei Yuhan 7891e0d65a feat(docs): fix PAST and randomized adv channel indexing status
Gate PAST on SOC_ESP_NIMBLE_CONTROLLER, mark randomized advertising
channel indexing host columns as NA, and limit controller experimental
status to NimBLE controllers except ESP32-C2.
2026-08-13 17:26:03 +08:00
Wei Yuhan bacdf4ba93 feat(docs): update BLE feature support status for ISO and Core 6.1-6.3
Mark ISOAL/ISO features as experimental when SOC_BLE_ISO_SUPPORTED,
add unsupported Core Spec 6.1-6.3 features, and move NimBLE LL Extended
Feature Set target to 2026/12.
2026-08-13 14:14:09 +08:00
Wei Yuhan cfd47ad13a feat(docs): Updated BLE support features status 2026-08-13 09:18:55 +08:00
luweike 7fbedd2b61 docs: Update Get Started for ESP32-S31 2026-08-12 15:00:06 +08:00
Marius Vikhammer 4d332f710e docs(kconfig): update kconfig ref links to use menuitem 2026-08-11 11:19:45 +02:00
Alexey Gerenkov 72732994ef Merge branch 'feature/enable_atomic_lock_policy_on_riscv' into 'master'
feat(build): add CONFIG_COMPILER_CXX_ATOMIC_LOCK_POLICY option

See merge request espressif/esp-idf!49913
2026-08-04 20:05:40 +08:00
Roland Dobai 56fea7d784 Merge branch 'docs/idf_sbom_multi_format' into 'master'
docs: Update the SBOM guide for multiple output formats

See merge request espressif/esp-idf!50299
2026-08-03 11:56:44 +02:00
Roland Dobai b1d066dbd4 Merge branch 'contrib/github_pr_18871' into 'master'
feat(tools): add -j/--jobs option to idf.py (GitHub PR)

Closes IDFGH-18013

See merge request espressif/esp-idf!51409
2026-08-03 11:25:52 +02:00
Erhan Kurubas 11e6799f80 Merge branch 'stub_bins_for_more_targets' into 'master'
Increase OCD stub memory reservation from 8K to 12K and extend this feature to more targets

See merge request espressif/esp-idf!51231
2026-07-28 16:58:05 +02:00
Erhan Kurubas 6e5b4febf8 change(system): increase OCD stub memory reservation from 8K to 12K 2026-07-28 07:45:39 +03:00
Erhan Kurubas 19a27980a5 refactor(examples): group trace examples under examples/system/tracing/
Move 7 trace-related examples (app_trace_basic, app_trace_to_plot,
esp_trace_custom_library, function_tracing, gcov, sysview_tracing,
sysview_tracing_heap_log) from examples/system/ into a dedicated
examples/system/tracing/ subdirectory for better organization.

Update all path references across documentation (en + zh_CN),
build-test-rules, CI configs, Kconfig, and component READMEs.
2026-07-27 23:56:02 +03:00
Alexey Lapshin b3ae652f21 feat(build): add CONFIG_COMPILER_CXX_ATOMIC_LOCK_POLICY option
libstdc++ selects between a lock-free and a mutex-based policy for
std::shared_ptr reference counting based on this macro. Enabling this
option forces the lock-free policy, which avoids pulling in the
mutex-based implementation and can reduce code size.

Note: the lock-free policy avoids embedding a mutex in each control
block, saving about 88 bytes per shared_ptr, and improves performance
by using atomic operations instead of mutex locking.

Note: this option changes the ABI of libstdc++ atomic/shared_ptr
helpers. It can be incompatible when linking against prebuilt
libraries that were compiled without it, leading to link errors or
undefined runtime behavior. Only enable it if all C++ objects and
libraries in the build use the same setting.
2026-07-23 18:20:25 +07:00
morris ee2cfdb3f3 Merge branch 'feature/isp-flash-dma-input' into 'master'
feat(isp): add aligned flash DMA input example

See merge request espressif/esp-idf!50959
2026-07-23 19:13:55 +08:00
Zhang Shuxian 35deba1bd7 docs: Update CN translation for tracing 2026-07-23 09:34:16 +03:00
Erhan Kurubas 6c6490d54c docs(esp_trace): restructure tracing docs with esp_trace as master
Reorganize the tracing documentation so esp_trace is the master
component, with app_trace, SystemView, and Gcov referenced from it.
2026-07-23 08:58:30 +03:00
Nebojša CvetkovićandClaude Opus 4.8 db6b310447 feat(tools): add -j/--jobs option to idf.py
Add a global -j/--jobs option to idf.py that sets the number of parallel
build jobs passed to the underlying build tool. Previously parallelism was
only configurable via the IDF_PY_BUILD_JOBS environment variable, and only
for the Ninja generator.

The option applies to both Ninja and Make and defaults to IDF_PY_BUILD_JOBS
when not given, so the environment variable keeps working as before.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 16:02:52 +01:00
Ivan Grokhotkov d3766ffdea Merge branch 'feature/build-file-command' into 'master'
feat: add idf.py build-file command for standalone C files

Closes IDF-15453

See merge request espressif/esp-idf!47618
2026-07-22 10:34:38 +02:00
Ivan Grokhotkov (bot)andClaude Fable 5 b3a0e166fe feat: add compile_options support to idf.py build-file
Allow specifying extra compiler flags (warning flags, preprocessor
definitions, etc.) via a new 'compile_options' entry in the
idf-build-file frontmatter. The options are applied to the source
file via target_compile_options in the generated main component
CMakeLists, with CMake quoting so that flags like -DMSG="hello world"
reach the compiler exactly as written.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 22:04:41 +02:00
Ivan GrokhotkovandClaude Fable 5 16275df0a1 feat: add idf.py build-file command for standalone C files
Add a new idf.py extension that allows building standalone C files
without requiring full project boilerplate. Source files can include
optional YAML frontmatter in block comments to specify sdkconfig
options, component dependencies, and target configuration.

When the frontmatter configuration changes, the stale sdkconfig is
removed so the new defaults are applied, and a target change also
clears the build directory since IDF_TARGET is pinned in the CMake
cache.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 22:04:41 +02:00
morris 0315e2fb2e feat(build): support aligned embedded binary data
Allow callers to align embedded binary start symbols for DMA-capable
assets.
2026-07-21 10:40:18 +08:00
morris 2da1deee3b Merge branch 'contrib/github_pr_18864' into 'master'
docs: fix duplicate word typos across docs and hal (GitHub PR)

Closes IDFGH-18006

See merge request espressif/esp-idf!50942
2026-07-20 15:02:23 +08:00
Atharva-2708 f8544b40df docs: fix duplicate word typos across docs and hal
Removes duplicated "the" typos in FreeRTOS, eFuse, Kconfig documentation, and the HAL README.

Signed-off-by: Atharva-2708 <atharva.btech27@gmail.com>
2026-07-19 15:31:16 +05:30
Erhan Kurubas 39d6aaaecb feat(esp_trace): add compiler-instrumented function tracing support 2026-07-16 10:18:25 +02:00
Konstantin Kondrashov 686f522200 Merge branch 'doc/bootloader-anti-rollback-fix' into 'master'
fix(docs): Update bootloader anti-rollback documentation

See merge request espressif/esp-idf!50514
2026-07-15 18:05:00 +03:00
Konstantin Kondrashov 05b65a5b0e fix(docs): Update bootloader anti-rollback documentation 2026-07-15 17:43:55 +03:00
Ivan Grokhotkov (bot)andClaude Opus 4.8 4c25d4e9ab docs(performance): mention LTO in the optimizing-for-size guide
Document CONFIG_COMPILER_LTO_LINKTIME / CONFIG_COMPILER_LTO_COMPILETIME in the
binary size reduction guide, including the caveats: less accurate per-component
size breakdown, longer build times, incompatibility with custom linker
fragments, and harder debugging.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-14 19:32:19 +02:00
Zhi Wei Jian 2e6cbccd55 Merge branch 'feat/support_bluedroid_dual_identify' into 'master'
feat(ble/bluedroid): Support bluedroid dual indentify

See merge request espressif/esp-idf!49640
2026-07-13 10:03:39 +08:00
zhiweijian 2358786647 feat(ble/bluedroid): Support bluedroid dual identity 2026-07-10 17:57:09 +08:00
Wu Zheng Hui d26f5682cf Merge branch 'change/change_regdma_malloc_caps' into 'master'
change(heap): reserve DMA pool with low priority MALLOC_CAP_DEFAULT cap

See merge request espressif/esp-idf!50255
2026-07-09 19:32:56 +08:00
nilesh.kale 97c2fcf66a feat: update docs for ESP32H4 security chapters 2026-07-06 10:12:35 +05:30
wuzhenghui a3fc0c4b58 change(heap): reserve DMA pool with low priority MALLOC_CAP_DEFAULT caps 2026-07-03 20:54:30 +08:00
Frantisek Hrbata eb5fd63965 docs: Update the SBOM guide for multiple output formats
Document the create --format option (SPDX 2.2 tag/value and JSON, SPDX 3.0.1
JSON-LD, and CycloneDX 1.6) and the new --file option on idf.py sbom-create and
sbom-check, and generalize the previously SPDX-only wording. Note the NVDAPIKEY
variable for faster online scans, document that sbom-check exits with a non-zero
status when vulnerabilities are found, drop an unused link target, and update the
SBOM reference link. Fix the section heading levels to follow the esp-docs
conventions.
2026-07-02 12:24:49 +02:00
Frantisek Hrbata 4cc2d22c48 Merge branch 'docs/cmakev2-build-system-v2' into 'master'
docs(cmakev2): Restructure build system v2 documentation into a guide

Closes IDF-15079 and IDF-15475

See merge request espressif/esp-idf!49781
2026-06-29 07:36:01 +02:00
Zhang Shuxian 320ea43509 docs: Update CN translation for idf-py.rst 2026-06-24 18:46:39 +08:00
Marek FialaandCursor 33924459ab docs(tools): update mcp-server docs for project_dir and create-project
- Server can now start from any directory, not just a valid project dir
- Document project_dir argument available on all tools
- Add create-project tool to the list of available tools

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-24 18:46:39 +08:00
Frantisek Hrbata f8adfd176e docs(cmakev2): Restructure build system v2 documentation into a guide
Split the single build-system-v2 page into a landing page that dispatches
to focused how-to guides (creating a project, creating components,
configuring dependencies, third-party libraries, ESP-IDF as a library,
multiple binaries) and reference pages (design and architecture, breaking
changes, and the generated API reference). Mirror the new structure on
zh_CN and update the API Guides table of contents.

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2026-06-24 09:13:01 +02:00
71e057cfca docs(jtag-debugging): add semihosting chapter
Co-authored-by: Shen Mengjing <shenmengjing@espressif.com>
Co-authored-by: Zhang Shu Xian <zhangshuxian@espressif.com>
2026-06-22 12:55:06 +02:00