WARP Project Forums - Wireless Open-Access Research Platform

You are not logged in.

#1 2019-Jan-16 13:00:31

sbarra
Member
From: Barcelona
Registered: 2018-Nov-30
Posts: 5

CCA/energy detection at multiple 20-MHz at the same time

Hi,

I would like to build a system similar to a spectrum analyzer but in a binary form. That is, for every 20-MHz channel defined in the 802.11ac 5 GHz band (at least from channel #36 to #144), I would like to get instant snapshots (of few microseconds) of the occupancy of each of these channels wrt a certain CCA level (0: free, 1: occupied). I assume that I will need to use multiple WARPs and synchronize them to be able to sniff the full band at the same time due to the bandwidth limitations.

Since I do care of the timing, having an RF switching from one channel to another seems not a good option. I tried with WARPLab 7.7.1 and it took about 20 ms to sniff 100 buffer samples and switch to the next channel. That is, from the first to the last channel measurements there is a delay ~380 ms when considering the 20 channels in the range #36 to #144. Therefore, unfortunately, I am not getting anything close to a "snapshot" of the whole band.

1 - I assume that the system I want to build cannot be done with WARPLab. Am I right?

I was thinking about trying with the 802.11 ref design and use the wlan_mac_get_status() function.

2 - Would it be possible to have multiple RF interfaces (on the same WARP) tuned to different channels (e.g., #36 and #40) and check its occupancy right at the same time?
3 - Then, I guess I could try to synchronize other WARPs with RFs tuned to other channels and aggregate the whole snapshot. Is that feasible?

Thanks for the help.

Offline

 

#2 2019-Jan-17 15:02:09

chunter
Administrator
From: Mango Communications
Registered: 2006-Aug-24
Posts: 1212

Re: CCA/energy detection at multiple 20-MHz at the same time

sbarra wrote:

1 - I assume that the system I want to build cannot be done with WARPLab. Am I right?

From the sound of it, the stock unmodified WARPLab Reference Design probably isn't a good fit for the project. However, we always intend for projects to be able to modify the WARPLab hardware project if they need to. When you were using WARPLab to tune to different channels, that was all happening in a MATLAB script, right? You could push that behavior down to the C running on the board. For example, when the Rx buffer starts, C code could tune to a new frequency every few microseconds. Then you could retrieve the large buffer at the end and have the entire "scan" present in it. I imagine that would be a lot faster than having MATLAB in the loop.

sbarra wrote:

I was thinking about trying with the 802.11 ref design and use the wlan_mac_get_status() function.

I think you could do something with this, but it would require some pretty deep modifications to the C side. I can't think of everything that would need to be changed, but at a high level something like this could work:

1) Use NOMAC for CPU_LOW and disable both the PHY receivers

2) Set the DIFS with to N microseconds. This will ensure that a spike of energy will hold WLAN_MAC_STATUS_MASK_CCA_BUSY high for a N microseconds.

3) In the main() loop of NOMAC, read the WLAN_MAC_STATUS_MASK_CCA_BUSY once every N microseconds and report the value to CPU_HIGH via a new IPC message. Also include the current channel and the current timestamp. After reading these values, tune the radio to a new channel.

4) In CPU_HIGH, form a new log entry type for the CCA status log it to DRAM.

5) Using the wlan_exp Python framework, retrieve the log of CCA bit statuses and do your processing there.


sbarra wrote:

2 - Would it be possible to have multiple RF interfaces (on the same WARP) tuned to different channels (e.g., #36 and #40) and check its occupancy right at the same time?

If you are going the route of modifying WARPLab, yes. This feature is already there. Up to 4 RF interfaces can receive at once and they need not be on the same channel. For the 802.11 design modification, this isn't really possible without customizing the hardware design. The CCA bit is tied to a single interface.

sbarra wrote:

3 - Then, I guess I could try to synchronize other WARPs with RFs tuned to other channels and aggregate the whole snapshot. Is that feasible?

Same story here -- synchronizing the Rx events of many WARP boards is easy with WARPLab. That design already supports externally triggering multiple Rx nodes. This is less feasible for the 802.11 design modification.



All in all, I personally would give modifying the WARPLab design a shot before going down the road of modifying the 802.11 design the way I described.

Offline

 

#3 2019-Jan-17 16:26:20

sbarra
Member
From: Barcelona
Registered: 2018-Nov-30
Posts: 5

Re: CCA/energy detection at multiple 20-MHz at the same time

Hi chunter,

Thank you so much for such details comments.

I will carefully explore the WARPLab option then.

Best.

Offline

 

Board footer