Architecture Advice: Commercial Multi-link Central using nRF52840 Dongle - pc-ble-driver vs. Custom USB CDC?

Hi Nordic Team,

I am currently developing a commercial product using the nRF Connect SDK (NCS). The system consists of several nRF52 peripherals and a PC-based application that communicates with them via an nRF52840 Dongle.

I am trying to determine the best software architecture for the Dongle to ensure long-term maintainability and ease of deployment for end-users on Windows.

The Requirements:

  1. Multi-link Support: The Dongle acts as a Central and needs to connect to multiple peripherals (e.g., 3-5 devices) simultaneously.

  2. Dynamic Provisioning: The PC application must instruct the Dongle to scan, select specific target devices, and store them (e.g., using NVS/Settings) so they auto-connect on future power cycles.

My Dilemma:

Option A: Connectivity Firmware + pc-ble-driver
I know this is used by nRF Connect for Desktop. However, I read that pc-ble-driver is in Maintenance Mode and not actively developed for NCS.

  • Concern: I am worried about future support, "DLL hell" during deployment, and the complexity of managing the BLE state machine entirely on the PC side (Python/C++).

Option B: Custom Firmware (NCS) + USB CDC ACM
I implement a custom firmware on the Dongle using NCS. The Dongle handles the BLE stack (scanning/connecting/filtering) and exposes a simple custom protocol (AT commands or binary) via USB CDC to the PC.

  • Plan: The PC sends commands like SCAN, ADD_TARGET <MAC>, and the Dongle handles the rest.

  • Concern: This requires designing a custom serial protocol to map multiple connection handles to the UART stream.

My Questions:

  1. For a new NCS-based commercial project starting in 2024/2025, implies Option B (Custom USB CDC) is the recommended path, correct? Is pc-ble-driver effectively obsolete for new custom designs?

  2. Are there any specific NCS samples or reference designs for a "Command-based Central"? I am looking for best practices on how to structure the USB CDC handler to manage dynamic provisioning (scanning/bonding commands) vs. raw data throughput.

  3. Does the standard USB CDC ACM driver in Windows handle high-throughput data from multiple BLE links well, or should I be aware of any buffering bottlenecks in Zephyr?

Thanks for your time and guidance!

Parents Reply Children
No Data
Related