Dear all (especially people working on BBN code with USRP2),
I know that some of you are working on simple_mac, higher modulation
rates and so on.
From my side I decided to spend some more time in understanding why the
bbn_802.11_tx.py doesn’t work when trying to receive with real 802.11
chipsets in monitor mode (modified to disable the mac CRC check).
After some inspection of the code, I believe that this is due to the
The code (bbn_firdes_barker.cc) does a convolution between an
oversampled sinc function and the barker sequence (and takes by default
exactly 8 samples).
The IEEE 802.11b standard doesn’t say anything about how the barker
sequence should be applied.
Therefore I don’t understand why the sinc convolution is used in the
(This could be (?) originally related to the limits in bandwidth of the
Anyway the fft of the signal generated by the BBN code (with the -b
option) has a spectrum completely different than the one generated by
the 802.11 chipset (compared by using usrp2_fft.py).
I decided to re-implement the barker (de)spreading.
I wrote a Matlab program where I simulated a usrp2 transmission in terms
of fpga rate, interpolation, timing, and so on.
As opposed to the convolution of the original BBN code, I used simple
rectangular windows to represent the Barker sequence.
I examined the spectrum of a train of these Barker sequences.
In order to obtain exactly 22 Mhz bandwidth, the usrp2 parameters must
be set in this way:
- Samples per chip = 2;
- Interpolation = 4;
I did the following thoughts:
- With barker sequence in DSSS mode we need to transmit 11Mchip/s in
order to obtain a real transmission at 1MSymbols/s (= 1Mbit/s in this
- 11Mchip/s means that we must transmit a single chip in about 91ns.
- The FPGA is able to process exactly 9 samples in this time interval
(100Msample/s -> a sample every 10ns).
Now, if we consider that a barker sequence has to be transmitted in
1microsecond and the minimum interpolation is 4, we have to take 25
samples for each barker sequence in order to obtain EXACTLY 1Mbit/s.
For the sake of simplicity I have tried with 22 samples per barker
sequence (2 samples per chip) and I obtained a spectrum very similar to
the one received from the chipset.
I’m working on this right now. But I am still not able to receive frames
on the real chipset.
Do you see any mistake in my reasoning?
Any suggestions/feedbacks/comments/critics/etc. is very welcome.