The information on this website reflects the contents of the project readme file, which is available at the download website on GitHub. This package contains an OFDM framework that facilitates physical transmissions by means of WARP, the Wireless Open-Access Research Platform, and WARPLab, a framework that allows to access WARP hardware from the MATLAB workspace. The framework may serve as a basis for prototyping PHY mechanisms based on OFDM. Besides physical transmissions with WARP, the framework also allows for a simulated AWGN channel by MATLAB and may easily be extended by custom wireless channel models and interfaces of other SDR platforms.


The OFDM-WARPLab code is hosted at GitHub. The URL for the project is https://github.com/r3nk/WARPLab-OFDM. You can view and download there all project files. Moreover, you can use a git client to download the complete project repository with the following command:

$ git clone git://github.com/r3nk/WARPLab-OFDM


OFDM transmissions are initiated by the MATLAB script ofdm_run. It allows to set up all PHY parameters and switches for visualization, such as plots and scatter diagrams. Furthermore, it allows for execution in a loop and to save recorded transmissions to files.

The ofdm_run script calls the ofdm_func() function, which implements the actual OFDM functionality. The latter extracts the passed parameters, generates the OFDM signal, passes it to the transceiver for transmission, demodulates the received signals, and calculates error rates. The generated OFDM signal consists of a sequence of Npil pilot symbols, followed by a sequence of Ndat data symbols. Pilot symbols are employed to estimate the channel coefficients as well as the corresponding SNRs. Furthermore, pilot symbols are used to compensate the Carrier Frequency Offset (CFO) in practical setups, such as WARPLab, prior to channel estimation. The channel used to transmit the generated OFDM signal can be configured by the parameter params.transceiver in ofdm_run, which also allows to set up transmissions by means of WARPLab.

The functions warplab_2x2_multi_transceive() and warplab_4x4_multi_transceive() transmit a block of samples via WARPLab from a first WARP node to a second WARP node, where the received signals are captured. These functions additionally perform preamble synchronization in order to return the vectors of received samples in sync with the transmitted samples. The vectors of received samples thereby exactly match the transmitted vectors in length, which facilitates to abstract from the physical channel by the application. Note that these functions are not tied to OFDM but may be used to transceive any kinds of signals between WARPs.


Please see LICENSE.txt for detailed licensing information. Note that any use of the framework which results in an academic publication or other publication which includes a bibliography must include a citation to this project. Please use the following BibTex citation code:

Author = {Klose, Robin and Loch, Adrian and Hollick, Matthias},
Title = {OFDM Implementation for WARPLab},
Url = {https://www.seemoo.tu-darmstadt.de/software/warplab-ofdm/}


The framework was developed and tested with the following configuration:

  • WARP FPGA v2.2
  • WARPLab v5.02
  • MATLAB R2007b


The OFDM framework was devised at the Secure Mobile Networking Lab at Technische Universität Darmstadt in spring 2012 as part of the author's Master thesis with the title Dynamic Subchannel Allocation in OFDMA-Based Wireless Mesh Networks. The goal of the thesis was to quantify multi-user channel diversity gains by assigning OFDMA subchannels dynamically between communication links of several concurrent transmitters and receivers as a function of measured channel conditions in a decentralized topology.

The OFDM framework provided in this package is a stripped down variant of the more complex and more specific OFDMA framework devised in the thesis. It is meant to serve as a generic foundation for new innovative designs based on OFDM.