wineslab / colosseum-scope

Source code for the paper L. Bonati, S. D'Oro, S. Basagni, and T. Melodia, "SCOPE: An Open and Softwarized Prototyping Platform for NextG Systems," in Proceedings of ACM MobiSys, June 2021.
https://dl.acm.org/doi/10.1145/3458864.3466863
GNU General Public License v3.0
35 stars 14 forks source link

Running Scope without Colosseum #7

Closed aabedii closed 10 months ago

aabedii commented 1 year ago

Hello, Is there a readme file or guideline for running scope without colosseum? We are planning on running some over the air experiments with separate physical machines each equipped with an SDR. I assume after git clone, I should go to the radio_code directory and build and install srsLAN? Then connect a UE to the base station. At what point we should run scope? Thank you for your time!

aabedii commented 1 year ago

I tried to install the code under radio_code but I get the following error on Ubuntu 22.04.

/home/ali/colosseum-scope/radio_code/srsLTE/lib/src/phy/mimo/precoding.c:787:47: error: argument 4 of type ‘float *[2]’ with mismatched bound [-Werror=array-parameter=]
  787 |                                        float* csi[SRSLTE_MAX_CODEWORDS],
      |                                        ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/ali/colosseum-scope/radio_code/srsLTE/lib/src/phy/mimo/precoding.c:28:
/home/ali/colosseum-scope/radio_code/srsLTE/lib/include/srslte/phy/mimo/precoding.h:92:58: note: previously declared as ‘float *[4]’
   92 |                                                   float* csi[SRSLTE_MAX_LAYERS],
      |                                                   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
/home/ali/colosseum-scope/radio_code/srsLTE/lib/src/phy/mimo/precoding.c: In function ‘srslte_predecoding_type’:
/home/ali/colosseum-scope/radio_code/srsLTE/lib/src/phy/mimo/precoding.c:1925:16: error: ‘srslte_predecoding_diversity_multi’ accessing 32 bytes in a region of size 16 [-Werror=stringop-overflow=]
 1925 |         return srslte_predecoding_diversity_multi(y, h, x, csi, nof_rxant, nof_ports, nof_symbols, scaling);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

I have installed the required packages based on the README file of this release of srsLTE: https://github.com/srsran/srsRAN/tree/release_20_04

aabedii commented 1 year ago

The above error is clearly a bug. csi is defined in the header with the length of SRSLTE_MAX_LAYERS which is 2 but in the c files it is SRSLTE_MAX_CODEWORDS which is 4. There are some other errors too. I really doubt that you commited code that does not compile. Could you please advise what I am missing?

UPDATE: It looks like GCC 11 checks for these things. I think you used an older compiler. But the introduction of this error in GCC 11 found the above bug.

leonardobonati commented 1 year ago

Hi, the option --generic-testbed should facilitate running SCOPE without Colosseum, you can find some instructions here.

The compilation errors seem related to srsRAN, probably due to an incompatible cmake version. The srsRAN documentation should provide insights on this (e.g., on the build requirements for version 20.04, which is the one SCOPE is based upon).