Skip to content

kg810/gr-ieee802-11

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hi,

this an IEEE 802.11 a/g/p transceiver for GNU Radio v3.7. Over the air, I tested it with the Ettus USRP N210 with XCVR2450 and CBX daughterboards. For interoperability tests I use mainly an Atheros (ath5k) WiFi card. The code can also be used to make packet error rate simulations.

### DEPENDENCIES

IT++ (Version: 4.2-4)
GNU Radio (v3.7 with UHD support)
If you want to run the receive demo (the one that plots the subcarrier constellations), please assert that you have python-opengl installed. The nongl version of the plot does not work for me.


### INSTALLATION

sudo apt-get install libitpp-dev
git clone git://github.com/bastibl/gr-ieee802-11.git
cd gr-ieee802-11
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig

If you want to connect the flow graph to Wireshark you might also want to install my non WiFi related blocks from
https://github.com/bastibl/gr-foo

The physical layer is encapsulated in a hierarchical block. To install it, open examples/ofdm_phy_hier.grc in GRC and click build.


### USAGE

In the examples folder are several flow graphs. For the more complex ones, there are start scripts in the apps folder.


### REMARKS

- If you have problems with the DC offset, try to set the frequency of the RF frontend to a value outside your signal of interest. To do that, set the frequency parameter of the USRP block to something like: uhd.tune_request(5.9e9, 6e6).
- If you have a CBX or SBX board, calibrate it.
- If you have overruns, assert that you compiled everything in release mode and run volk_profile, which is part of GNU Radio.
- If 'D's appear, it might be related to your network interface card. Assert that you made the sysconf changes recommended by Ettus. What NIC do you have? How are you connected to the USRP (switch or directly)?
- I never needed it, but maybe real-time priority helps.

Transmitter related:
- The transceiver is currently connected to a TAP device, i.e. is a virtual Ethernet interface. Therefore, we have no WiFi signaling like association requests and hence, the transceiver can not "join" an ad hoc network. You have to make some small changes to the kernel in order to convince you WiFi card to send to this hosts nevertheless.
- The transceiver can not respond to ACKs in time. This is kind of an architectural limitation of USRP + GNU Radio since Ethernet and computations on a normal CPU introduce some latency. You can set the number of ACK retries to zero and handle retransmits on higher layers (-> TCP).
- RTS/CTS is not working for the same reason. You can however just disable this mechanism.
- Currently, there is no CSMA/CA mechanism, but this can be implemented on the FPGA.

### FURTHER INFORMATION

http://www.ccs-labs.org/projects/wime/

Releases

No releases published

Packages

No packages published