FiRa 1.2 and 2.0 compatibility

Hello,

I’m trying to get a TWR to work between QM35825 and QM33120WDK2 but I can’t get any rangings. I’m getting the error RangingRxPhyDecFailed (0x22) on the controlee, no matter which device is doing which role. I’ve tried lots of different SFD/PSDU rate/frame format/preamble codes but nothing seems to work.

QM35 is running FiRa 2.0 and QM33 is running FiRa 1.3. Is that the problem why I can’t get the rangings to work? I talk to them both via UCI and I’m using the run_fira_twr example python script.

Thanks

Hi @marctrx

Can you check if you are matching the Static_STS and Vendor_ID between the two?

And, which version of the QM33 SDK are you using?

Static STS and Vendor ID should be matching. At the end of this message I attach the full configuration that the devices print after starting the script.
I’ve done some testing changing the vendor id in case it was reversed due to endianess but it doesn’t seem to help (I’ve tried --vendor-id 0x0807 and --vendor-id 0x0708). There seems to be some problem with this parameter in the UQT version 13.1.0.
Static STS seems to be the same in both devices.

For the QM33120WDK2 I’m using the latest 1.1.1 UQT version extracted from DW3_QM33_SDK_1.1.1.zip. For the QM35 I’m using the one in the Gitlab repo, UQT version 13.1.0.
I’ve also tried to use the 13.1.0 with the QM33 but shows the same behavior.

QM35

(.venv) ➜  ~ run_fira_twr      
Initializing session 42...
Session 2147483655 -> Init (StateChangeWithSessionManagementCommands)
Using Fira 2.0 session handle is : 2147483655
Setting session 2147483655 config ...
    DeviceType (0x0):                   0x1
    DeviceRole (0x11):                  0x1
    MultiNodeMode (0x3):                0x0
    RangingRoundUsage (0x1):            0x2
    DeviceMacAddress (0x6):             [0, 0]
    ChannelNumber (0x4):                0x9
    ScheduleMode (0x22):                0x1
    CapSizeRange (0x20):                0x510
    StsConfig (0x2):                    0x0
    RframeConfig (0x12):                0x3
    ResultReportConfig (0x2e):          0xf
    VendorId (0x27):                    [7, 8]
    StaticStsIv (0x28):                 [1, 2, 3, 4, 5, 6]
    AoaResultReq (0xd):                 0x1
    PreambleCodeIndex (0x14):           0xa
    SfdId (0x15):                       0x2
    SlotDuration (0x8):                 0x960
    RangingDuration (0x9):              0xc8
    SlotsPerRr (0x1b):                  0x19
    MaxNumberOfMeasurements (0x32):     0x0
    HoppingMode (0x2c):                 0x0
    BlockStrideLength (0x2d):           0x0
    PsduDataRate (0x16):                0x0
    PrfMode (0x1f):                     0x0
    PreambleDuration (0x17):            0x1
    NumberOfStsSegments (0x29):         0x1
    DstMacAddress (0x7):                [1]
    KeyRotationRate (0x24):             0x0
    StsLength (0x35):                   0x1
    TxAntennaSelection (0xe7):          0x0
    RxAntennaSelection (0xe6):          0x0
Starting ranging...

QM33 (using UQT 1.1.1)

> run_fira_twr --controlee
Initializing session 42...
12:33:54.203 WARNING:   Wanting 4 bytes. Got only 0
Session 42 -> Init (StateChangeWithSessionManagementCommands)
Using Fira 1.3 (session handle == session ID) is : 42
Setting session 42 config ...
    DeviceType (0x0):                   0x0
    DeviceRole (0x11):                  0x0
    MultiNodeMode (0x3):                0x0
    RangingRoundUsage (0x1):            0x2
    DeviceMacAddress (0x6):             0x1
    ChannelNumber (0x4):                0x9
    ScheduleMode (0x22):                0x1
    StsConfig (0x2):                    0x0
    RframeConfig (0x12):                0x3
    ResultReportConfig (0x2e):          0xb
    VendorId (0x27):                    0x708
    StaticStsIv (0x28):                 0x60504030201
    AoaResultReq (0xd):                 0x1
    PreambleCodeIndex (0x14):           0xa
    SfdId (0x15):                       0x2
    SlotDuration (0x8):                 0x960
    RangingInterval (0x9):              0xc8
    SlotsPerRr (0x1b):                  0x19
    MaxNumberOfMeasurements (0x32):     0x0
    HoppingMode (0x2c):                 0x0
    BlockStrideLength (0x2d):           0x0
    NumberOfControlees (0x5):           0x1
    DstMacAddress (0x7):                [0]
    KeyRotationRate (0x24):             0x0
    StsLength (0x35):                   0x1
Starting ranging...

I had a similar problem with ranging, turned out I had the boards facing in the wrong direction (away from each other)

I am using the murata Type2ab

This board and the 3001cdk have the antenna on the not component side of the board. The antennas are uni-directional

My topic

Hey @rexxdad,

I tried pointing the right side of the antenna exactly towards the other device but I still get the same error. but you’re right that these devices are very prone to frame errors if they are not pointed precisely as I’ve seen it myself after some testing.

I’m pretty sure this is a compatibility problem with the firmwares as the qm33120wdk1 supports only fira 2.0, the qm35825 supports 2.0 to 3.0 and the qm35120wdk2 seems to only support fira 1.3. Also many parameters don’t work in the wdk2 kits, I can’t even get the calibration to print.