Giter Site home page Giter Site logo

airfide-radios's Introduction

Airfide-Radios

!!! Do not redistribute this repo without written permission from UCSD WCSN group

This repo contains necessary instructions and resources for running experiments with Airfied Sparrow+ 802.11ad radio.

  • Set up and connect AP and STA.
  • Collect per beam RSS traces.
  • Create/modify beams in a codebook.
  • Add wmi function calls to the Python controller.
  • Firmware patching.

Basic runs

For a simple AP/STA test you need two Sparrow+ radios (one acting as the AP and the other as the STA) and a host PC. Connect two radios' port 2 to the host PC's via a switch or router. You may need to mannually assign the host's route or ethernet IP address in order to access the radios. Make sure you can access both radios using ssh root@<radio_ip_addr>.

Next run the AP/STA setup scripts in script. You can either copy the scripts to the radios and run it locally or run ssh root@<radio_ip_addr> 'bash -s' < ap.sh on the host. After running the setup scripts, reboot both AP and STA by running sudo reboot; exit

After reboot, ssh into the STA radio and check the link. The 802.11ad interface in the radios is typically named wlan0. Check if the link is established using iw wlan0 link.

iw_link_output.png

If you see an output like this, it means you have successfully created a millimeter wave connection between the two radios!

Collect per beam RSS traces

In 802.11ad radios, the AP periodically transmits a series reference signals with each beam in the codebook. The STA evaluates the received signal strength of each beam and selects the strongest one for DL transmission. By default, the per beam RSS values are inaccessible to applications. However, we can inject a piece of code to the firmware to copy the per beam RSS values to a memory address that is readable by applications (in our case the Python server). See this paper for more details.

The patched firmware can be found here: firmwares/STA/wil6210_sparrow_plus_v2x_client.fw. To collect per beam RSS, we need to replace the original firmware with the patched one and run the Python server on the radio. We also need to run a client either host or radio to collect the per beam RSS values. The firmware is located at /lib/firmware/wil6210_sparrow_plus.fw. Overwrite this file with the patched firmware and reboot the 802.11ad interface by running ifconfig wlan0 down followed by ifconfig wlan0 up. Next, copy the Python server named wil6210_server-2.2.0 in python_server/ to the radio and run python wil6210_server-2.2.0 <port_number>. The Python server program shows the firmware patch version so you can check if you have successfully replaced the firmware.

Now start up the client script by running python get_per_beam_rss.py --server_ip <radio_ip> --server_port <port_number>. You should be able to see the visualized per beam RSS values in real time!

Modify codebooks

In Airfied radios, the antenna weight of each beam is stored in the codebook file located at /lib/firmware/wil6210_sparrow_plus.brd. You can use wil6210_brd_mod in codebooks/ To check or modify the antenna weight in a codebook. For more usage, run ./wil6210_brd_mod --help (note: it seems this binary only works in ubuntu OS).

Python controller

See this repo to create you customized functions in the Python controller, build the controller for different platforms, and more.

Firmware patching

See this repo for firmware patching.

Debug

  • The radio's disk space is very limited. Try to store large file to \tmp.

airfide-radios's People

Contributors

iamzhengzheng avatar sowang46 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.