This webpage contains instructions to set up our OpenRF platform to enable interference nulling and coherent beamforming for 802.11n cards. The code is built for Intel Wi-Fi Wireless Link 5300 802.11n MIMO radios, using a custom open source driver. The code extends the 802.11n CSI Tool from the University of Washington.
The alpha release of this tool implements interference nulling and coherent beamforming. The OpenRF controller is not included in this release. For more information about OpenRF, please refer to our paper in SIGCOMM 2013.
To perform this installation, you will need a PC or Laptop with the Intel 5300 Wi-Fi card. Please be prepared to perform a clean installation on this computer.
svn co https://svn.csail.mit.edu/openrf
sudo ./openrf/setup_scripts/setup_csi_tool.shYou will notice a sequence of commands leading up to a "visudo" window. In this window, perform the following modifcation to the final line:
# change # %admin ALL=(ALL) ALL # to # %admin ALL=NOPASSWD: ALLThis disables the need for password checks for sudo.
sudo ./openrf/setup_scripts/setup_csi_tool_2.sh
Testing the code requires MATLAB. We recommend a Matlab version >= R2011a We require two machines to be set up, one for the AP and one for the client.
sudo ./openrf/load_scripts/start_ap.sh
sudo ./openrf/load_scripts/start_rx.sh openrfap
ping 10.10.10.1 # Keep running in the background
cd ./openrf/linux-80211n-csitool-supplementary/matlabOpen MATLAB on both access point and client.
matlab>> csi_init = plot_next_channel;
sudo cat `find /sys -name csi_table`Note the MAC address of the client you wish to null or beamform at. To then perform nulling at antenna one on the client, run the following in MATLAB:
matlab>> precod_channel('NULLING', [MAC address]);
matlab>> % e.g. precod_channel('NULLING', '0:16:EA:12:34:56');
Alternatively, to perform beamforming at antenna one on the client, run the following in MATLAB:
matlab>> precod_channel('DIVERSITY', [MAC address]);
matlab>> % e.g. precod_channel('DIVERSITY', '0:16:EA:12:34:56');
matlab>> csi_init = plot_next_channel;Verify that the channel at antenna 1 on the client has indeed been nulled (or) beamformed.