Four-multi is a software framework targeted towards testbed implementations of wireless systems involving multiple antennas (per node), multiple-nodes (in the system and/or per cells), multiple-band (e.g several spectrum segments), and multiple cells. Four-multi runs on a special configuration of USRPs (see "requirements" below). Four-multi is packaged in a library (libfour_multi). Four-multi is released under the terms of the GNU General Public License (GPL) .
The strengths of four_multi include the following:
-
Enabling complex schemes involving multiple antennas, multiple nodes, multiple bands, and multiple cells (the four multis).
-
Uses largest bandwidths possible with USRP.
-
Enabling systems with feedback loops (e.g. beamforming/pre-coding, modulation & coding, scheduling etc.).
-
Providing means for feedback between nodes using internet connections (i.e. as a back-bone).
-
Enabling simulation of the entire system on a single computer with simple channel model provided.
-
Possibility to develop better channel models outside the frame-work and using these with simulator (the channel model is an input parameter to the simulator).
-
Enabling logging of all received (ADC) data for later post-processing in the simulator (some bugs can be corrected after having performed the measurement campaign!).
-
Providing a quite good adaptive modulation & coding toolbox (LDPC) and OFDM modulator.
-
Providing a simple example project, SISO_AMC_OFDM, which illustrates framework.
-
Providing an advanced project IA_CoMP found here. .
-
Open source code coded in beginners-level C++ code (eases reverse engineering)
-
Utilities for various tasks.
-
Uses Matlab as a "shell" to control the system (octave probably works equally well).
-
A user manual is provided here.
-
Free of annoying GUIs.
What are the requirements?
-
Every node need a PC with an Ethernet connection for each connected USRP (not entirely true, several nodes can share a PC using supernode class).
-
The USRPs connected to each node share 10MHz and PPS.
-
One USRP is required for each antenna and band we want to support.
-
Multiple nodes are synchronized with PPS and GPS. The GPS is provided on a serial port with NMEA format (we have built boxes for this and we can share this design).
-
So far we have only tried a system with the 10MHz and PPS of all nodes derived from the same source (the 10MHz and PPS are independent though).
-
When multiple nodes are using independently generated 10MHz and PPS, your receiver algorithms need to cater for the synchronization (i.e. the sample where the burst begins within the burst). We have no example code for this.
-
To cope with the time needed by the PC for the processing, the bursts need to be sufficiently inter-spaced. We have been using e.g. 0.1 seconds. In order to cope with fast fading we have been operating under stationary conditions (no one moving). Is this real-time operation? Depends on your definition. Feedback loops are still possible. We prefer calling it semi-realtime.
-
Currently we only support XCVR2450 and the basic daughterboard (but this is a piece of cake to fix).
-
We make four_multi work on a specific version of Ubuntu and UHD (3.3.2) and IT++ libraries (4.0.7). A different setup often means slight changes in the Makefiles.
-
We will do our best to support your use of the code - but our time is limited.
Developer: Per Zetterberg (per.zetterberg&ee.kth.se), KTH Royal Institute of Technology.