Commit Graph
287 Commits
Author SHA1 Message Date
Rahul Tank cd0ad239a6 Merge branch 'bugfix/nimble_issues_02062026_v6.0' into 'release/v6.0'
fix(nimble):  Fix few nimble issues 02062026 (v6.0)

See merge request espressif/esp-idf!49153
2026-06-29 21:52:48 +05:30
Island 6e73125228 Merge branch 'feat/spi_log_qa_frame_check_v6.0' into 'release/v6.0'
feat(ble_log): add FINAL_STAT session-end frame and flush hook before controller restart (6.0)

See merge request espressif/esp-idf!49958
2026-06-29 20:25:50 +08:00
Rahul Tank b633c5e2a5 fix(nimble): Add support for shorter connection intervals 2026-06-29 15:25:37 +05:30
Mayank Tyagi 0a90976237 feat(nimble): ADD BLE HCI logging support for ESP Insights 2026-06-29 15:25:36 +05:30
Jiang Jiang Jian c1aeac2888 Merge branch 'bugfix/fix_bluedroid_ai_review_bugs_20260427_v6.0' into 'release/v6.0'
Bugfix/fix bluedroid ai review bugs 20260427 (6.0)

See merge request espressif/esp-idf!49541
2026-06-29 15:39:47 +08:00
Guo Zifan e3963cd433 feat(ble_log): Add frame check support for restart flow
(cherry picked from commit a81322a2ce)

Co-authored-by: guozifan <guozifan@espressif.com>
2026-06-24 15:32:33 +08:00
Zhi Wei Jian b55f972546 fix(bt): fix BTC task and BLE mesh bluedroid adapter
(cherry picked from commit 678fb93245)

Co-authored-by: zhiweijian <zhiweijian@espressif.com>
2026-06-10 19:54:01 +08:00
Zhou Xiao 48d6feb6ea change(ble_log): move spi tx callback to flash when spi isr in iram disabled
(cherry picked from commit 725e9ee162)

Co-authored-by: Zhou Xiao <zhouxiao@espressif.com>
2026-06-03 15:38:32 +08:00
luoxu 3dd06b7abe fix(bt): Normalize source paths for log compression pattern matching 2026-05-26 13:34:43 +08:00
ShenWeilong d8c912eb4d change(bt): Separated bt/cmakelist to bt/controller/cmakelist and bt/porting/cmakelist 2026-05-25 21:01:21 +08:00
Sahil Yadav 36f0fd3962 feat(nimble): Added NimBLE log compression scripts in v6.0 2026-05-15 12:16:25 +05:30
Zhang Hai Peng e0eac2de6b feat(ble): Support BLE critical logs
(cherry picked from commit 0af57d731c)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-05-14 14:23:51 +08:00
zhiweijian b788a733ad fix(ble): Fixed AI review bugs in bt common 2026-05-12 11:43:31 +08:00
Jiang Jiang Jian ceb0c00dac Merge branch 'fix/ble_log_compression_safety_v6.0' into 'release/v6.0'
fix(ble_log): fix unaligned access and buffer safety in log compression (6.0)

See merge request espressif/esp-idf!47931
2026-05-11 10:59:27 +08:00
Rahul Tank 81476b116d fix(nimble): Address review fixes for tinycrypt / and blufi code 2026-05-08 14:23:48 +05:30
Island 7d11365a3c Merge branch 'fix/add-scheduler-suspended-check-in-ble-log_v6.0' into 'release/v6.0'
fix: BLE Log Module Issues 20260407 (6.0)

See merge request espressif/esp-idf!47560
2026-05-08 11:01:27 +08:00
luoxu b372423d03 fix(ble_log): fix unaligned access and buffer safety in log compression 2026-05-07 12:11:09 +08:00
Luo Xu e6d937890b test(ble): add comprehensive test suite for log compression
(cherry picked from commit 58121d2540)

Co-authored-by: luoxu <luoxu@espressif.com>
2026-05-07 12:10:32 +08:00
Luo Xu 1a191068f7 fix(ble): replace hardcoded tuple indices with FormatToken NamedTuple
(cherry picked from commit b7760a77e4)

Co-authored-by: luoxu <luoxu@espressif.com>
2026-05-07 12:10:32 +08:00
Rahul Tank a47ea03266 feat(nimble): Support NimBLE log compression and decompression over SPI 2026-05-01 16:34:46 +05:30
Jiang Jiang Jian 2662c1ac0c Merge branch 'bugfix/fix_blufi_watchdog_v6.0' into 'release/v6.0'
fix(blufi): Support DH negotiation on SoCs without hardware MPI(v6.0)

See merge request espressif/esp-idf!47377
2026-04-30 16:29:28 +08:00
Zhou Xiao 70505621bf change(ble_log): update ble log version to 5 for esp ble controller log encoding indication 2026-04-29 12:11:58 +08:00
Island f91a82a15c Merge branch 'feat/support_mbedtls_for_ble_hci_example_v6.0' into 'release/v6.0'
feat(ble): support mbedtls for ble controller encryption (6.0)

See merge request espressif/esp-idf!46908
2026-04-29 10:40:47 +08:00
Zhou Xiao 30fa84b0b0 fix(ble_log): ensure BLE Log IRAM functions are placed in IRAM on ESP32C2
On ESP32C2 with BT_CTRL_RUN_IN_FLASH_ONLY, the bt_default linker scheme
routes .iram1 sections to flash_text, causing BLE_LOG_IRAM_ATTR functions
to end up in flash instead of IRAM. Define a dedicated .ble_log_iram1
section for ESP32C2 and route it to iram0_bt_text unconditionally.
2026-04-28 13:29:15 +08:00
Zhou Xiao b3dccba3ac fix(ble_log): improve robustness with atomics, macro hygiene, and IRAM
- Use __atomic_fetch_add for stat_mgr counters to prevent lost updates
  under concurrent ISR/task access (H1)
- Use __atomic_load_n with ACQUIRE ordering for ref_count spin-loops (L1)
- Remove unnecessary BLE_LOG_IRAM_ATTR from ble_log_rt_task since it
  calls flash-resident functions and cannot run during flash ops (L3)
- Add parentheses to BLE_LOG_TRANS_FREE_SPACE and BLE_LOG_MAKE_FRAME_META
  macro parameters to prevent operator precedence bugs (M6)
2026-04-28 13:29:15 +08:00
Zhou Xiao 217d9b23f6 fix(ble_log): fix deinit race and concurrent flush deadlock
- Reorder deinit: stop RT task before destroying peripheral driver to
  prevent sending transports to a NULL dev_handle on dual-core (H2)
- Drain remaining queue items in rt_deinit to clean up transport state
- Add atomic flush_in_progress guard to prevent two concurrent
  ble_log_flush() callers from deadlocking on ref_count spin-wait (H5)
2026-04-28 13:29:15 +08:00
Zhou Xiao 9c8090a5d4 fix(ble_log): fix crash and resource issues in peripheral drivers
- Handle scheduler-suspended and ISR context in UART redirect path
  to prevent xSemaphoreTake crash during light sleep (C1)
- Check uart_driver_install return value before setting inited flag (M1)
- Always clean up SPI device handle in deinit even if acquire_bus fails (M4)
2026-04-28 13:29:15 +08:00
Zhou Xiao ed097f942f fix(ble_log): handle scheduler-suspended state in ble_log_rt_queue_trans
During light sleep transitions, the FreeRTOS scheduler is suspended but
xPortInIsrContext() returns false, causing xQueueSend with portMAX_DELAY
to hit a configASSERT. Add a check for taskSCHEDULER_SUSPENDED and use
a non-blocking send with rollback on queue-full to avoid resource leaks.
2026-04-28 13:29:15 +08:00
Rahul Tank af6ea89656 fix(blufi): support DH negotiation on SoCs without hardware MPI 2026-04-09 16:35:55 +05:30
Zhou Xiao 03a54ef8f9 fix(ble_log_console): exclude from idf-ci pytest collection to fix CI
idf-ci discovers pyproject.toml pytest config and runs a separate
collection pass with --target all, which finds 0 target tests and
raises RuntimeError. Add to .idf_ci.toml exclude_dirs instead of
deleting tests. Restore all 227 unit tests with lint/mypy fixes.


(cherry picked from commit 205bc49fd6)

Co-authored-by: Zhou Xiao <zhouxiao@espressif.com>
2026-04-03 21:15:00 +08:00
Zhou Xiao 9a30fc326d docs(ble_log): update README for multi-buffer transport and removed modules
Reflect changes from dev/ble-log-202603: ping-pong to multi-buffer
transport (4 buffers/LBM), renamed Kconfig options (LBM_TRANS_SIZE →
LBM_TRANS_BUF_SIZE with new defaults), always-enabled checksum and
enhanced statistics, UART redirection support, UHCI Out removal,
SPI Out deprecation, and updated memory estimation.


(cherry picked from commit aec896b6b9)

Co-authored-by: Zhou Xiao <zhouxiao@espressif.com>
2026-04-03 21:15:00 +08:00
Zhou Xiao 23d64937f3 feat(bt): add BT_LOG_CRITICAL_ONLY bandwidth-optimized log mode
Add Kconfig options for bandwidth-optimized logging via the BLE Log
Async Output system. When enabled, controller log levels default to 2
and host/mesh log encoding is auto-selected.

- BT_LOG_CRITICAL_ONLY parent: selects BLE_LOG_ENABLED + compression
- BT_LOG_CRITICAL_ONLY_CTRL: supports both NimBLE and non-NimBLE (C3)
  controllers with default level override
- BT_LOG_CRITICAL_ONLY_HOST: host-agnostic, selects compressed log
  for Bluedroid conditionally
- BT_LOG_CRITICAL_ONLY_MESH: placeholder for mesh log encoding
- Guards against BT_STACK_NO_LOG conflict


(cherry picked from commit c223a3f835)

Co-authored-by: Zhou Xiao <zhouxiao@espressif.com>
2026-04-03 21:14:59 +08:00
Zhou Xiao fa9c6d53bb change(bt): consolidate BLE log Kconfig into common/Kconfig.in
Move per-chip BLE log Kconfig options (esp32c2/c5/c6/h2) into
components/bt/common/Kconfig.in for single-source-of-truth configuration.

Restructure menu as "BT Logs" with "Log Sources" sub-menu containing
controller log config options. Controller log output mode choice defaults
to BLE Log v2 when BLE_LOG_ENABLED, with legacy mode as deprecated
fallback. Migrate wrap_panic_handler and task_wdt_user_handler configs
as well since they depend on BT_LE_CONTROLLER_LOG_ENABLED.


(cherry picked from commit b5b886fd1e)

Co-authored-by: Zhou Xiao <zhouxiao@espressif.com>
2026-04-03 21:14:54 +08:00
Zhou Xiao b8db0aac93 change(ble_log): update ble log module description
(cherry picked from commit 99212e7fc4)

Co-authored-by: Zhou Xiao <zhouxiao@espressif.com>
2026-04-03 21:14:53 +08:00
Zhou Xiao fb5deba45b feat(bt/ble_log): add cross-pool buffer fallback in LBM acquire
Replace the two-step acquire() + get_trans() flow with a unified
acquire_trans() that iterates all candidate pools. When a pool's
buffers are exhausted, the lock is released and the next pool is
tried, enabling load balancing across pools instead of only
resolving lock contention.


(cherry picked from commit 1cc66e3888)

Co-authored-by: Zhou Xiao <zhouxiao@espressif.com>
2026-04-03 21:14:53 +08:00
Zhou Xiao 062b2378a4 fix(bt/ble_log): use atomic_load for inflight_peak in buf_util report
Replace __atomic_exchange_n with __atomic_load_n in
ble_log_emit_buf_util() so inflight_peak reports the all-time peak
since init rather than resetting to zero after each report.


(cherry picked from commit 257c4db455)

Co-authored-by: Zhou Xiao <zhouxiao@espressif.com>
2026-04-03 21:14:47 +08:00
Zhou Xiao 614ce961e3 feat(ble_log): migrate from ping-pong to multi-buffer transport
Migrate all LBM, RT, and peripheral backend code from 2-buffer
ping-pong to 4-buffer transport with bitmask index arithmetic.

LBM changes:
- Init sets owner on each transport buffer
- get_trans/flush/dump use (idx+1) & (cnt-1) instead of !idx
- get_trans/flush use __atomic_load_n(ACQUIRE) for prph_owned
- New ble_log_write_buf_util() emits BUF_UTIL telemetry frames,
  exchange peak with 0 to avoid stale baseline after bursts

RT changes:
- Queue depth uses unified BLE_LOG_TRANS_TOTAL_CNT
- rt_queue_trans uses __atomic_store_n for prph_owned, tracks
  per-LBM inflight count and peak via lock-free CAS
- ISR path captures pxHigherPriorityTaskWoken and yields

Peripheral changes:
- All tx_done callbacks: decrement inflight before releasing
  prph_owned with __atomic_store_n(RELEASE)
- SPI/UART send_trans error paths: decrement inflight and
  release prph_owned to allow retry on next get_trans pass
- Dummy send_trans: recycle buffer immediately (pos=0, decrement
  inflight, release prph_owned) since no DMA hardware to wait for
- Redir LBM upgraded to 4-buffer with owner and reset support
- All peripherals implement ble_log_prph_reset_util_counters()


(cherry picked from commit 75eef04a2c)

Co-authored-by: Zhou Xiao <zhouxiao@espressif.com>
2026-04-03 21:14:47 +08:00
Zhou Xiao cac9cdb4c8 feat(ble_log): define multi-buffer transport types and Kconfig
Replace ping-pong (2-buffer) transport constants with configurable
multi-buffer (4-buffer) types. Add buffer utilization reporting types,
unified queue depth derivation macros, and compile-time guards.

Rename Kconfig options to total-per-LBM semantics:
- BLE_LOG_LBM_TRANS_SIZE (512) -> BLE_LOG_LBM_TRANS_BUF_SIZE (2048)
- BLE_LOG_LBM_LL_TRANS_SIZE (1024) -> BLE_LOG_LBM_LL_TRANS_BUF_SIZE (2048)

Key type changes:
- ble_log_prph_trans_t: volatile bool -> plain bool (atomic ops used),
  add void *owner back-reference
- ble_log_lbm_t: trans array sized to BLE_LOG_TRANS_BUF_CNT (4),
  add trans_inflight and trans_inflight_peak counters
- BLE_LOG_TRANS_BUF_CNT replaces BLE_LOG_TRANS_PING_PONG_BUF_CNT
- New ble_log_buf_util_t for buffer utilization telemetry
- _Static_assert guards for divisibility, power-of-2, index limits


(cherry picked from commit fdd282da91)

Co-authored-by: Zhou Xiao <zhouxiao@espressif.com>
2026-04-03 21:14:46 +08:00
Zhou Xiao 5b1823c3ff feat(ble_log): consume frame_sn on loss path and bump BLE_LOG_VERSION
Add BLE_LOG_GET_FRAME_SN() on the buffer-full loss path so the SN
counter advances even when frames are dropped. This allows the console
to detect firmware-side buffer loss via SN gaps. Bump BLE_LOG_VERSION
to reflect the semantic change.


(cherry picked from commit 42f2aeedb7)

Co-authored-by: Zhou Xiao <zhouxiao@espressif.com>
2026-04-03 21:14:45 +08:00
Zhou Xiao e4f952d8cd feat(bt/ble_log): implement UART redirection stream write
Introduce stream write API with deferred frame encapsulation for UART
redirection on port 0. Redirected data is now properly framed (header +
payload + checksum) instead of being sent as raw ASCII, preventing frame
parser sync oscillation on the receiver.

- Add stream_seal/stream_write/stream_flush in ble_log_lbm.c
- Add BLE_LOG_SRC_REDIR source and BLE_LOG_UART_REDIR_ENABLED gate
- Simplify redir_uart_tx_chars and timer callback to use stream API
- Flush pending stream data in ble_log_prph_deinit
- Make get_trans static (no external callers after refactor)
- Move UART wrap linker flags outside CONFIG_BT_ENABLED guard
- Default UART DMA peripheral when SOC_UHCI_SUPPORTED
- Default baud rate 921600 -> 3000000


(cherry picked from commit a181fc156d)

Co-authored-by: Zhou Xiao <zhouxiao@espressif.com>
2026-04-03 21:14:40 +08:00
Zhou Xiao 3c622ec40e fix(bt/ble_log): fix flush timer callback in UART redirect module
Fix incorrect esp_timer callback signature, replace blocking mutex
with non-blocking trylock, add prph_inited guard, correct timer
period from 100us to 1s, and remove fragile idle-based flush logic.


(cherry picked from commit 45a475a627)

Co-authored-by: Zhou Xiao <zhouxiao@espressif.com>
2026-04-03 21:14:39 +08:00
Zhou Xiao 428f8f4f08 fix(bt/ble_log): use aligned counters in ble_log_stat_mgr_t
Replace embedded ble_log_enh_stat_t (packed wire struct) inside
ble_log_stat_mgr_t with flat uint32_t counters. Natural 4-byte
alignment ensures each load/store compiles to a single l32i/s32i
on Xtensa/RISC-V, making individual field access atomic without
locks.

Build the packed wire format on the stack inside a critical section
in ble_log_write_enh_stat() so the full snapshot is consistent.


(cherry picked from commit 4d193873f1)

Co-authored-by: Zhou Xiao <zhouxiao@espressif.com>
2026-04-03 21:14:39 +08:00
Zhou Xiao 5c4b179f62 change(bt/ble_log): make checksum and enhanced statistics always enabled
Remove CONFIG_BLE_LOG_PAYLOAD_CHECKSUM_ENABLED conditional compilation
-- payload checksum is always computed over the full frame.

Remove CONFIG_BLE_LOG_XOR_CHECKSUM_ENABLED conditional -- XOR checksum
is always used; delete the sum checksum dead code path.

Remove CONFIG_BLE_LOG_ENH_STAT_ENABLED conditional -- enhanced
statistics (frame/byte counters per source) are always active.

Remove incorrect select on choice symbol
BT_LE_CONTROLLER_LOG_MODE_BLE_LOG_V2 from BLE_LOG_IS_ESP_CONTROLLER.


(cherry picked from commit 3eb2f57605)

Co-authored-by: Zhou Xiao <zhouxiao@espressif.com>
2026-04-03 21:14:39 +08:00
Zhou Xiao 88482e2852 change(bt/ble_log): deprecate legacy SPI log output module
Move ble_log_spi_out.c and ble_log_spi_out.h into a deprecated/
subdirectory under components/bt/common/ble_log/. Extract all
BT_BLE_LOG_SPI_OUT_* Kconfig options into deprecated/Kconfig.in
with an if-block to reduce depends-on repetition, sourced from
ble_log/Kconfig.in inside a "Legacy SPI Log Output (Deprecated)"
menu. Add mutual exclusion with BLE_LOG_ENABLED so that the legacy
SPI Out and the new BLE Log Module cannot be enabled simultaneously.
Update CMakeLists.txt source path and add deprecated/include to
include dirs so existing callers are unaffected. The BLE Log
Module's SPI Master DMA peripheral transport is the replacement.


(cherry picked from commit e2d38955de)

Co-authored-by: Zhou Xiao <zhouxiao@espressif.com>
2026-04-03 21:14:38 +08:00
Zhou Xiao 94761261f2 change(bt/ble_log): remove BLE Log UHCI Out module
Delete ble_log_uhci_out.c and its header. Remove the UHCI Out source
from CMakeLists.txt and all BT_BLE_LOG_UHCI_OUT_* Kconfig options.
Remove per-chip BT_LE_CONTROLLER_LOG_UHCI_OUT_ENABLED Kconfig and
all UHCI Out caller references in esp32c5/c6/h2 controller bt.c.
Update ble_log_console README to reference the new BLE Log Module
UART DMA config. The functionality is superseded by the BLE Log
Module's UART DMA peripheral transport.


(cherry picked from commit d51892380b)

Co-authored-by: Zhou Xiao <zhouxiao@espressif.com>
2026-04-03 21:14:38 +08:00
Shen Wei Long 619fe2c7fd feat(ble): support mbedtls for ble controller encryption
(cherry picked from commit 595cd5ef34)

Co-authored-by: ShenWeilong <shenweilong@espressif.com>
2026-03-23 09:24:00 +00:00
Rahul Tank 3813ee6502 fix(nimble): Bugfixes for various issues 2026-03-20 11:00:21 +05:30
Jiang Jiang Jian d6000ccecd Merge branch 'feat/use_common_config_to_sel_crypt_lib_v6.0' into 'release/v6.0'
Feat/use common config to sel crypt lib (v6.0)

See merge request espressif/esp-idf!46408
2026-03-20 10:39:59 +08:00
Jiang Jiang Jian 77d11e6381 Merge branch 'fix/ble_hci_log_direction_v6.0' into 'release/v6.0'
feat(ble_log): encode HCI direction in ble_log pipeline (v6.0)

See merge request espressif/esp-idf!46303
2026-03-20 10:38:49 +08:00
Jiang Jiang Jian 7908812022 Merge branch 'bugfix/fix_blufi_nimble_gatt_pkt_v6.0' into 'release/v6.0'
fix(blufi): Handle flattened ATT write payloads correctly in NimBLE BLUFI host (v6.0)

See merge request espressif/esp-idf!46260
2026-03-20 10:38:43 +08:00