FiRa applications: INITF in DW3_QM33_SDK_1.1.0 and 1.1.1

I have a pair of DWM3001CDK devices, and I’ve downloaded the DW3_QM33_SDK_1.1.1.zip software package.

I’m finding that when I flash the pre-built binary DW3_QM33_SDK_1.1.1\SDK\Binaries\DWM3001CDK\DWM3001CDK-CLI-FreeRTOS.hex onto either device, then connect a serial port and run the default INITF command, I get the following output:

FiRa Session Parameters: {
SESSION_ID: 42,
CHANNEL_NUMBER: 9,
DEVICE_ROLE: INITIATOR,
RANGING_ROUND_USAGE: DS_TWR_DEFERRED,
SLOT_DURATION [rstu]: 2400,
RANGING_DURATION [ms]: 200,
SLOTS_PER_RR: 25,
MULTI_NODE_MODE: UNICAST,
HOPPING_MODE: Disabled,
RFRAME_CONFIG: SP3,
SFD_ID: 2,
PREAMBLE_CODE_INDEX: 10,
STATIC_STS_IV: "01:02:03:04:05:06",
VENDOR_ID: "07:08",
DEVICE_MAC_ADDRESS: 0x0000,
DST_MAC_ADDRESS[0]: 0x0001
}
ok
SESSION_STATUS_NTF: {state="INIT", reason="State change with session management commands"}
SESSION_STATUS_NTF: {state="IDLE", reason="State change with session management commands"}
SESSION_STATUS_NTF: {state="ACTIVE", reason="State change with session management commands"}
SESSION_INFO_NTF: {session_handle=1, sequence_number=0, block_index=0, n_measurements=1
 [mac_address=0x0001, status="TX_FAILED"]}

This happens regardless of whether the responder device is running the RESPF app (unsurprisingly since it seems to be a TX issue). I’ve tried also running STOP first before re-running INITF, and resetting the device first, to no avail. Finally, I tried multiple cables and USB ports powering the device in case this was a power issue - but nothing helped.

The same is true when using the DWM3001CDK CLI binary from SDK version 1.1.0.

However when I flash the binary from an older version of the SDK, DW3_QM33_SDK_1.0.2\SDK\Binaries\DWM3001CDK\DWM3001CDK-DW3_QM33_SDK_CLI-FreeRTOS.hex, to my devices, the program runs as expected and ranging data is exchanged between the two.

Wondering if the app has been broken in newer releases of the SDK, or if there’s something I’m doing wrong?

Hi bp-baxter,

I ran similar tests on the CDK with this SDK v1.1.1 before and it was working fine. I also just flashed a DWM3001CDK and tried the same and I could see it is working as expected as shown in the log below.

Having said that, you could try Erasing the CDK completely and flash the CLI firmware and see if that works. If not, then Erase the CDK and flash the UCI firmware first. Load the calibration using the script DW3_QM33_SDK_1.1.1\SDK\Tools\uwb-qorvo-tools\scripts\device\load_cal and flash the CLI firmware, but this time do not Erase the CDK. The calibration file is included in the DW3_QM33_SDK_1.1.1\SDK\Tools\uwb-qorvo-tools\scripts\device\load_cal\calib_files\DWM3001CDK directory. This should help fix the issue.

ok
FiRa Session Parameters: {
SESSION_ID: 42,
CHANNEL_NUMBER: 9,
DEVICE_ROLE: INITIATOR,
RANGING_ROUND_USAGE: DS_TWR_DEFERRED,
SLOT_DURATION [rstu]: 2400,
RANGING_DURATION [ms]: 200,
SLOTS_PER_RR: 25,
MULTI_NODE_MODE: UNICAST,
HOPPING_MODE: Disabled,
RFRAME_CONFIG: SP3,
SFD_ID: 2,
PREAMBLE_CODE_INDEX: 10,
STATIC_STS_IV: "01:02:03:04:05:06",
VENDOR_ID: "07:08",
DEVICE_MAC_ADDRESS: 0x0000,
DST_MAC_ADDRESS[0]: 0x0001
}
ok
SESSION_STATUS_NTF: {state="INIT", reason="State change with session management commands"}
SESSION_STATUS_NTF: {state="IDLE", reason="State change with session management commands"}
SESSION_STATUS_NTF: {state="ACTIVE", reason="State change with session management commands"}
SESSION_INFO_NTF: {session_handle=1, sequence_number=0, block_index=0, n_measurements=1
 [mac_address=0x0001, status="RX_TIMEOUT"]}
SESSION_INFO_NTF: {session_handle=1, sequence_number=1, block_index=1, n_measurements=1
 [mac_address=0x0001, status="RX_TIMEOUT"]}
SESSION_INFO_NTF: {session_handle=1, sequence_number=2, block_index=2, n_measurements=1
 [mac_address=0x0001, status="RX_TIMEOUT"]}
SESSION_INFO_NTF: {session_handle=1, sequence_number=3, block_index=3, n_measurements=1
 [mac_address=0x0001, status="RX_TIMEOUT"]}
SESSION_INFO_NTF: {session_handle=1, sequence_number=4, block_index=4, n_measurements=1
 [mac_address=0x0001, status="RX_TIMEOUT"]}
SESSION_INFO_NTF: {session_handle=1, sequence_number=5, block_index=5, n_measurements=1
 [mac_address=0x0001, status="RX_TIMEOUT"]}
SESSION_INFO_NTF: {session_handle=1, sequence_number=6, block_index=6, n_measurements=1
 [mac_address=0x0001, status="RX_TIMEOUT"]}

Confirmed erasing the chip prior to flashing resolves the issue. Thanks!