Custom Firmware on nRF52840 DK Fails to Connect to Edge Impulse App (Device Visible)

Question/Issue: I’m using custom Zephyr-based firmware with Edge Impulse integration on an nRF52840 DK. The device advertises using the official Edge Impulse BLE service UUID and characteristics, which allows it to appear in the Edge Impulse mobile app’s scan list—but attempting to connect fails consistently.

Project ID:
666711

Project Name: iVativ-nRF52840DK Edge Impulse Studio Link: Login - Edge Impulse

Context / Use Case: I’m building a motion classification demo using the LIS2DH accelerometer (via I²C) on an nRF52840 DK. My custom firmware is based on example-standalone-inferencing-zephyr and includes:

  • Edge Impulse SDK
  • Model parameters and .tflite model from project ID 666711
  • LIS2DH sensor integration
  • BLE service UUIDs and characteristics matching the official Edge Impulse BLE firmware
  • Built on Windows 11 using Zephyr (nRF Connect SDK)

Steps Taken:

  1. Customized Zephyr project with LIS2DH support and Edge Impulse model
  2. Configured BLE with the same service UUIDs/characteristics used in official firmware
  3. Verified advertising on BLE scanner (shows up as “Edge Impulse”)
  4. Device appears in Edge Impulse mobile app (Android 15)
  5. Selecting device → connection attempt fails

Expected Outcome: App should connect to the DK and enable BLE data streaming.

Actual Outcome: Device is visible but fails to connect.

Reproducibility: :ballot_box_with_check: Always :white_large_square: Sometimes :white_large_square: Rarely

Environment:

  • Device: Nordic nRF52840 DK
  • OS (Mobile): Android 15
  • Build OS: Windows 11
  • BLE Stack: Zephyr (via nRF Connect SDK)
  • App: Edge Impulse (latest version from Play Store)
  • Firmware Base: example-standalone-inferencing-zephyr (custom build)

Logs/Attachments:
[Include any logs or screenshots that may help in diagnosing the issue]

Additional Notes: The BLE service UUID and GATT characteristics used in my firmware match those from the official Edge Impulse firmware. Are there other protocol or service-level expectations that the Edge Impulse app depends on during connection?