DWM3000CDK,Nearby,ios,QANI

Hi Qorvo team,

We’re using the DWM3001CDK dev board with QANI firmware v1.1.1 for Nearby Interaction with iPhones. We’re seeing compatibility issues across different iPhone models:

iPhone Model Chip Result
iPhone 11 U1 Works perfectly, 5Hz stable
iPhone 12 Pro Max U1 Fails immediately after BLE connection, UWB session never starts
iPhone 15 U2 Only the first ranging frame succeeds, subsequent frames all return raw_status=33 (RX timeout)

We confirmed:

  1. The Accessory Configuration Data (ACD) is identical across all connections
  2. 1Hz mode works on iPhone 15, only 5Hz (User Interactive) fails
  3. The block timing is stable at ~162ms on the accessory side

Is this a known issue? Is there an updated QANI firmware that supports newer iPhone models and iOS versions?

Thanks,

What app are you using on the 14+ models?

Starting with iPhone 14 there is a new camera convergence process required to make ranging work. It’s not the accessory. Without convergence you only get distance reported.

I have tested our app on iPhone 12.13.14,15,16, and 17 without hardware problems , using the cdk board as our accessory connection.

I have rebuilt the cdk 1.1.1 firmware with additional support for Android and don’t have any different experience than stock firmware on iPhones

I did have to change our app to work on the 14+ iPhones. Not much, but an important change

Thanks for the info! We’re currently using the official Qorvo Nearby Interaction app from the App Store .

You mentioned you had to change your app to work on 14+ iPhones — could you share what kind of changes were needed? Was it just updating the Nearby Interaction API usage, or did you have to add the full Camera Assistance / ARKit convergence flow?

We’re seeing that on iPhone 15, the first ranging frame works (we get ~44cm), but all subsequent frames return raw_status=33 (RX timeout). Does this sound like the same issue you had, and did fixing the app also fix the 5Hz mode stability?

Thanks!

The sample app should have the change.

Basically iOS allows the camera arsession to resume where you stopped it, or not

If this is the start of the ranging session you have to say not resuming

public func sessionShouldAttemptRelocalization(_ session: ARSession) -> Bool{
        logger.info("arsession override called");
        return false;
    }

and I had to add the detection and advice to the user on camera convergence.. move left/right and move up/down, and need more light.., the function above took the longest to locate as it is a note in the nearby spec.. once I added that, convergence works, altho it is very difficult for our blind users. it ‘depends’ on one ‘facing’ the target accessory.. but the user has NO idea where that could be.., and many times are not visible to the sighted either..

But that has been there since iPhone 14 (all the advice notices, etc)

Sounds like you might have the cdk boards oriented incorrectly.

The non-component side should face the phone.
And for proper vertical ranging results, if the cdk is below the horizontal plane of the phone the antenna protrusion should be up , and if the cdk is above the phone horizontal plane, the antenna protrusion should be down (facing the floor)