DWM3001CDK iOS NI Ranging Stuck, No Distance Data

Hi all,

I’m building a custom iOS app that integrates Apple’s Nearby Interaction framework with the DWM3001CDK running QM33SDK-1.1.1. The Qorvo NI companion app works perfectly on my board and shows distance data, so I’m confident the hardware and firmware are functional. However, my own iOS app never receives any ranging data.

After extensive debugging, I’ve narrowed the problem down to a specific point in the BLE service discovery.

What I’m observing:
When I connect to the board and discover all services, I only see the QNIS service:

  • QNIS (2E938FD0-6A61-11ED-A1EB-0242AC120002) — present
  • ANIS (48FE3E40-0817-4BB2-8633-3073689C2DBA) — NOT present

Because ANIS is absent, I cannot read the Accessory Configuration Data (ACD) characteristic (95E8D9D5-…), which I believe is the correctly-formatted payload that NINearbyAccessoryConfiguration requires on the iOS side.

What my app currently does (and the problem):
The QNIS OOB handshake completes successfully every time:

  1. iPhone sends 0x0A → board responds with 0x01 (38 bytes)
  2. iPhone builds NINearbyAccessoryConfiguration from the 0x01 payload
  3. iPhone sends its NI token back via 0x05
  4. Both writes are confirmed
  5. NI session is valid and active indefinitely — but didUpdate is never called and distance stays nil

I believe the issue is that I’ve been passing the QNIS 0x01 payload to NINearbyAccessoryConfiguration instead of the ANIS ACD characteristic value. But since ANIS isn’t advertising, I can’t read ACD at all.

My questions:

  1. Should ANIS (48FE3E40-…) be advertising on a DWM3001CDK running QANI firmware? The developer manual (section 12.5.3.2) describes it, but it also notes ANIS is not visible to iOS 16 devices via a BLE sniffer — could it also be invisible to CBCentralManager.discoverServices?
  2. Is the QNIS 0x01 payload the correct accessoryData input for NINearbyAccessoryConfiguration, or must it come from the ANIS ACD characteristic?
  3. What is the correct end-to-end BLE + NI session flow for a third-party iOS app pairing with the DWM3001CDK? Specifically: which characteristic supplies the accessoryData, and is there any step between the 0x05 write and the board starting UWB that I might be missing?

I have read all the developer documentation extensively to no avail, so any guidance from someone who has implemented this successfully would be hugely appreciated. Happy to share full debug output or the Swift source if helpful.

Thanks!

Hello
At the moment I have the same problem.
Does anyone know what the problem is?
I use this demo kit: QM33120WDK2

The problem is solved, to start the ranging 0x0B needs to be sent.