mgp25 / OpenLTE

An open source 3GPP LTE implementation.
GNU Affero General Public License v3.0
225 stars 84 forks source link

Issue in OpenLTE installation #3

Closed dominicantonyv closed 5 years ago

dominicantonyv commented 5 years ago

Hi

I was successful in running the command "./build-gnuradio -v". All the prerequisites were built and installed. But at the time of OpenLTE installation, the following error occurred.

The following is a part of output on running "make" for OpenLTE

[ 74%] Building CXX object LTE_fdd_enodeb/CMakeFiles/LTE_fdd_enodeb.dir/src/LTE_fdd_enb_radio.cc.o In file included from /home/xxx/OpenLTE/OpenLTE-master/LTE_fdd_enodeb/hdr/LTE_fdd_enb_radio.h:56, from LTE_fdd_enb_radio.cc:63: LTE_fdd_enb_radio.cc: In member function ‘LTE_FDD_ENB_ERROR_ENUM LTE_fdd_enb_radio_bladerf::setup(uint32, double, int16, int16, uint8, uint32, uint32)’:

LTE_fdd_enb_radio.cc:825:34: error: invalid conversion from ‘bladerf_channel’ {aka ‘int’} to ‘bladerf_channel_layout’ [-fpermissive]

/usr/local/include/libbladeRF.h:2541:58: note: initializing argument 2 of ‘int bladerf_sync_config(bladerf*, bladerf_channel_layout, bladerf_format, unsigned int, unsigned int, unsigned int, unsigned int)’ bladerf_channel_layout layout,



LTE_fdd_enb_radio.cc:845:34: **error**: invalid conversion from ‘bladerf_channel’ {aka ‘int’} to ‘bladerf_channel_layout’ [-fpermissive]

/usr/local/include/libbladeRF.h:2541:58: note: initializing argument 2 of ‘int bladerf_sync_config(bladerf*, bladerf_channel_layout, bladerf_format, unsigned int, unsigned int, unsigned int, unsigned int)’
bladerf_channel_layout layout,
~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
LTE_fdd_enb_radio.cc: In member function ‘void LTE_fdd_enb_radio_bladerf::receive(LTE_FDD_ENB_RADIO_PARAMS_STRUCT*)’:

LTE_fdd_enb_radio.cc:977:40: **error**: invalid conversion from ‘bladerf_channel’ {aka ‘int’} to ‘bladerf_direction’ [-fpermissive]

/usr/local/include/libbladeRF.h:2467:55: note: initializing argument 2 of ‘int bladerf_get_timestamp(bladerf*, bladerf_direction, bladerf_timestamp*)’
bladerf_direction dir,
~~~~~~~~~~~~~~~~~~^~~
make[2]: *** [LTE_fdd_enodeb/CMakeFiles/LTE_fdd_enodeb.dir/src/LTE_fdd_enb_radio.cc.o] Error 1
make[1]: *** [LTE_fdd_enodeb/CMakeFiles/LTE_fdd_enodeb.dir/all] Error 2
make: *** [all] Error 2

Could someone please help me to fix this issue?

mgp25 commented 5 years ago

This issue might help you: https://github.com/f4exb/sdrangel/issues/217. Let us know if that worked.

Regards

dominicantonyv commented 5 years ago

@mgp25 No it didn't work it seems. The following is what I have done.

I edited the line in "build-gnuradio" file where the bladerf is cloned from github. The original line was

git clone https://github.com/Nuand/bladeRF.git >>$LOGDEV 2>&1.

I changed it to

git clone --branch 2016.06 https://github.com/Nuand/bladeRF.git >>$LOGDEV 2>&1.

Then I ran "./build-gnuradio -v" and everything was fine. But again at the time of OpenLTE installation, the process failed for the same issue.

Did I do anything wrong or missed anything. Please help.

mgp25 commented 5 years ago

I found a guide to install OpenLTE with BladeRF support: https://cn0xroot.com/2016/07/06/how-to-build-4g-lte-base-station-with-gnuradio-bladerf-openlte-part-1/

Keep in mind that this is not the official repository and although I am happy to answer all your questions, in OpenLTE forum they will give you a more accurate answer.

Regards

dominicantonyv commented 5 years ago

@mgp25 I would like to check with you if it is possible to disable or unplug the BladeRF support in OpenLTE, so that it doesn't matter if BladeRF is installed or not. Actually, the hardware in my interest is only USRP.

mgp25 commented 5 years ago

All the installation steps mentioned in this repository readme are based for an USRP device, in specific the B200 series board.

I am not sure if you managed to solve the issue, if so let us know.

I am closing this issue, but feel free to open it again if the issue persists.

Regards

tranzmatt commented 4 years ago

I am still having this issue trying to build the latest openlte against the latest bladeRF.

[ 77%] Building CXX object LTE_fdd_enodeb/CMakeFiles/LTE_fdd_enodeb.dir/src/LTE_fdd_enb_radio.cc.o
In file included from LTE_fdd_enb_radio.cc:70:
/home/matt/gnuradio-3.7/include/uhd/utils/thread_priority.hpp:10:17: note: #pragma message: This header is deprecated - please use <uhd/utils/thread.hpp> instead.
 #pragma message "This header is deprecated - please use <uhd/utils/thread.hpp> instead."
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/matt/gnuradio-3.7/src/openlte/LTE_fdd_enodeb/hdr/LTE_fdd_enb_radio.h:56,
                 from LTE_fdd_enb_radio.cc:63:
LTE_fdd_enb_radio.cc: In member function ‘LTE_FDD_ENB_ERROR_ENUM LTE_fdd_enb_radio_bladerf::setup(uint32, double, int16, int16, uint8, uint32, uint32)’:
/home/matt/gnuradio-3.7/include/libbladeRF.h:551:32: error: invalid conversion from ‘bladerf_channel’ {aka ‘int’} to ‘bladerf_channel_layout’ [-fpermissive]
 #define BLADERF_CHANNEL_TX(ch) (bladerf_channel)(((ch) << 1) | 0x1)
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/matt/gnuradio-3.7/include/libbladeRF.h:567:27: note: in expansion of macro ‘BLADERF_CHANNEL_TX’
 #define BLADERF_MODULE_TX BLADERF_CHANNEL_TX(0)
                           ^~~~~~~~~~~~~~~~~~
LTE_fdd_enb_radio.cc:825:34: note: in expansion of macro ‘BLADERF_MODULE_TX’
/home/matt/gnuradio-3.7/include/libbladeRF.h:2463:58: note:   initializing argument 2 of ‘int bladerf_sync_config(bladerf*, bladerf_channel_layout, bladerf_format, unsigned int, unsigned int, unsigned int, unsigned int)’
                                   bladerf_channel_layout layout,
                                   ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
/home/matt/gnuradio-3.7/include/libbladeRF.h:536:32: error: invalid conversion from ‘bladerf_channel’ {aka ‘int’} to ‘bladerf_channel_layout’ [-fpermissive]
 #define BLADERF_CHANNEL_RX(ch) (bladerf_channel)(((ch) << 1) | 0x0)
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
davmar88 commented 4 years ago

Yup. Having another issue too

Scanning dependencies of target LTE_fdd_enodeb [ 77%] Building CXX object LTE_fdd_enodeb/CMakeFiles/LTE_fdd_enodeb.dir/src/LTE_fdd_enb_radio.cc.o In file included from /home/marietjie/openlte_v00-20-05/LTE_fdd_enodeb/hdr/LTE_fdd_enb_radio.h:56:0, from LTE_fdd_enb_radio.cc:63: LTE_fdd_enb_radio.cc: In member function ‘LTE_FDD_ENB_ERROR_ENUM LTE_fdd_enb_radio_bladerf::setup(uint32, double, int16, int16, uint8, uint32, uint32)’: LTE_fdd_enb_radio.cc:825:34: error: invalid conversion from ‘bladerf_channel {aka int}’ to ‘bladerf_channel_layout’ [-fpermissive] /usr/local/include/libbladeRF.h:2577:15: note: initializing argument 2 of ‘int bladerf_sync_config(bladerf*, bladerf_channel_layout, bladerf_format, unsigned int, unsigned int, unsigned int, unsigned int)’ int CALL_CONV bladerf_sync_config(struct bladerf *dev, ^~~~~~~~~~~~~~~~~~~ LTE_fdd_enb_radio.cc: In member function ‘void LTE_fdd_enb_radio_bladerf::receive(LTE_FDD_ENB_RADIO_PARAMS_STRUCT*)’: LTE_fdd_enb_radio.cc:977:40: error: invalid conversion from ‘bladerf_channel {aka int}’ to ‘bladerf_direction’ [-fpermissive] /usr/local/include/libbladeRF.h:2503:15: note: initializing argument 2 of ‘int bladerf_get_timestamp(bladerf*, bladerf_direction, bladerf_timestamp*)’ int CALL_CONV bladerf_get_timestamp(struct bladerf *dev, ^~~~~~~~~~~~~~~~~~~~~ LTE_fdd_enodeb/CMakeFiles/LTE_fdd_enodeb.dir/build.make:302: recipe for target 'LTE_fdd_enodeb/CMakeFiles/LTE_fdd_enodeb.dir/src/LTE_fdd_enb_radio.cc.o' failed make[2]: *** [LTE_fdd_enodeb/CMakeFiles/LTE_fdd_enodeb.dir/src/LTE_fdd_enb_radio.cc.o] Error 1 CMakeFiles/Makefile2:961: recipe for target 'LTE_fdd_enodeb/CMakeFiles/LTE_fdd_enodeb.dir/all' failed make[1]: *** [LTE_fdd_enodeb/CMakeFiles/LTE_fdd_enodeb.dir/all] Error 2 Makefile:140: recipe for target 'all' failed make: *** [all] Error 2

davmar88 commented 4 years ago

Nevermind, here is the fix:

> diff --git a/LTE_fdd_enodeb/src/LTE_fdd_enb_radio.cc b/LTE_fdd_enodeb/src/LTE_fdd_enb_radio.cc
index 7e03e08..9f1a011 100755
--- a/LTE_fdd_enodeb/src/LTE_fdd_enb_radio.cc
+++ b/LTE_fdd_enodeb/src/LTE_fdd_enb_radio.cc
@@ -822,7 +822,7 @@ LTE_FDD_ENB_ERROR_ENUM LTE_fdd_enb_radio_bladerf::setup(uint32 idx,
         buffer_size = 1024;
     }
     status = bladerf_sync_config(bladerf,
-                                 BLADERF_MODULE_TX,
+                                BLADERF_TX_X1,
                                  BLADERF_FORMAT_SC16_Q11_META,
                                  BLADERF_NUM_BUFFERS,
                                  buffer_size,
@@ -842,7 +842,7 @@ LTE_FDD_ENB_ERROR_ENUM LTE_fdd_enb_radio_bladerf::setup(uint32 idx,

     // Setup sync RX
     status = bladerf_sync_config(bladerf,
-                                 BLADERF_MODULE_RX,
+                                BLADERF_RX_X1,
                                  BLADERF_FORMAT_SC16_Q11_META,
                                  BLADERF_NUM_BUFFERS,
                                  buffer_size,
@@ -974,7 +974,7 @@ void LTE_fdd_enb_radio_bladerf::receive(LTE_FDD_ENB_RADIO_PARAMS_STRUCT *radio_p
     if(radio_params->init_needed)
     {
         // Assume RX_timestamp and TX_timestamp difference is 0
-        bladerf_get_timestamp(bladerf, BLADERF_MODULE_RX, (uint64_t*)&rx_ts);
+        bladerf_get_timestamp(bladerf, BLADERF_RX, (uint64_t*)&rx_ts);
         next_tx_ts            = rx_ts + radio_params->samp_rate; // 1 second to make sure everything is setup
         metadata_rx.flags     = 0;
         metadata_rx.timestamp = next_tx_ts - (radio_params->N_samps_per_subfr*2); // Retard RX by 2 subframes
Keskebeu commented 4 years ago

@davmar88 that fixed it for me too. Thanks