Commit Graph
259 Commits
Author SHA1 Message Date
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 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
Jiang Jiang Jian 4922d627cd Merge branch 'feat/ble_bluedroid_log_full_compression_enable_v6.0' into 'release/v6.0'
feat(ble_mesh): enable log full compression function for bluedroid host (v6.0)

See merge request espressif/esp-idf!46156
2026-03-20 10:37:19 +08:00
Shen Wei Longandzhiweijian 159c3662c9 change(ble/bluedroid): Disable the built-in Bluedroid cryptographic implementation
(cherry picked from commit 7779e43d33)

Co-authored-by: zhiweijian <zhiweijian@espressif.com>
2026-03-09 09:23:35 +00:00
Zhou Xiao 29fa2be49f feat(ble_log): encode HCI direction in ble_log pipeline
Add ble_log_write_hci macro that encodes upstream/downstream direction
in MSB of HCI type byte. Update all 4 callsites (NimBLE + Bluedroid)
to use the new macro. Parser reads MSB to determine direction;
backward compatible (old firmware MSB=0 defaults to "sent").


(cherry picked from commit 8fd5dbb730)

Co-authored-by: Zhou Xiao <zhouxiao@espressif.com>
2026-03-05 13:13:28 +08:00
Rahul Tank 40cc90d4dd fix(blufi): Handle flattened ATT write payloads correctly in NimBLE BLUFI host 2026-03-04 11:44:22 +05:30
Aditya Patwardhan 2235fd841a fix(bt): Keep older error code for backward comatibility 2026-03-02 14:35:43 +08:00
Ashish Sharma bd39f141ff fix: enable HARDWARE_MPI by default 2026-03-02 14:33:21 +08:00
Luo Xu e1859383ee feat(ble): update log compression for bluedroid
(cherry picked from commit 05783fafd7)

Co-authored-by: luoxu <luoxu@espressif.com>
2026-03-02 09:43:22 +08:00
Luo Xu 0b2d1a6860 feat(ble_mesh): enable log full compression function for bluedroid host
(cherry picked from commit 4cf88ce078)

Co-authored-by: luoxu <luoxu@espressif.com>
2026-03-02 09:43:22 +08:00
Jiang Jiang Jian 8a1cae8779 Merge branch 'feat/ble_compressed_log_update_v6.0' into 'release/v6.0'
feat(ble_mesh): update log compression for ble mesh lib (v6.0)

See merge request espressif/esp-idf!45155
2026-02-02 22:56:34 +08:00
Jiang Jiang Jian 11558f01b2 Merge branch 'feat/support_blecrt_515_v6.0' into 'release/v6.0'
feat(bt/bluedroid): Support get allocated heap size (v6.0)

See merge request espressif/esp-idf!44864
2026-01-30 14:33:40 +08:00
Zhou Xiao b57a6cebfe feat(ble): added sdkconfig to control ble host side hci log
(cherry picked from commit 52c2bd2dd6)

Co-authored-by: Zhou Xiao <zhouxiao@espressif.com>
2026-01-28 17:14:00 +08:00
Zhou Xiao 3c26746223 feat(ble): support ll log payload length limit for ble log v2
(cherry picked from commit 82ee820cf8)

Co-authored-by: Zhou Xiao <zhouxiao@espressif.com>
2026-01-28 17:14:00 +08:00
Zhou Xiao fa25b45147 change(ble): optimized os_mbuf_copydata thread safety protection
(cherry picked from commit 52754b1aa4)

Co-authored-by: Zhou Xiao <zhouxiao@espressif.com>
2026-01-28 17:14:00 +08:00
Luo Xu afd63b70dd feat(ble_mesh): update log compression for ble mesh lib
(cherry picked from commit 7c4b104f61)

Co-authored-by: luoxu <luoxu@espressif.com>
2026-01-15 17:43:33 +08:00
Chen Jian Hua 72a290ee7e feat(bt/bluedroid): Support get allocated heap size
(cherry picked from commit b85771d577)

Co-authored-by: chenjianhua <chenjianhua@espressif.com>
2026-01-12 00:04:55 +08:00
Island 35ff0c786d Merge branch 'feat/ble_mesh_unify_crypto_v6.0' into 'release/v6.0'
Feat/ble mesh unify crypto v6.0

See merge request espressif/esp-idf!44818
2026-01-07 19:47:38 +08:00
Island b92e60d192 Merge branch 'bugfix/fix_ble_security_issue_2025_v3_v6.0' into 'release/v6.0'
fix(ble/bluedroid): Fix type mismatch and length validation in HCI packet parser (v6.0)

See merge request espressif/esp-idf!44668
2026-01-07 10:33:41 +08:00
Island 79a1d6dcaa Merge branch 'feat/ble_mesh_dfd_cli_support_v6.0' into 'release/v6.0'
feat(ble_mesh): dfd client/server supported v6.0

See merge request espressif/esp-idf!44135
2026-01-07 10:32:35 +08:00
luoxu f28bf3057e feat(ble): Make Tinycrypto the default encryption choice for BLE components 2026-01-06 15:01:03 +08:00
Zhou Xiao a18f531aa3 fix(ble): fixed cache error risk in ble log module 2026-01-05 14:23:26 +08:00
Zhou Xiao 8013603aeb feat(ble): provide isr dispatch method option for ble log ts 2026-01-05 14:23:18 +08:00
Zhou Xiao 3afb834188 fix(ble): add esp timer trigger back for timestamp synchronization 2026-01-05 14:23:13 +08:00
Zhang Hai Peng 7cd8fd0689 fix(bt/osi): add NULL check in osi_mutex_free and osi_sem_free (IDFGH-16853)
(cherry picked from commit 8630040602)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-01-05 00:03:36 +08:00
Island 68bef4ffa2 Merge branch 'feat/support_bluedroid_host_smp_with_psa' into 'release/v6.0'
Supported bluedroid host smp with mbedtls and TinyCrypt (backport v6.0)

See merge request espressif/esp-idf!44365
2025-12-31 14:13:48 +08:00
zhiweijian 87655116dc feat(ble/bluedroid): Move the TinyCrypt and mbedTLS configuration items to the bt common path 2025-12-30 12:12:35 +08:00
Zhou Xiao f35dd91fcd fix(ble): added null pointer check in ble log ts submodule
(cherry picked from commit 2b9c7471d0)

Co-authored-by: Zhou Xiao <zhouxiao@espressif.com>
2025-12-24 17:05:06 +08:00
Zhou Xiao a1cc86f421 fix(ble): added missed ts sync reset
(cherry picked from commit d1d07eb60a)

Co-authored-by: Zhou Xiao <zhouxiao@espressif.com>
2025-12-24 17:05:06 +08:00
Zhou Xiao ded5fa0d55 feat(ble): added xor checksum for integrity check performance optimization
(cherry picked from commit c604afa272)

Co-authored-by: Zhou Xiao <zhouxiao@espressif.com>
2025-12-24 17:05:05 +08:00