ESP32 C6 BLE CoEx

Mukarram
Posts: 1
Joined: Fri May 08, 2026 6:32 am

ESP32 C6 BLE CoEx

Postby Mukarram » Fri May 08, 2026 7:12 am

I am currently working on a BLE Mesh + GATT coexistence architecture on ESP32 devices and would like to understand the architectural limitations and production viability of this approach on ESP-IDF.

### Background

Initially, I used an ESP32 DevKit (BLE 4.2 based controller). I observed that BLE Mesh and GATT operations could run together only through time-sliced scheduling. However, under heavy coexistence scenarios, I noticed delays and advertisement interruptions.

Later, I moved to the ESP32-C6 (BLE 5.0 capable controller) expecting improved coexistence performance due to BLE 5 features such as extended advertising and multiple PHY support.

### Current Scenario

My application involves:

* BLE Mesh provisioning (Remote Provisioning Client/Server)
* Simultaneous GATT server connection with a smartwatch/watch application
* Continuous BLE advertisement visibility

Current behavior:

1. On startup, everything works correctly:

* Watch connects through GATT
* Mesh provisioning succeeds
* Mesh communication works

2. Problem occurs after reconnect scenarios:

* If the watch disconnects/restarts, the ESP32-C6 stops appearing in BLE scan logs
* Advertisement becomes invisible both:

* on the watch side
* and on mobile apps such as Nordic nRF Connect
* Mesh functionality may still continue internally, but GATT advertising disappears

### Comparison with Nordic nRF53

I have previously worked with the nRF53 series running Zephyr/Nordic BLE architecture.

On Nordic:

* BLE Mesh and GATT coexist much more smoothly
* Multiple PHYs (1M / 2M) appear to operate simultaneously without noticeable delay
* Advertising and connections remain stable even during mesh operations
* Reconnection behavior is reliable

This made me question whether the limitation is:

* related to ESP32-C6 controller architecture,
* ESP-IDF BLE stack design,
* NimBLE integration limitations,
* scheduler/resource allocation,
* or simply current SDK maturity.

### My Questions

1. Does ESP32-C6 hardware architecture truly support stable simultaneous BLE Mesh + GATT coexistence in production environments?

2. Even though ESP32-C6 supports BLE 5.0, does ESP-IDF currently implement coexistence differently compared to Nordic’s Zephyr-based architecture?

3. Is BLE Mesh + GATT on ESP32 fundamentally dependent on time-sliced radio scheduling rather than parallel operation?

4. Does ESP32-C6 internally share a single radio pipeline between:

* Mesh advertisements
* GATT advertisements
* Connections
* Scanning
causing advertisement starvation under certain conditions?

5. Are there known limitations in ESP-IDF v5.4.1 related to:

* extended advertising,
* NimBLE coexistence,
* mesh + GATT simultaneous operation,
* or advertisement restart handling?

6. If coexistence is achieved through careful timing/scheduling only:

* Is this considered production-grade?
* Or can it later introduce hard-to-debug issues such as:

* missed advertisements,
* reconnect instability,
* mesh latency,
* random disconnections,
* watchdog issues,
* or resource starvation?

7. Has anyone successfully deployed a stable production product on ESP32-C6 with:

* continuous BLE Mesh,
* active GATT connections,
* persistent advertising,
* and reliable reconnect handling simultaneously?

I would appreciate architectural-level insights rather than only example-based solutions, especially from developers who have worked with both Nordic and Espressif BLE ecosystems.

Who is online

Users browsing this forum: ChatGPT-User and 18 guests