|Version 31 (modified by 3 years ago) ( diff ),|
Full-Duplex Wireless using USRP N210
In this tutorial, we'll use node11-10 in the main grid (equipped with a USRP N210) to transmit and receive a single frequency over the air to demonstrate full-duplex wireless capability using the Columbia FlexICoN's Gen-1 Frequency-Flat Amplitude- and Phase-based RF Canceller. Pictures of the FlexICoN RF canceller and node11-10 in the main grid equipped with full-duplex capability are below:
Figure 1: The ORBIT-FlexICoN Full-Duplex Node (a) The FlexICoN RF Canceller (b) Full-Duplex SDR at node11-10 in the ORBIT grid
For more information, please read:
T. Chen, J. Zhou, N. Grimwood, R. Fogel, J. Marasevic, H. Krishnaswamy, and G. Zussman, “Demo: Full-duplex Wireless based on a Small-Form-Factor Analog Self-Interference Canceller,” in Proc. ACM MobiHoc'16, 2016. (PDF) (DOI)
Please email Tingjun Chen (tingjun [at] ee.columbia.edu) if you are using (or plan to use) the full-duplex node, or if you have any questions. We also thank Mahmood Baraani Dasterjerdi and Steven Alfano for their great contributions.
Hardware / Software Resources Utilized
- The Columbia FlexICoN Gen-1 RF Canceller, which is a frequency-flat amplitude- and phase-based RF canceller implemented using discrete components on a PCB. The Gen-1 RF canceller is optimized to have a center operating frequency at 900MHz.
- USRP N210 with node11-10 in the ORBIT main grid.
- SUB-20 is a multi-interface USB adapter for providing popular interfaces between PC (USB host) and different hardware devices. Specifically, we use the SUB-20 SPI module to control and configure the Gen-1 RF canceller (see Fig. 1(a)). The user manual can be found here.
- UHD is already installed with the imaged SDR node.
Eigen C++Library is used for basic algebra used in channel estimation and digital self-interference cancellation. The Eigen releases can be found on the this website. We used the latest stable release Eigen 3.3.4 through our testings and experiments.
All the source code is also publicly available at here.
- Login into reserved domain:
- Make sure that the full-duplex node is powered down for loading the desired image:
omf tell -a offh -t node11-10
- Load an image on the node (this process can take about a few minutes so please be patient):
omf load -i orbit-flexicon.ndz -t node11-10
- Turn on the node:
omf tell -a on -t node11-10
- Login into the node:
ssh root@node11-10After login into the node, a
flexicon_orbitfolder should exist under the home directory of
node11-10:~/which contains the source code of this example. You can always retrieve the most recently updated code from here.
Run the Experiments
You will need to login into the full-duplex node (by
ssh root@node11-10) in two separate terminal windows lo for running the experiment: one for the main full-duplex transceiver UHD program and one for controlling the RF canceller
In Terminal 1 (UHD)
- Build the example:
cd ~/flexicon_orbit/fd_transceiver_simple/uhd/ mkdir build cd build cmake ../ make
- Check the conection and serial number of the USRP N210 using command
uhd_find_devices. The serial number should be
- Run the example with IQ rate
rate, carrier frequency
freq, TX gain
tx-gain, and RX gain
./fd_transceiver_simple --tx-args="serial=F331D4" --rx-args="serial=F331D4" --rate 1e6 --freq 900e6 --tx-gain 10 --rx-gain 10The default sine wave has an amplitude
ampl = 0.3and wave frequency of 100kHz
wave-freq = 100e3. This terminal window will show the power level at RX baseband, after RF cancellation (before digital) and after digital cancellation, respetively.
In Terminal 2 (SUB-20)
- Build the RF canceller configuration code:
cd ~/flexicon_orbit/fd_transceiver_simple/sub20/ make
- Check the connection to the SUB-20 device using command
lbusb. You should see a XDIMAX devices connected to the USB hub.
- Program and configure the RF canceller with the desired values:
./rf_canc_config ATT PS C1 C2 C3In particular, the
ATT = 0, 1, 2, ..., 127and
PS = 0, 1, 2, ..., 255codes are for configuring the 7-bit attenuator and 8-bit phase shifter of the Gen-1 RF canceller. It is recommended to use
C1 = 16, C2 = 3, C3 = 9. You can play with the values of
PSuntil you see good cancellation profile (e.g., low residual self-interference power level) in Terminal 1.
A Secondary Transmitter Using Node13-8
Once the full-duplex node11-10 is up and running, you can turn on another SDR to transmit to the full-duplex node. Below, we use
node13-8 as an example in the 3rd terminal window (Terminal 3).
- Load image, power on, and login into node13-8:
omf tell -a offh -t node13-8 omf load -i baseline-sdr.ndz -t node13-8 omf tell -a on -t node13-8 ssh root@node13-8
- Configure the USRP Ethernet interface:
ifconfig eth2 192.168.10.1 netmask 255.255.255.0 up
- Set up a secondary transmitter sending a sine wave at a different frequency (e.g., 200kHz) than that of the full-duplex node:
./tx_waveforms --args="serial=F331D4" --rate 1e6 --freq 900e6 gain 10 --wave-type SINE --wave-freq 200e3Now
- FlexICoN-gen1-node11-10.jpg (614.4 KB ) - added by 3 years ago.
- FlexICoN-gen1-canceller.jpg (476.4 KB ) - added by 3 years ago.
- FlexICoN-gen1-canceller-label.png (1.2 MB ) - added by 2 years ago.
- flexicon_orbit_grc_ofdm_node.png (142.2 KB ) - added by 12 months ago.
- flexicon_orbit_grc_ofdm_node_tab0.png (103.1 KB ) - added by 12 months ago.
- flexicon_orbit_grc_ofdm_node_tab1.png (37.6 KB ) - added by 12 months ago.
- flexicon_orbit_grc_ofdm_node_tab2.png (35.1 KB ) - added by 12 months ago.