How can i set uwb parameters using initiator module

Hello everyone,

I have 10 Dwm3001cdks and as seen in the picture below, I configured 4 of them as anchors and the other 6 as tags. And they can communicate among themselves using TWR. What I want to ask now is this. Instead of using dwm3001 as a tag, I want to use iPhone. As seen in the picture below, I want to set the UWB parameters of my iPhone using a initiator dwm3001. Can I do this? Has a similar project been developed before? Is there a project that I can take as a reference or make small changes to make it suitable for the scenario I mentioned above?



Hi @Wassim_Qorvo,

Is there anything you can suggest?

Best Regards.

Hello @Huseyin ,

Qorvo Neaby Interaction SDK may help you on this topic:

Hi Wassim,

I have downloaded Qorvo Neaby Interaction SDK and opened “DWM3001CDK-QANI-FreeRTOS” project on ses. First, I tried to set the UWB parameters of the iPhone by changing the NI source code. However, a connection cannot be established between the iPhone on which I set the vupper64 value to fixed and the dwm3001cdk. If the parameters I specify in this function and the parameters used by the inif/respf application are the same, can I make an application as I mentioned above? (The NI application will run on the first dwm3001cdk and set the iPhone as responder. Then, the iPhone will measure the distance with the other dwm3001cdks running in initiator mode .) Is this possible? Can I develop this scenario using the parameters I specified below? Can I set the value of vupper64 to static?

uwb parameters on “Parameters list and default value” for CLI app match to uwb parameters in “driver_configure_for_fira” function for Neaby Interaction app as shown below.

in “construct_fira_param_from_config” function
paramaters matched to parameters of INITF/RESPF app.

I don’t ‘know’ but I think the cdk firmware for nearby will always need to be responder, as the iphone is the initiator (expects to be in its firmware)

you could create another process with your own code in the iPhone to be responder
and change to use the CLI or UCI firmware for the cdk board… I don’t KNOW if either can be in perpetual initf mode, waiting for a receiver to appear, or if there is a timeout, and a need to restart initf repeatedly.

also with many initf beacons , isn’t that many to many/many to 1? which isn’t supported yet by fira?
one to many works, but many to many/many to one doesn’t.

in our application for many to many, we use a sep processor app that gives us extra info, so we only connect to get distance from the beacons we care about and disconnect, and then only range to the nearest of those. (and are not connected to the others) so its 1 to many for distance, and then 1 to 1 for ranging

(I havent been able to get cli/uci to create a com port so I can talk to it)

Hi Rexxdad,

Thanks for reply.

I noticed that while reviewing to QANI source code for CDK.
Figure 1

Fira Config from default config.
Figure 2
Isn’t this config for CDK?

As far as i understand. As seen in the figure above, CDK is set as initiator.
Figure 3

Figure 4

What I want to do is to set the iPhone as a responder by sending the default parameters as seen in the Figure 3 above to the iPhone. As seen in Figure 2 above, cdk is set as initiator. Isn’t it the one-to-many shown in figure 4?

why couldn’t i connect to iphone after set vupper64 as constant(01:02:03:04:05:06:07:08)

I understand what you ‘want’. and u might be able to do it with the cli/uci firmware on the cdk
and your OWN code on the phone… … but you need apples involvement because there is only 1 antenna on 14 and up…(on their U! or U2 chip) so without AVR (camera) you only get distance… ugh

the code apple uses to talk to the beacon is hidden from us. and for them it is phone is locating the airtag, so i expect that they are initiating contact to the beacons. the Qorvo sample code (for iphone) does this. we get callbacks from the apple code handling the beacon interaction, with distance and potentially angles, but its from the ios code receiving the data from the beacon.

public func session(_ session: NISession, didGenerateShareableConfigurationData shareableConfigurationData: Data, for object: NINearbyObject) {
    let accessory = findAccessoryBySession(session)
    guard object.discoveryToken == accessory?.configuration?.accessoryDiscoveryToken else { return }
    // Prepare to send a message to the accessory.
    var msg = Data([MessageId.configureAndStart.rawValue])  // <------- configure and start 
    let str = { String(format: "0x%02x, ", $0) }.joined()"Sending shareable configuration bytes: \(str)")
    // Send the message to the correspondent accessory.
    sendDataToAccessory(msg, deviceIDFromSession(session))

so that sounds like the phone is in charge…(to me)


Thank you very much for your reply. I don’t want to use a camera, it is enough for me to get the distance measurement between the phone and the tags. the positions of the tags I will use be fixed. if I know the distance between each tags, I can calculate the position of the iphone. how can i change code on iphone, do you have any sdk or sample codes for my project. I am stuck here and i dont know how can i do.


qorvo supplies an ios sample app that can do distance without camera

I am working on an Android extension to my app…

reading the android doc on UWB might help your understanding

I think the apple code is expecting the CDK to be controllee