802.11b Receiver

The goal of this project is the implementation of a full-capability 802.11b receiver using the universal software radio peripheral (USRP) for GNU radio. The problem in existing gnuradio implementations of 802.11b stem from the limited data rate which can be transferred from the USRP to the PC over a USB connection. The solution has been to send only a sub-Nyquist bandwidth signal through the USB. Our contribution has been to implement the full-rate despreading operation in the Altera FPGA on the USRP, such that only the despread signal need to be sent through the USB link. This allows reception of 802.11b signals from more distant transmitters, and from devices transmitting a higher data rate. This project is related to our project to build an 802.11b channel sounder using gnu-radio.

Problem and Related Work

The problem we are overcoming is the USB data rate bottleneck, which is limited to 32 MBps. Although this bit rate is high enough for many applications of gnuradio, for an 802.11b receiver it is not sufficient, because of the signal's bandwidth. The RF bandwidth of an 802.11b signal is 11 MHz. The minimum possible sampling rate (due to the Nyquist sampling criteria) is 22 Msamples/sec. Assuming a resolution of 8 bits for each I and Q sample, we require 2*22M = 44 MBps through the USB, which is clearly over the limit. Because of these limits, the current gnuradio receiver implementation of 802.11b (credit to BBN) reduced the signal bandwidth to 4 MHz prior to sending it through the USB. Effectively, the sub-sampled signal arrives at the PC with very low SNR. Typically, 802.11b packets transmitted at the 1 Mbps rate can be received, but only at short range. Our experience is that the receiver cannot receive packets from the transmitters on the opposite side of a wall.

Design and Implementation

Motivated by these limitations, in order to build a high-capability 802.11b receiver, we have found it necessary to implement the de-spreading operation of 802.11b inside the USRP's FPGA. In fact, the symbol rate in 802.11b is 1 Msymbols/sec, which could easily be sent through the USRP. However, because of the use in 802.11b of direct-sequence spread spectrum (DS-SS) with a 11 chip per symbol PN code sequence, the RF bandwidth is much higher than the symbol rate. By despreading on the USRP itself, prior to the PC, we can significantly reduce the data rate over the USB.

We have implemented the despreading operation on the Altera FPGA. In this implementation, we first reduce the sampled data to 32 Msamples/sec. Then, we despread, which involves convolution of the incoming signal with the known Barker code signal. In signal processing terms, the convolution operation is a finite impulse response (FIR) filter, which has the Barker code signal as its impulse response. The filter must be run on both the in-phase and quadrature signal samples.

Next, part of the despread signal is input to the USB FIFO, for transfer to the PC. Because it is neither possible nor useful to send every sample of the FIR filter outputs through the USB to the PC, we send only samples near the peak. There are 32 samples output from the convolution block during each symbol period, but only one (the peak) is important. To find the maximum amplitude peak, we add the squared in-phase and quadrature samples, and find the maximum within each symbol. The in-phase and quadrature samples at the peak and near the peak are passed to the FIFO to be sent to the PC.

It should be mentioned that for our 802.11b channel sounder samples near the peak are transferred to the PC. In fact, in that case, the peak, 3 samples before and 7 samples after it are sent to the software part in order to calculate channel impulse response.

Using this FPGA implementation, the de-spread signal arrives at the PC, which uses the BBN 802.11b demodulator and PLCP in order to determine packet data contents. Because the new implementation operates on the full bandwidth, the signal is not degraded by bandwidth limitations. The receiver can consistently receive 802.11b packets sent at the 2 Mbps rate, and the reception range is up to 20 meters. The following figure presents the schematic of our receiver:

Demo Diagram


  • There is no Automatic Gain Control (AGC) in our design, therefore the receiver is sensitive to the gain passed by "-g" and the value depends on your daughterboard. So it is kind of trial and error to find the best gain which has the highest performance for your daughterboard.
  • It seems that BBN code have some problems with new version of GNURadio(trunk). "gr" class of this version doesn't have hier_block attribute which has been used in BBN code. Since our code is based on BBN code, it doesn't work with trunk either.


Hamed Firooz

Project Contributors

Neal Patwari
Junxing Zhang
Sneha Kasera