Lab Software

Software

The following is a list of applications developed through DWSL projects that are available for use. More information can be found about DWSL software through the official GitHub account.

Dragon Radio is a full-featured software-defined radio of our own design. This radio utilizes a TUN/TAP interface to allow for seamless integration with standard Linux network traffic test applications and routing protocols. The PHY layer of Dragon Radio is based on the open-source liquid-dsp communications signal processing framework, which provides well-tested modem functions for Fourier-based multi-carrier modulations, Orthogonal Frequency Division Multiplexing (OFDM), as well as single-carrier Quadrature Amplitude Modulation (QAM) and Gaussian Minimum Shift Keying (GMSK). It also includes an interface to an open-source Forward Error Correction (FEC) library. We selected liquid-dsp over GNU Radio as the basis of Dragon Radio because we required full control over scheduling, data flow, and transmission timing. The PHY, Media Access Control (MAC), and datalink layers of the radio are written in C++. This functionality is exposed to Python via pybind11, allowing control and spectrum sharing policies to be implemented in a high-level language. The combination of high-performance lower layers with high-level control allows testbed users with diverse research interests and backgrounds to immediately get up-and-running with the Radio on our testbed.

The radio makes extensive use of both parallelism and concurrency. For example, a bank of demodulator threads acts in parallel to demodulate multiple radio channels simultaneously, and C++ atomics are used to coordinate concurrent radio signal reception and demodulation. In the hybrid FDMA/Time Division Multiple Access (TDMA) MAC we have developed, parallelism enables frequency diversity, and concurrency decreases latency because demodulators do not need to wait for an entire TDMA slot’s worth of data to have been received before demodulation can begin.

We are successfully leveraging Dragon Radio for research and education at Drexel. The radio is being used in SDR-based research, and is also being used for both formal and informal coursework at Drexel. In addition, we are advising several undergraduate students participating in Drexel’s Vertically Integrated Projects (VIP) Program. Depending on their interests, small teams of VIP students are given research tasks that build upon Dragon Radio’s software as a platform for further discovery.

DragonRadio originated as Drexel’s entry into DARPA’s SC2 competition. It is a software-defined radio built from scratch—it is not based on GNURadio—and has the following notable features:

  • Runs on the Northeastern Colosseum. DragonRadio provides an easy path to getting started with the Colosseum, a large-scale wireless emulator.
  • Uses USRP hardware. DragonRadio has been tested on both the N210 and X310 platforms.
  • Pure software. All functionality is implemented in software and can run on stock USRP firmware.
  • Low-level functionality implemented in Modern C++. All low-level functionality is implemented in C++17 and makes extensive use of modern C++ features like std::shared_ptr.
  • Fast signal processing primitives. DragonRadio includes fast time- and frequency-domain filters, implemented with the help of xsimd.
  • OFDM PHY layer. Included PHY layers are based on liquid-dsp. However, the PHY interface is modular and not tied to liquid-dsp, so other PHY layers could easily be integrated.
  • FDMA, FDMA/TDMA, and ALOHA MACs. A sophisticated FDMA/TDMA MAC layer is provided that allows scheduling in both time and frequency. FDMA and ALOHA MACs are also included.
  • Embedded Python interpreter. DragonRadio embeds a Python interpreter, and all low-level functionality is exposed to Python via pybind11. The radio is configured from Python.

Please submit any issues on GitHub. This project is supported by NSF awards 1717088 and 1730140.

Team Dragon Radio

This software suite contains scripts to collect and store IoT sensor data, such as RFID tag information using an Impinj Speedway RFID reader. The collection framework interfaces with a heterogeneous suite of devices in real-time, and stores the data in a database or streaming service as defined by the driver configuration. A corresponding processing suite visualizes the real-time or archived data collected by the collection framework, enabling rapid experimentation and testing of machine learning algorithms on existing and new datasets. Sensor fusion, ground truth, and data perturbation modules allow for automated and controlled manipulation of the data sets and comparison to ground truth. It is modular and generalizable to a variety of sensor systems and processing needs.

IoT Sensor Framework
IoT Sensor Framework
IoT Sensor Framework
IoT Sensor Framework

Information about the architecture of this system can be found in Dr. Bill Mongan’s Ph.D. Dissertation and on this paper detailing the use of the framework on RFID-based sensor systems.

This effort was supported in part by the National Science Foundation, the National Institutes of Health, and the Commonwealth of Pennsylvania.

The packages for data collection and data processing, respectively, are hosted on GitHub at the following locations:

IoT Data Collection Framework IoT Data Processing Framework

We have made datasets public from simulated mannequins and emulated environments on GitHub.

Installation Videos

  • iot-software-framework

iot-software-framework

  • iot-processing-framework

iot-processing-framework

  • Running the Software

Running the Software

  • IoT Data Collection Framework bibtex
@misc{githubiotsensorframework,
    author       = {William M. Mongan and Ilhaan Rasheed and Enioluwa Segun and Henry Dang and Victor S. Cushman and Charlie R. Chiccarine and Kapil R. Dandekar and Adam K. Fontecchio},
    title        = {drexelwireless/iot-sensor-framework: Public Release 1.0},
    month        = may,
    year         = 2020,
    doi          = {10.5281/zenodo.3786932},
    version      = {v1.0},
    publisher    = {Zenodo},
    url          = {https://doi.org/10.5281/zenodo.3786932}
}
  • IoT Data Processing Framework bibtex
@misc{githubiotprocessingframework,
    author       = {William M. Mongan and Kapil R. Dandekar and Adam K. Fontecchio},
    title        = {drexelwireless/iot-processing-framework: Public Release 1.1},
    month        = may,
    year         = 2020,
    doi          = {10.5281/zenodo.3786930},
    version      = {v1.1},
    publisher    = {Zenodo},
    url          = {https://doi.org/10.5281/zenodo.3786930}
}