Inquiry on the Meaning and Calculation of Local and Remote I/Q Values in the SDK

Certainly! Here’s a clear, natural English version of your email:


Dear Specialist,

I would like to better understand the two variables used in the SDK for calculating the phase of each channel: the local and remote (or, in version 2.9.0, the peer) I/Q values. Specifically, I am interested in how these values are obtained—are they averages over a series of measurements, or do they have some other physical significance?

  1. What do “local” and “remote” represent?
    Do they refer to the phase values measured by each device for the signals transmitted by the other? According to the description in the Bluetooth Channel Sounding technical overview, the reflector only reflects the signal and does not measure it—it simply bounces the transmitted signal back to the initiator. Based on this, it seems that “local” and “remote” might refer to the local oscillator of the transmitter and the signal eventually received by the transmitter, with their difference representing the final phase change.

    However, in the BLE 6 Core Specification, for multi-antenna measurements, the transmitter needs to send signals sequentially from multiple antennas, and only then does the reflector return each signal. This process appears to be more than just simple reflection; it suggests that the reflector is actively involved, rather than merely relaying the signal without phase measurement. If the reflector only acts as a relay without participating in phase measurement, this should happen at the hardware level, and it seems unlikely that it could wait for all transmissions to finish before retransmitting each one.

  2. If both devices are measuring the phase bidirectionally, why is there only one value reported for local and remote per channel in each subevent?
    In BLE AoA, estimating the phase of a signal requires a series of phase values sampled continuously from the CTE portion of the packet, which are then used to estimate the overall phase of the packet. In Channel Sounding, is it also the case that a series of phase values are sampled continuously from the mode-2 tone signal, and synchronization between the devices ensures that the sampling time aligns within each packet? Is the final phase value reported the average of the differences between a series of local and remote measurements?

Thank you for your help!

Best regards,
Cheng

Parents
  • I don't know the inner details on how this is implemented. But the idea is that they have some sense of a synchronized time. They don't know eachother's time, but there is a set time delay between receiving one packet before the reflector replies, so the time this takes is known.

    The distance is estimated using the phases. If you only did one channel (one frequency), you could see the phase of this signal. In an ideal world, where this is very accurate, you can use this to calculate that you are (N + phase) wawelengths away from the other device. But N is still unknown. So therefore, you do this sweep accross all channels, with different frequencies, and different wavelengths. I am not sure whether they only do one sample per channel, or multiple. When this sweep is done, the estimated distance is calculated based on the phase on all the channels, using different frequencies, and the added phase for each channel, which gives out a resulting distance. 

    Of course, in a world that is not ideal, you will have some noise in your measurements, so the result is not 100% accurate. But the sample will also contain a rating saying whether this sample is good or not. You can see this is being checked in ranging_data_get_complete_cb() in the sample.

    If the 

    cs_de_quality_t quality = cs_de_calc(&cs_de_report);

    is 

    CS_DE_QUALITY_OK

    it gives a quality stamp for that sample, but if it is not, then you can discard the sample.

    Best regards,

    Edvin

Reply
  • I don't know the inner details on how this is implemented. But the idea is that they have some sense of a synchronized time. They don't know eachother's time, but there is a set time delay between receiving one packet before the reflector replies, so the time this takes is known.

    The distance is estimated using the phases. If you only did one channel (one frequency), you could see the phase of this signal. In an ideal world, where this is very accurate, you can use this to calculate that you are (N + phase) wawelengths away from the other device. But N is still unknown. So therefore, you do this sweep accross all channels, with different frequencies, and different wavelengths. I am not sure whether they only do one sample per channel, or multiple. When this sweep is done, the estimated distance is calculated based on the phase on all the channels, using different frequencies, and the added phase for each channel, which gives out a resulting distance. 

    Of course, in a world that is not ideal, you will have some noise in your measurements, so the result is not 100% accurate. But the sample will also contain a rating saying whether this sample is good or not. You can see this is being checked in ranging_data_get_complete_cb() in the sample.

    If the 

    cs_de_quality_t quality = cs_de_calc(&cs_de_report);

    is 

    CS_DE_QUALITY_OK

    it gives a quality stamp for that sample, but if it is not, then you can discard the sample.

    Best regards,

    Edvin

Children
  • Thank you very much,Edvin,

    What I can confirm is that each channel indeed reports only one sample, as I noticed that in cs_de_report_t, the iq_tones field in cs_de_iq_tones_t is related to the number of antennas. That is, each antenna has up to 80 IQ data points. I believe most of the work has already been implemented in the SDK, and we only need to use a single IQ value to represent the received phase of a given signal.

    Best regards,
    Cheng

Related