At this point, I am focusing on adding to the eNodeB capabilities on the
B2X0 platforms. The last time I had checked (and this may have changed)
BladeRF did not have a time-stamping functionality. This functionality is
absolutely critical for an eNodeB application.
The people at Nuand have just released a Timed FPGA image under the dev-openbts branch on github, if this helps you. Fantastic project by the way, really following this closely.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The people at Nuand have just released a Timed FPGA image under the
dev-openbts branch on github, if this helps you. Fantastic project by the
way, really following this closely.
There currently is support for BladeRF in LTE_fdd_dl_scan and
LTE_file_recorder but not in LTE_fdd_enodeb. I have been busy adding upper
layer functionality to LTE_fdd_enodeb and have not had time to add BladeRF
support.
Ben
On Wed, Sep 3, 2014 at 10:57 AM, Carlos Hanze Sanchez <hanzeman@users.sf.net
wrote:
Hi, sorry for the same question, but OpenLTE has already support for
BladeRF?
I´m in a academic project and I would like use OpenLTE as eNodeB.
I have been playing with bladeRF on LTE_fdd_eNodeB in my spare time. Managed to get a rudimentary thing together, still not stable.
Doesn't help that I'm using Cygwin. I found the boost mutex implementations under Cygwin perform very poorly so I've had to Win32-ize the openLTE msgq stuff.
Lots of stuttering and skipping, have eliminated most, but the code is littered with Microsoft ETW crap and rdpmc's to try and track down some of the perf problems.
Hopefully I'll have something to share eventually...
I'd be interested in working with the OpenLTE with BladeRF radio too. I have the bladeRF radio handy, and am hoping you can share what changes you had to do to get enodeB to use the bladeRF radio?
Thanks.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello all
I'm looking forward to test openLTE on my bladeRF,
meanwhile I ' m testing this: https://github.com/srsLTE/srsLTE
if anyone is already testing we can share the experience
thanks
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello all,
I have been trying to run OpenLTE with BladeRF too. I'm not experienced with BladeRF, but achieve some partial success: UE could find my network (on proper earfcn it could see my plmn and bandwidth), but cannot connect. I can't see any error/debug messages from OpenLTE, so I don't know what happens with RX.
I'm sharing my prliminary solution (there are some debugs/printfs and so on). Maybe someone could improve it or suggest what I'm doing wrong.
There are few constraints with this solution.
1) It works with bandwidth set to 10 MHz (I think this is because of bladerf_sync_config function: "The size of the underlying stream buffers, in samples. This value must be a multiple of 1024. Note that samples are only transferred when a buffer of this size is filled." When bandwidth=10 MHz than buffer consist of 15360 samples (15 * 1024), otherwise it is not aligned to 1024.)
2) TX timestamp and RX timestamp, as far as I know, are independent. I don't know how to find its difference ina simple way. I think that RX-TX offset may be major issue why no data from UE is visible.
I test this with default System Parameters except earfcn which was one from bands 20, 5 and 7:
*** LTE FDD ENB ***
Type help to see a list of commands
help
***System Configuration Parameters***
Read parameters using read <param> format
Set parameters using write <param> <value> format
Commands:
start - Constructs the system information and starts the eNB
stop - Stops the eNB
shutdown - Stops the eNB and exits
construct_si - Constructs the new system information
help - Prints this screen
add_user imsi=<imsi> imei=<imei> k=<k> - Adds a user to the HSS (<imsi> and <imei> are 15 decimal digits, and <k> is 32 hex digits)
del_user imsi=<imsi> - Deletes a user from the HSS
print_users - Prints all the users in the HSS
Radio Parameters:
available_radios: (read-only)
0: no_rf
1: 46128c1d9c671e0129c3c913d5a3eaba
selected_radio_name (read-only) = 46128c1d9c671e0129c3c913d5a3eaba
selected_radio_idx = 1
clock_source = internal
System Parameters:
band = 20
bandwidth = 10
cell_id = 1
debug_level = radio phy mac rlc pdcp rrc mme gw user rb timer iface msgq
debug_type = error warning info debug
dl_center_freq = 796000000
dl_earfcn = 6200
dns_addr = C0A80101
enable_pcap = 0
ip_addr_start = C0A80102
mcc = 001
mnc = 01
n_ant = 1
n_id_cell = 0
p0_nominal_pucch = -96
p0_nominal_pusch = -70
q_hyst = 0
q_rx_lev_min = -140
rx_gain = 0
search_win_size = 0
sib3_present = 0
sib4_present = 0
sib5_present = 0
sib6_present = 0
sib7_present = 0
sib8_present = 0
tracking_area_code = 1
tx_gain = 0
ul_center_freq = 837000000
ul_earfcn = 24200
use_cnfg_file = 1
use_user_file = 1
Regards,
Edit:
There were simple bug when RX buffer was copied. I fix it and now there are following debug logs:
02/15/2016 02:44:05.368611 info iface LTE_fdd_enb_interface.cc 781 *** LTE FDD ENB DEBUG INTERFACE ***
02/15/2016 02:44:36.085997 info user LTE_fdd_enb_user_mgr.cc 157 C-RNTI=61 assigned
02/15/2016 02:44:36.086064 info mac LTE_fdd_enb_mac.cc 861 RAR scheduled 1
02/15/2016 02:44:36.086148 info mac LTE_fdd_enb_mac.cc 989 RAR sent 1084 1091 1088 1094 4F0140C80C003D
02/15/2016 02:44:36.087066 info phy LTE_fdd_enb_phy.cc 430 Received PDSCH schedule from MAC CURRENT_TTI:MAC=1088,PHY=1086 N_dl_allocs=1 N_ul_allocs=0
02/15/2016 02:44:36.095906 info phy LTE_fdd_enb_phy.cc 458 Received PUSCH schedule from MAC CURRENT_TTI:MAC=1094,PHY=1092 N_ul_decodes=1
02/15/2016 02:44:36.105831 info user LTE_fdd_enb_user_mgr.cc 157 C-RNTI=62 assigned
02/15/2016 02:44:36.105885 info mac LTE_fdd_enb_mac.cc 861 RAR scheduled 1
02/15/2016 02:44:36.105971 info mac LTE_fdd_enb_mac.cc 989 RAR sent 1104 1111 1108 1114 4F0140C80C003E
02/15/2016 02:44:36.106911 info phy LTE_fdd_enb_phy.cc 430 Received PDSCH schedule from MAC CURRENT_TTI:MAC=1108,PHY=1106 N_dl_allocs=1 N_ul_allocs=0
02/15/2016 02:44:36.115779 info phy LTE_fdd_enb_phy.cc 458 Received PUSCH schedule from MAC CURRENT_TTI:MAC=1114,PHY=1112 N_ul_decodes=1
02/15/2016 02:44:36.125671 info user LTE_fdd_enb_user_mgr.cc 157 C-RNTI=63 assigned
02/15/2016 02:44:36.125724 info mac LTE_fdd_enb_mac.cc 861 RAR scheduled 1
02/15/2016 02:44:36.125808 info mac LTE_fdd_enb_mac.cc 989 RAR sent 1124 1131 1128 1134 4E0140C80C003F
02/15/2016 02:44:36.126740 info phy LTE_fdd_enb_phy.cc 430 Received PDSCH schedule from MAC CURRENT_TTI:MAC=1128,PHY=1126 N_dl_allocs=1 N_ul_allocs=0
02/15/2016 02:44:36.135622 info phy LTE_fdd_enb_phy.cc 458 Received PUSCH schedule from MAC CURRENT_TTI:MAC=1134,PHY=1132 N_ul_decodes=1
...
1) It works with bandwidth set to 10 MHz (I think this is because of bladerf_sync_config function: "The size of the underlying stream buffers, in samples. This value must be a multiple of 1024. Note that samples are only transferred when a buffer of this size is filled." When bandwidth=10 MHz than buffer consist of 15360 samples (15 * 1024), otherwise it is not aligned to 1024.)
2) TX timestamp and RX timestamp, as far as I know, are independent. I don't know how to find its difference ina simple way. I think that RX-TX offset may be major issue why no data from UE is visible.
I have the same problem with my implementation. The problem is actually worse with the metadata enabled, because there is a further 16/2048 overhead (16 byte meta header per 512 samples) that makes the alignment impossible. The only way around this is to wait for the next TX frame to be ready so it can start transmitting to clear out the last buffer. This adds as much as 1 ms to the latency budget.
I partially worked against this by setting my buffer size to be approximately 1/4 of the 1ms sample rate so that only the last buffer is blocked and hopefully new frame is ready for TX, this requies at least 0.25ms of latency head room.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello,
Compiling doesn't work after replacing the files in src and hdr provided in "bladerf_code_v3.zip":
I get the following errors:
LTE_fdd_enb_interface.cc:306:27: error: ‘va_start’ was not declared in this scope
LTE_fdd_enb_interface.cc: In member function ‘void LTE_fdd_enb_interface::send_debug_msg(LTE_FDD_ENB_DEBUG_TYPE_ENUM, LTE_FDD_ENB_DEBUG_LEVEL_ENUM, std::string, int32, std::string, ...)’:
LTE_fdd_enb_interface.cc:368:27: error: ‘va_start’ was not declared in this scope
LTE_fdd_enb_interface.cc: In member function ‘void LTE_fdd_enb_interface::send_debug_msg(LTE_FDD_ENB_DEBUG_TYPE_ENUM, LTE_FDD_ENB_DEBUG_LEVEL_ENUM, std::string, int32, LIBLTE_BIT_MSG_STRUCT, std::string, ...)’:
LTE_fdd_enb_interface.cc:411:27: error: ‘va_start’ was not declared in this scope
LTE_fdd_enb_interface.cc: In member function ‘void LTE_fdd_enb_interface::send_debug_msg(LTE_FDD_ENB_DEBUG_TYPE_ENUM, LTE_FDD_ENB_DEBUG_LEVEL_ENUM, std::string, int32, LIBLTE_BYTE_MSG_STRUCT, std::string, ...)’:
LTE_fdd_enb_interface.cc:484:27: error: ‘va_start’ was not declared in this scope
LTE_fdd_enb_interface.cc: In member function ‘void LTE_fdd_enb_interface::send_lte_pcap_msg(LTE_FDD_ENB_PCAP_DIRECTION_ENUM, uint32, uint32, uint8, uint32)’:
LTE_fdd_enb_interface.cc:581:26: error: aggregate ‘LTE_fdd_enb_interface::send_lte_pcap_msg(LTE_FDD_ENB_PCAP_DIRECTION_ENUM, uint32, uint32, uint8, uint32)::timezone time_zone’ has incomplete type and cannot be defined
LTE_fdd_enb_interface.cc:596:39: error: ‘gettimeofday’ was not declared in this scope
LTE_fdd_enb_interface.cc: In member function ‘void LTE_fdd_enb_interface::send_ip_pcap_msg(uint8, uint32)’:
LTE_fdd_enb_interface.cc:677:26: error: aggregate ‘LTE_fdd_enb_interface::send_ip_pcap_msg(uint8, uint32)::timezone time_zone’ has incomplete type and cannot be defined
LTE_fdd_enb_interface.cc:686:39: error: ‘gettimeofday’ was not declared in this scope
LTE_fdd_enb_interface.cc: In member function ‘void LTE_fdd_enb_interface::get_formatted_time(std::string&)’:
LTE_fdd_enb_interface.cc:1580:27: error: ‘gettimeofday’ was not declared in this scope
make[2]: [LTE_fdd_enodeb/CMakeFiles/LTE_fdd_enodeb.dir/src/LTE_fdd_enb_interface.cc.o] Error 1
make[1]: [LTE_fdd_enodeb/CMakeFiles/LTE_fdd_enodeb.dir/all] Error 2
make: *** [all] Error 2
Please give a more detailed instruction to make it compile and install
thanks
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello all,
I tried to compile OpenLTE but in case Gnuradio is compiled and installed through pybombs into Home/target, to avoid the following error:
...
checking for module 'gnuradio-osmosdr'
-- found gnuradio-osmosdr, version v0.1.4-67-gac15e789
-- Could NOT find GNURADIO_OSMOSDR (missing: GNURADIO_OSMOSDR_INCLUDE_DIRS)
...
CMake Error at CMakeLists.txt:103 (message):
GNURadio Osmosdr required to compile openLTE
(http://sdr.osmocom.org/trac/wiki/GrOsmoSDR)
....
-- Configuring incomplete, errors occurred!
See also "/home/and/openlte_v00-19-02/build/CMakeFiles/CMakeOutput.log".
All the other libraries were found
I copied all libraries and configuration files into usr/local and building worked!
Last edit: Andrea_G1977 2016-02-20
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello,
In order to make enodeB work with bladeRF I replaced the three files (
bladerf_code_v3.zip) into the original program openLTE folders and compiled and installed,
but I get the following errors:
LTE_fdd_enb_interface.cc:306:27: error: ‘va_start’ was not declared in this scope
LTE_fdd_enb_interface.cc: In member function ‘void LTE_fdd_enb_interface::send_debug_msg(LTE_FDD_ENB_DEBUG_TYPE_ENUM, LTE_FDD_ENB_DEBUG_LEVEL_ENUM, std::string, int32, std::string, ...)’:
LTE_fdd_enb_interface.cc:368:27: error: ‘va_start’ was not declared in this scope
LTE_fdd_enb_interface.cc: In member function ‘void LTE_fdd_enb_interface::send_debug_msg(LTE_FDD_ENB_DEBUG_TYPE_ENUM, LTE_FDD_ENB_DEBUG_LEVEL_ENUM, std::string, int32, LIBLTE_BIT_MSG_STRUCT, std::string, ...)’:
LTE_fdd_enb_interface.cc:411:27: error: ‘va_start’ was not declared in this scope
LTE_fdd_enb_interface.cc: In member function ‘void LTE_fdd_enb_interface::send_debug_msg(LTE_FDD_ENB_DEBUG_TYPE_ENUM, LTE_FDD_ENB_DEBUG_LEVEL_ENUM, std::string, int32, LIBLTE_BYTE_MSG_STRUCT, std::string, ...)’:
LTE_fdd_enb_interface.cc:484:27: error: ‘va_start’ was not declared in this scope
LTE_fdd_enb_interface.cc: In member function ‘void LTE_fdd_enb_interface::send_lte_pcap_msg(LTE_FDD_ENB_PCAP_DIRECTION_ENUM, uint32, uint32, uint8, uint32)’:
LTE_fdd_enb_interface.cc:581:26: error: aggregate ‘LTE_fdd_enb_interface::send_lte_pcap_msg(LTE_FDD_ENB_PCAP_DIRECTION_ENUM, uint32, uint32, uint8, uint32)::timezone time_zone’ has incomplete type and cannot be defined
LTE_fdd_enb_interface.cc:596:39: error: ‘gettimeofday’ was not declared in this scope
LTE_fdd_enb_interface.cc: In member function ‘void LTE_fdd_enb_interface::send_ip_pcap_msg(uint8, uint32)’:
LTE_fdd_enb_interface.cc:677:26: error: aggregate ‘LTE_fdd_enb_interface::send_ip_pcap_msg(uint8, uint32)::timezone time_zone’ has incomplete type and cannot be defined
LTE_fdd_enb_interface.cc:686:39: error: ‘gettimeofday’ was not declared in this scope
LTE_fdd_enb_interface.cc: In member function ‘void LTE_fdd_enb_interface::get_formatted_time(std::string&)’:
LTE_fdd_enb_interface.cc:1580:27: error: ‘gettimeofday’ was not declared in this scope
make[2]: [LTE_fdd_enodeb/CMakeFiles/LTE_fdd_enodeb.dir/src/LTE_fdd_enb_interface.cc.o] Error 1
make[1]: [LTE_fdd_enodeb/CMakeFiles/LTE_fdd_enodeb.dir/all] Error 2
make: *** [all] Error 2
thanks
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
OK I'm somewhat embarassed by the state of this code at the moment, but I thought I'd share it as it is working - with a few stability issues I'm keen to sort out shortly.
Technically you just need LTE_fdd_enb_radio_bladerf.cc and LTE_fdd_enb_radio.h (modified). However I have also added some Xperf markets to LTE_fdd_enb_phy.cc
Some notes: You may need to tweak the power. For the bladerf, on my workbench, I typically let the bladerf startup with the default RXVGA/TXVGA settings, and I modify LTE_fdd_enb_cnfg_db.c to set SIB1 p_max to -15 dBm. I find that works reasonably for the phone within about 5 metres of the bench.
I will work on the power control later on. Also need to cleanup the printf noise.
At the moment I am getting a lot of problems from the MAC layer where a skip occurs and MAC is not catching up. Looking into this at the moment.
The main problem I am having is typically during the RRC connection establishment I get a lost buffer in the radio. So that's an issue in its own right, which I need to look at. But it drives the MAC layer into a permanent altered semi-stable (but not useful) state. This is what I am seeing (every time ):
So my radio layer loses a buffer (at rx=1416, and winds forwards the clock 3 subframes to 1419. (1 subframe + 2). Fair enough.
Then, the radio layer will notice the (TX schedule, which is RX+3) on the MAC layer at 1419+3=1422 is 10 subframes behind (1412), because it has skipped 3 subframes ahead and the MAC layer hasn't updated the schedule yet. Fair enough as well. This seems to be by design.
PDSCH current_tti from MAC (1412) does not match PHY (1422)
So what happens? late_subfr goes true in process_dl, and later on in process_dl after incrementing dl_current_tti from 1422 to 1423, it will send message to MAC with rts.late = true, rts.dl_current_tti=1425 (and last_rts_current_tti = 1423).
And that should be the end of it. My theory is ths:
MAC doesn't immediately jump to that new position. It attempts to catch up at "double" the normal pace. Now, at the time of the skip we are receiving subframe 1416. Which means process_ul last ran for subframe 1415 and process_dl for subframe 1418. Which would have requested MAC schedule for (1415+1+2=1418) and (1418+1+2=1421) respectively. So the schedules are present for 1418/1421 DL/UL.
So when late MAC runs, it submits TX schedule for 1422 and 1423 at the same time. TX of course is at 1423, and hence we see proof that dl_current_tti = 1423 and the first submission is 1422.
error phy LTE_fdd_enb_phy.cc 416 Late DL subframe from MAC:1422, PHY is currently on 1423
is not true, since phy_sched->dl_sched.current_tti == dl_current_tti, causing the code to fall into the bottom condition, and set late_subfr = false, so it will never catch up, even when it loops around after 10.23 seconds. Why is this specific to my implementation however? Is anyone noticing this with USRP?
02/28/2016 22:04:35.488950 info radio LTE_fdd_enb_radio.cc 1484 RX modifying recv_size to sync 7666196 7664640
02/28/2016 22:04:35.489045 info radio LTE_fdd_enb_radio.cc 1468 RX synced 7664640 7664640
02/28/2016 22:05:48.572894 info user LTE_fdd_enb_user_mgr.cc 163 C-RNTI=61 assigned
02/28/2016 22:05:48.572980 info mac LTE_fdd_enb_mac.cc 867 RAR scheduled 1
02/28/2016 22:05:48.573353 info mac LTE_fdd_enb_mac.cc 995 RAR sent 1404 1411 1408 1414 410140640C003D
02/28/2016 22:05:48.574210 info phy LTE_fdd_enb_phy.cc 433 Received PDSCH schedule from MAC CURRENT_TTI:MAC=1408,PHY=1406 N_dl_allocs=1 N_ul_allocs=0
02/28/2016 22:05:48.583021 info phy LTE_fdd_enb_phy.cc 461 Received PUSCH schedule from MAC CURRENT_TTI:MAC=1414,PHY=1412 N_ul_decodes=1
02/28/2016 22:05:48.586729 info mac LTE_fdd_enb_mac.cc 439 PUSCH decode for RNTI=61 CURRENT_TTI=1414 0054FA2A944A86
02/28/2016 22:05:48.586821 info mac LTE_fdd_enb_mac.cc 611 Handling ULSCH SDU for RNTI=61, LCID=0 54FA2A944A86
02/28/2016 22:05:48.586952 info rlc LTE_fdd_enb_rlc.cc 269 Received PDU for RNTI=61 and RB=SRB0 54FA2A944A86
02/28/2016 22:05:48.587171 info pdcp LTE_fdd_enb_pdcp.cc 265 Received PDU for RNTI=61 and RB=SRB0 54FA2A944A86
02/28/2016 22:05:48.587340 info rrc LTE_fdd_enb_rrc.cc 239 Received PDU for RNTI=61 and RB=SRB0 54FA2A944A86
02/28/2016 22:05:48.587431 info rrc LTE_fdd_enb_rrc.cc 563 Received RRC Connection Request for RNTI=61, RB=SRB0
02/28/2016 22:05:48.587465 info rb LTE_fdd_enb_rb.cc 390 SRB0 RRC procedure moving from IDLE to RRC CON REQ for RNTI=61
02/28/2016 22:05:48.587505 info rb LTE_fdd_enb_rb.cc 409 SRB0 RRC state moving from IDLE to SRB1 SETUP for RNTI=61
02/28/2016 22:05:48.587539 info rrc LTE_fdd_enb_rrc.cc 1021 Sending RRC Connection Setup for RNTI=61, RB=SRB0 60121B24098
02/28/2016 22:05:48.587662 info rb LTE_fdd_enb_rb.cc 390 SRB1 RRC procedure moving from IDLE to RRC CON REQ for RNTI=61
02/28/2016 22:05:48.587709 info rb LTE_fdd_enb_rb.cc 409 SRB1 RRC state moving from IDLE to WAIT FOR CON SETUP COMPLETE for RNTI=61
02/28/2016 22:05:48.587739 info pdcp LTE_fdd_enb_pdcp.cc 365 Received SDU for RNTI=61 and RB=SRB0 60121B24098
02/28/2016 22:05:48.587774 info pdcp LTE_fdd_enb_pdcp.cc 386 Sending PDU for RNTI=61 and RB=SRB0 60121B240980
02/28/2016 22:05:48.587964 info rlc LTE_fdd_enb_rlc.cc 584 Received SDU for RNTI=61 and RB=SRB0 60121B240980
02/28/2016 22:05:48.587996 info rlc LTE_fdd_enb_rlc.cc 632 Sending TMD PDU for RNTI=61, RB=SRB0 60121B240980
02/28/2016 22:05:48.588162 error radio LTE_fdd_enb_radio.cc 1553 RX packet size issue 1812 1920 569059200 569059200
02/28/2016 22:05:48.588207 info mac LTE_fdd_enb_mac.cc 510 Received SDU for RNTI=61 and RB=SRB0 60121B240980
02/28/2016 22:05:48.588241 error radio LTE_fdd_enb_radio.cc 1576 RX overrun 569069140 569061012 oldrxtti=1416 skip=3
02/28/2016 22:05:48.588274 info mac LTE_fdd_enb_mac.cc 574 PDU scheduled for RNTI=61, DL_QUEUE_SIZE=1, tti=1426
02/28/2016 22:05:48.589188 info radio LTE_fdd_enb_radio.cc 1484 RX modifying recv_size to sync 569080660 569080320
02/28/2016 22:05:48.589451 info radio LTE_fdd_enb_radio.cc 1468 RX synced 569080320 569080320
02/28/2016 22:05:48.590585 error phy LTE_fdd_enb_phy.cc 698 PDSCH current_tti from MAC (1412) does not match PHY (1422)
02/28/2016 22:05:48.590964 error phy LTE_fdd_enb_phy.cc 416 Late DL subframe from MAC:1422, PHY is currently on 1423
02/28/2016 22:05:48.590997 error phy LTE_fdd_enb_phy.cc 451 Late UL subframe from MAC:1419, PHY is currently on 1420
02/28/2016 22:05:48.591077 warning msgq LTE_fdd_enb_msgq.cc 227 mac_to_phy circular buffer empty on receive
02/28/2016 22:05:48.592723 error phy LTE_fdd_enb_phy.cc 698 PDSCH current_tti from MAC (1414) does not match PHY (1424)
.... snip 10 seconds later
02/28/2016 22:05:58.816407 error phy LTE_fdd_enb_phy.cc 698 PDSCH current_tti from MAC (1418) does not match PHY (1408)
02/28/2016 22:05:58.816790 error phy LTE_fdd_enb_phy.cc 416 Late DL subframe from MAC:1408, PHY is currently on 1409
02/28/2016 22:05:58.816817 error phy LTE_fdd_enb_phy.cc 451 Late UL subframe from MAC:1405, PHY is currently on 1406
02/28/2016 22:05:58.816877 warning msgq LTE_fdd_enb_msgq.cc 227 mac_to_phy circular buffer empty on receive
02/28/2016 22:05:58.818587 error phy LTE_fdd_enb_phy.cc 698 PDSCH current_tti from MAC (1420) does not match PHY (1410)
02/28/2016 22:05:58.818954 error phy LTE_fdd_enb_phy.cc 416 Late DL subframe from MAC:1410, PHY is currently on 1411
02/28/2016 22:05:58.818981 error phy LTE_fdd_enb_phy.cc 451 Late UL subframe from MAC:1407, PHY is currently on 1408
02/28/2016 22:05:58.819034 warning msgq LTE_fdd_enb_msgq.cc 227 mac_to_phy circular buffer empty on receive
... now we switch to odds at the cycle repeats...
02/28/2016 22:05:58.821432 error phy LTE_fdd_enb_phy.cc 698 PDSCH current_tti from MAC (1403) does not match PHY (1413)
02/28/2016 22:05:58.821864 error phy LTE_fdd_enb_phy.cc 416 Late DL subframe from MAC:1412, PHY is currently on 1414
02/28/2016 22:05:58.821910 error phy LTE_fdd_enb_phy.cc 451 Late UL subframe from MAC:1409, PHY is currently on 1411
02/28/2016 22:05:58.821988 error phy LTE_fdd_enb_phy.cc 416 Late DL subframe from MAC:1413, PHY is currently on 1414
02/28/2016 22:05:58.822024 error phy LTE_fdd_enb_phy.cc 451 Late UL subframe from MAC:1410, PHY is currently on 1411
02/28/2016 22:05:58.822043 warning msgq LTE_fdd_enb_msgq.cc 227 mac_to_phy circular buffer empty on receive
02/28/2016 22:05:58.822833 error phy LTE_fdd_enb_phy.cc 416 Late DL subframe from MAC:1414, PHY is currently on 1415
02/28/2016 22:05:58.822869 error phy LTE_fdd_enb_phy.cc 451 Late UL subframe from MAC:1411, PHY is currently on 1412
02/28/2016 22:05:58.822956 warning msgq LTE_fdd_enb_msgq.cc 227 mac_to_phy circular buffer empty on receive
02/28/2016 22:05:58.825407 error phy LTE_fdd_enb_phy.cc 698 PDSCH current_tti from MAC (1407) does not match PHY (1417)
02/28/2016 22:05:58.825795 error phy LTE_fdd_enb_phy.cc 416 Late DL subframe from MAC:1416, PHY is currently on 1418
02/28/2016 22:05:58.825867 error phy LTE_fdd_enb_phy.cc 451 Late UL subframe from MAC:1413, PHY is currently on 1415
02/28/2016 22:05:58.825934 error phy LTE_fdd_enb_phy.cc 416 Late DL subframe from MAC:1417, PHY is currently on 1418
02/28/2016 22:05:58.825958 error phy LTE_fdd_enb_phy.cc 451 Late UL subframe from MAC:1414, PHY is currently on 1415
02/28/2016 22:05:58.825987 warning msgq LTE_fdd_enb_msgq.cc 227 mac_to_phy circular buffer empty on receive
02/28/2016 22:05:58.826797 error phy LTE_fdd_enb_phy.cc 416 Late DL subframe from MAC:1418, PHY is currently on 1419
02/28/2016 22:05:58.826872 error phy LTE_fdd_enb_phy.cc 451 Late UL subframe from MAC:1415, PHY is currently on 1416
02/28/2016 22:05:58.826944 warning msgq LTE_fdd_enb_msgq.cc 227 mac_to_phy circular buffer empty on receive
02/28/2016 22:05:58.829378 error phy LTE_fdd_enb_phy.cc 698 PDSCH current_tti from MAC (1411) does not match PHY (1421)
02/28/2016 22:05:58.829767 error phy LTE_fdd_enb_phy.cc 416 Late DL subframe from MAC:1420, PHY is currently on 1422
02/28/2016 22:05:58.829815 error phy LTE_fdd_enb_phy.cc 451 Late UL subframe from MAC:1417, PHY is currently on 1419
02/28/2016 22:05:58.829879 error phy LTE_fdd_enb_phy.cc 416 Late DL subframe from MAC:1421, PHY is currently on 1422
02/28/2016 22:05:58.829902 error phy LTE_fdd_enb_phy.cc 451 Late UL subframe from MAC:1418, PHY is currently on 1419
02/28/2016 22:05:58.829919 warning msgq LTE_fdd_enb_msgq.cc 227 mac_to_phy circular buffer empty on receive
02/28/2016 22:05:58.830429 error phy LTE_fdd_enb_phy.cc 698 PDSCH current_tti from MAC (1412) does not match PHY (1422)
02/28/2016 22:05:58.830832 error phy LTE_fdd_enb_phy.cc 416 Late DL subframe from MAC:1422, PHY is currently on 1423
02/28/2016 22:05:58.830856 error phy LTE_fdd_enb_phy.cc 451 Late UL subframe from MAC:1419, PHY is currently on 1420
Last edit: Jeremy Quirke 2016-02-28
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi Ben,
Please find patch for 19.04 with my changes that enables preliminary bladeRF support. This could be base for further enhancements.
Currently it works with 10 MHz bandwidth, and N_ant=1.
The code needs to be linked with "-lbladeRF".
Are there any plans to be able to use the BladeRF as a eNodeB?
Thanks in advance
At this point, I am focusing on adding to the eNodeB capabilities on the
B2X0 platforms. The last time I had checked (and this may have changed)
BladeRF did not have a time-stamping functionality. This functionality is
absolutely critical for an eNodeB application.
Ben
On Thu, Feb 20, 2014 at 2:22 PM, TUAAM bnt2025@users.sf.net wrote:
The people at Nuand have just released a Timed FPGA image under the dev-openbts branch on github, if this helps you. Fantastic project by the way, really following this closely.
Thanks for the update on BladeRF. I will take a look at the latest code to
see if support can be added for openLTE.
Thanks,
Ben
On Mon, Feb 24, 2014 at 3:34 PM, TUAAM bnt2025@users.sf.net wrote:
Hi, sorry for the same question, but OpenLTE has already support for BladeRF?
I´m in a academic project and I would like use OpenLTE as eNodeB.
Thanks...
Carlos,
There currently is support for BladeRF in LTE_fdd_dl_scan and
LTE_file_recorder but not in LTE_fdd_enodeb. I have been busy adding upper
layer functionality to LTE_fdd_enodeb and have not had time to add BladeRF
support.
Ben
On Wed, Sep 3, 2014 at 10:57 AM, Carlos Hanze Sanchez <hanzeman@users.sf.net
Hi,
Is there enodeb usage of bladerf? Did you find any solution?
Many thanks in advance.
Hakan
Hakan,
There is much interest in this, but I have not found time to add the
necessary support. I will add it to the official TODO list.
Thanks,
Ben
On Sat, Apr 25, 2015 at 10:13 AM, HAKAN MURAT KARACA hmkaraca@users.sf.net
wrote:
I have been playing with bladeRF on LTE_fdd_eNodeB in my spare time. Managed to get a rudimentary thing together, still not stable.
Doesn't help that I'm using Cygwin. I found the boost mutex implementations under Cygwin perform very poorly so I've had to Win32-ize the openLTE msgq stuff.
Lots of stuttering and skipping, have eliminated most, but the code is littered with Microsoft ETW crap and rdpmc's to try and track down some of the perf problems.
Hopefully I'll have something to share eventually...
~~~~~
Radio Parameters:
available_radios: (read-only)
0: no_rf
1: 553f3419be3964c3de7b79f15007388b
selected_radio_name (read-only) = 553f3419be3964c3de7b79f1500738
8b
~~~~~~
Last edit: Jeremy Quirke 2015-07-25
Jeremy,
I'd be interested in working with the OpenLTE with BladeRF radio too. I have the bladeRF radio handy, and am hoping you can share what changes you had to do to get enodeB to use the bladeRF radio?
Thanks.
Hello all
I'm looking forward to test openLTE on my bladeRF,
meanwhile I ' m testing this:
https://github.com/srsLTE/srsLTE
if anyone is already testing we can share the experience
thanks
Hello all,
I have been trying to run OpenLTE with BladeRF too. I'm not experienced with BladeRF, but achieve some partial success: UE could find my network (on proper earfcn it could see my plmn and bandwidth), but cannot connect. I can't see any error/debug messages from OpenLTE, so I don't know what happens with RX.
I'm sharing my prliminary solution (there are some debugs/printfs and so on). Maybe someone could improve it or suggest what I'm doing wrong.
There are few constraints with this solution.
1) It works with bandwidth set to 10 MHz (I think this is because of bladerf_sync_config function: "The size of the underlying stream buffers, in samples. This value must be a multiple of 1024. Note that samples are only transferred when a buffer of this size is filled." When bandwidth=10 MHz than buffer consist of 15360 samples (15 * 1024), otherwise it is not aligned to 1024.)
2) TX timestamp and RX timestamp, as far as I know, are independent. I don't know how to find its difference ina simple way. I think that RX-TX offset may be major issue why no data from UE is visible.
I test this with default System Parameters except earfcn which was one from bands 20, 5 and 7:
Regards,
Edit:
There were simple bug when RX buffer was copied. I fix it and now there are following debug logs:
It repeats up to C-RNTI=109. I attach full log
Last edit: przemobe 2016-02-15
I have the same problem with my implementation. The problem is actually worse with the metadata enabled, because there is a further 16/2048 overhead (16 byte meta header per 512 samples) that makes the alignment impossible. The only way around this is to wait for the next TX frame to be ready so it can start transmitting to clear out the last buffer. This adds as much as 1 ms to the latency budget.
I partially worked against this by setting my buffer size to be approximately 1/4 of the 1ms sample rate so that only the last buffer is blocked and hopefully new frame is ready for TX, this requies at least 0.25ms of latency head room.
Well done anyway
I will try
thanks
I made an experiment and assume tx-rx timestamp difference to 0. I also disable phy and mac debugs.
And it works :-). It doesn't works smoothly but works. Attach procedure has been completed and UE goes to RRC_CONNECTED state.
I'm attaching debug log and working code.
Regards,
Hello,
Compiling doesn't work after replacing the files in src and hdr provided in "bladerf_code_v3.zip":
I get the following errors:
LTE_fdd_enb_interface.cc:306:27: error: ‘va_start’ was not declared in this scope
LTE_fdd_enb_interface.cc: In member function ‘void LTE_fdd_enb_interface::send_debug_msg(LTE_FDD_ENB_DEBUG_TYPE_ENUM, LTE_FDD_ENB_DEBUG_LEVEL_ENUM, std::string, int32, std::string, ...)’:
LTE_fdd_enb_interface.cc:368:27: error: ‘va_start’ was not declared in this scope
LTE_fdd_enb_interface.cc: In member function ‘void LTE_fdd_enb_interface::send_debug_msg(LTE_FDD_ENB_DEBUG_TYPE_ENUM, LTE_FDD_ENB_DEBUG_LEVEL_ENUM, std::string, int32, LIBLTE_BIT_MSG_STRUCT, std::string, ...)’:
LTE_fdd_enb_interface.cc:411:27: error: ‘va_start’ was not declared in this scope
LTE_fdd_enb_interface.cc: In member function ‘void LTE_fdd_enb_interface::send_debug_msg(LTE_FDD_ENB_DEBUG_TYPE_ENUM, LTE_FDD_ENB_DEBUG_LEVEL_ENUM, std::string, int32, LIBLTE_BYTE_MSG_STRUCT, std::string, ...)’:
LTE_fdd_enb_interface.cc:484:27: error: ‘va_start’ was not declared in this scope
LTE_fdd_enb_interface.cc: In member function ‘void LTE_fdd_enb_interface::send_lte_pcap_msg(LTE_FDD_ENB_PCAP_DIRECTION_ENUM, uint32, uint32, uint8, uint32)’:
LTE_fdd_enb_interface.cc:581:26: error: aggregate ‘LTE_fdd_enb_interface::send_lte_pcap_msg(LTE_FDD_ENB_PCAP_DIRECTION_ENUM, uint32, uint32, uint8, uint32)::timezone time_zone’ has incomplete type and cannot be defined
LTE_fdd_enb_interface.cc:596:39: error: ‘gettimeofday’ was not declared in this scope
LTE_fdd_enb_interface.cc: In member function ‘void LTE_fdd_enb_interface::send_ip_pcap_msg(uint8, uint32)’:
LTE_fdd_enb_interface.cc:677:26: error: aggregate ‘LTE_fdd_enb_interface::send_ip_pcap_msg(uint8, uint32)::timezone time_zone’ has incomplete type and cannot be defined
LTE_fdd_enb_interface.cc:686:39: error: ‘gettimeofday’ was not declared in this scope
LTE_fdd_enb_interface.cc: In member function ‘void LTE_fdd_enb_interface::get_formatted_time(std::string&)’:
LTE_fdd_enb_interface.cc:1580:27: error: ‘gettimeofday’ was not declared in this scope
make[2]: [LTE_fdd_enodeb/CMakeFiles/LTE_fdd_enodeb.dir/src/LTE_fdd_enb_interface.cc.o] Error 1
make[1]: [LTE_fdd_enodeb/CMakeFiles/LTE_fdd_enodeb.dir/all] Error 2
make: *** [all] Error 2
Please give a more detailed instruction to make it compile and install
thanks
Hello all,
I tried to compile OpenLTE but in case Gnuradio is compiled and installed through pybombs into Home/target, to avoid the following error:
...
checking for module 'gnuradio-osmosdr'
-- found gnuradio-osmosdr, version v0.1.4-67-gac15e789
-- Could NOT find GNURADIO_OSMOSDR (missing: GNURADIO_OSMOSDR_INCLUDE_DIRS)
...
CMake Error at CMakeLists.txt:103 (message):
GNURadio Osmosdr required to compile openLTE
(http://sdr.osmocom.org/trac/wiki/GrOsmoSDR)
....
-- Configuring incomplete, errors occurred!
See also "/home/and/openlte_v00-19-02/build/CMakeFiles/CMakeOutput.log".
All the other libraries were found
I copied all libraries and configuration files into usr/local and building worked!
Last edit: Andrea_G1977 2016-02-20
Hello,
In order to make enodeB work with bladeRF I replaced the three files (
bladerf_code_v3.zip) into the original program openLTE folders and compiled and installed,
but I get the following errors:
LTE_fdd_enb_interface.cc:306:27: error: ‘va_start’ was not declared in this scope
LTE_fdd_enb_interface.cc: In member function ‘void LTE_fdd_enb_interface::send_debug_msg(LTE_FDD_ENB_DEBUG_TYPE_ENUM, LTE_FDD_ENB_DEBUG_LEVEL_ENUM, std::string, int32, std::string, ...)’:
LTE_fdd_enb_interface.cc:368:27: error: ‘va_start’ was not declared in this scope
LTE_fdd_enb_interface.cc: In member function ‘void LTE_fdd_enb_interface::send_debug_msg(LTE_FDD_ENB_DEBUG_TYPE_ENUM, LTE_FDD_ENB_DEBUG_LEVEL_ENUM, std::string, int32, LIBLTE_BIT_MSG_STRUCT, std::string, ...)’:
LTE_fdd_enb_interface.cc:411:27: error: ‘va_start’ was not declared in this scope
LTE_fdd_enb_interface.cc: In member function ‘void LTE_fdd_enb_interface::send_debug_msg(LTE_FDD_ENB_DEBUG_TYPE_ENUM, LTE_FDD_ENB_DEBUG_LEVEL_ENUM, std::string, int32, LIBLTE_BYTE_MSG_STRUCT, std::string, ...)’:
LTE_fdd_enb_interface.cc:484:27: error: ‘va_start’ was not declared in this scope
LTE_fdd_enb_interface.cc: In member function ‘void LTE_fdd_enb_interface::send_lte_pcap_msg(LTE_FDD_ENB_PCAP_DIRECTION_ENUM, uint32, uint32, uint8, uint32)’:
LTE_fdd_enb_interface.cc:581:26: error: aggregate ‘LTE_fdd_enb_interface::send_lte_pcap_msg(LTE_FDD_ENB_PCAP_DIRECTION_ENUM, uint32, uint32, uint8, uint32)::timezone time_zone’ has incomplete type and cannot be defined
LTE_fdd_enb_interface.cc:596:39: error: ‘gettimeofday’ was not declared in this scope
LTE_fdd_enb_interface.cc: In member function ‘void LTE_fdd_enb_interface::send_ip_pcap_msg(uint8, uint32)’:
LTE_fdd_enb_interface.cc:677:26: error: aggregate ‘LTE_fdd_enb_interface::send_ip_pcap_msg(uint8, uint32)::timezone time_zone’ has incomplete type and cannot be defined
LTE_fdd_enb_interface.cc:686:39: error: ‘gettimeofday’ was not declared in this scope
LTE_fdd_enb_interface.cc: In member function ‘void LTE_fdd_enb_interface::get_formatted_time(std::string&)’:
LTE_fdd_enb_interface.cc:1580:27: error: ‘gettimeofday’ was not declared in this scope
make[2]: [LTE_fdd_enodeb/CMakeFiles/LTE_fdd_enodeb.dir/src/LTE_fdd_enb_interface.cc.o] Error 1
make[1]: [LTE_fdd_enodeb/CMakeFiles/LTE_fdd_enodeb.dir/all] Error 2
make: *** [all] Error 2
thanks
OK I'm somewhat embarassed by the state of this code at the moment, but I thought I'd share it as it is working - with a few stability issues I'm keen to sort out shortly.
Technically you just need LTE_fdd_enb_radio_bladerf.cc and LTE_fdd_enb_radio.h (modified). However I have also added some Xperf markets to LTE_fdd_enb_phy.cc
Some notes: You may need to tweak the power. For the bladerf, on my workbench, I typically let the bladerf startup with the default RXVGA/TXVGA settings, and I modify LTE_fdd_enb_cnfg_db.c to set SIB1 p_max to -15 dBm. I find that works reasonably for the phone within about 5 metres of the bench.
I will work on the power control later on. Also need to cleanup the printf noise.
At the moment I am getting a lot of problems from the MAC layer where a skip occurs and MAC is not catching up. Looking into this at the moment.
Last edit: Jeremy Quirke 2016-02-28
Alright, so this sort of works. Sort of.
The main problem I am having is typically during the RRC connection establishment I get a lost buffer in the radio. So that's an issue in its own right, which I need to look at. But it drives the MAC layer into a permanent altered semi-stable (but not useful) state. This is what I am seeing (every time ):
So my radio layer loses a buffer (at rx=1416, and winds forwards the clock 3 subframes to 1419. (1 subframe + 2). Fair enough.
02/28/2016 22:05:48.588241 error radio LTE_fdd_enb_radio.cc 1576 RX overrun 569069140 569061012 oldrxtti=1416 skip=3
Then, the radio layer will notice the (TX schedule, which is RX+3) on the MAC layer at 1419+3=1422 is 10 subframes behind (1412), because it has skipped 3 subframes ahead and the MAC layer hasn't updated the schedule yet. Fair enough as well. This seems to be by design.
PDSCH current_tti from MAC (1412) does not match PHY (1422)
So what happens? late_subfr goes true in process_dl, and later on in process_dl after incrementing dl_current_tti from 1422 to 1423, it will send message to MAC with rts.late = true, rts.dl_current_tti=1425 (and last_rts_current_tti = 1423).
And that should be the end of it. My theory is ths:
MAC doesn't immediately jump to that new position. It attempts to catch up at "double" the normal pace. Now, at the time of the skip we are receiving subframe 1416. Which means process_ul last ran for subframe 1415 and process_dl for subframe 1418. Which would have requested MAC schedule for (1415+1+2=1418) and (1418+1+2=1421) respectively. So the schedules are present for 1418/1421 DL/UL.
So when late MAC runs, it submits TX schedule for 1422 and 1423 at the same time. TX of course is at 1423, and hence we see proof that dl_current_tti = 1423 and the first submission is 1422.
error phy LTE_fdd_enb_phy.cc 416 Late DL subframe from MAC:1422, PHY is currently on 1423
But the second submission, the condition
is not true, since phy_sched->dl_sched.current_tti == dl_current_tti, causing the code to fall into the bottom condition, and set late_subfr = false, so it will never catch up, even when it loops around after 10.23 seconds. Why is this specific to my implementation however? Is anyone noticing this with USRP?
Last edit: Jeremy Quirke 2016-02-28
Hello,
Compiling is ok now but "sudo make" doesn't find "evntprov.h",
I also advise to change include <libbladerf> with include <libbladeRF>
I'm a simple user and you are a developer and I can't pretend to test it now
I will wait the right working code when stable
good job
thanks
Thanks for all the work here! Are the patches provided ready to be merged into a release? If so, I'll work on getting them into the next one.
Hi Ben,
I could provide patch for 19.03 with my changes after this weekend.
Hi Ben,
Please find patch for 19.04 with my changes that enables preliminary bladeRF support. This could be base for further enhancements.
Currently it works with 10 MHz bandwidth, and N_ant=1.
The code needs to be linked with "-lbladeRF".
Best regards
Hi
please how do I link to "-lbladeRF"?
After "sudo make" I get:
[100%] building...
...
Linking CXX executable LTE_fdd_enodeb
CMakeFiles/LTE_fdd_enodeb.dir/src/LTE_fdd_enb_radio.cc.o: In function
LTE_fdd_enb_radio::stop()': LTE_fdd_enb_radio.cc:(.text+0x160): undefined reference to
bladerf_close'CMakeFiles/LTE_fdd_enodeb.dir/src/LTE_fdd_enb_radio.cc.o: In function
LTE_fdd_enb_radio::send(LTE_FDD_ENB_RADIO_TX_BUF_STRUCT*)': LTE_fdd_enb_radio.cc:(.text+0xd02): undefined reference to
bladerf_sync_tx'LTE_fdd_enb_radio.cc:(.text+0xf06): undefined reference to
bladerf_strerror' LTE_fdd_enb_radio.cc:(.text+0xf30): undefined reference to
bladerf_strerror'CMakeFiles/LTE_fdd_enodeb.dir/src/LTE_fdd_enb_radio.cc.o: In function
LTE_fdd_enb_radio::~LTE_fdd_enb_radio()': LTE_fdd_enb_radio.cc:(.text+0xf96): undefined reference to
bladerf_free_device_list'LTE_fdd_enb_radio.cc:(.text+0x13ed): undefined reference to
bladerf_free_device_list' CMakeFiles/LTE_fdd_enodeb.dir/src/LTE_fdd_enb_radio.cc.o: In function
LTE_fdd_enb_radio::start()':LTE_fdd_enb_radio.cc:(.text+0x250d): undefined reference to
bladerf_open_with_devinfo' LTE_fdd_enb_radio.cc:(.text+0x251c): undefined reference to
bladerf_strerror'LTE_fdd_enb_radio.cc:(.text+0x2964): undefined reference to
bladerf_set_frequency' LTE_fdd_enb_radio.cc:(.text+0x2973): undefined reference to
bladerf_strerror'LTE_fdd_enb_radio.cc:(.text+0x2a09): undefined reference to
bladerf_close' LTE_fdd_enb_radio.cc:(.text+0x2b4b): undefined reference to
bladerf_set_sample_rate'LTE_fdd_enb_radio.cc:(.text+0x2b5a): undefined reference to
bladerf_strerror' LTE_fdd_enb_radio.cc:(.text+0x30c8): undefined reference to
bladerf_set_bandwidth'LTE_fdd_enb_radio.cc:(.text+0x30d7): undefined reference to
bladerf_strerror' LTE_fdd_enb_radio.cc:(.text+0x330c): undefined reference to
bladerf_set_lna_gain'LTE_fdd_enb_radio.cc:(.text+0x331b): undefined reference to
bladerf_strerror' LTE_fdd_enb_radio.cc:(.text+0x33ab): undefined reference to
bladerf_set_rxvga1'LTE_fdd_enb_radio.cc:(.text+0x33ba): undefined reference to
bladerf_strerror' LTE_fdd_enb_radio.cc:(.text+0x34b1): undefined reference to
bladerf_set_rxvga2'LTE_fdd_enb_radio.cc:(.text+0x34c0): undefined reference to
bladerf_strerror' LTE_fdd_enb_radio.cc:(.text+0x355f): undefined reference to
bladerf_set_frequency'LTE_fdd_enb_radio.cc:(.text+0x356e): undefined reference to
bladerf_strerror' LTE_fdd_enb_radio.cc:(.text+0x3676): undefined reference to
bladerf_set_sample_rate'LTE_fdd_enb_radio.cc:(.text+0x3685): undefined reference to
bladerf_strerror' LTE_fdd_enb_radio.cc:(.text+0x372d): undefined reference to
bladerf_set_bandwidth'LTE_fdd_enb_radio.cc:(.text+0x373c): undefined reference to
bladerf_strerror' LTE_fdd_enb_radio.cc:(.text+0x3836): undefined reference to
bladerf_set_txvga1'LTE_fdd_enb_radio.cc:(.text+0x3845): undefined reference to
bladerf_strerror' LTE_fdd_enb_radio.cc:(.text+0x38d5): undefined reference to
bladerf_set_txvga2'LTE_fdd_enb_radio.cc:(.text+0x391d): undefined reference to
bladerf_sync_config' LTE_fdd_enb_radio.cc:(.text+0x392c): undefined reference to
bladerf_strerror'LTE_fdd_enb_radio.cc:(.text+0x3a3d): undefined reference to
bladerf_sync_config' LTE_fdd_enb_radio.cc:(.text+0x3a4c): undefined reference to
bladerf_strerror'LTE_fdd_enb_radio.cc:(.text+0x3ad2): undefined reference to
bladerf_strerror' LTE_fdd_enb_radio.cc:(.text+0x3bd4): undefined reference to
bladerf_enable_module'LTE_fdd_enb_radio.cc:(.text+0x3be3): undefined reference to
bladerf_strerror' LTE_fdd_enb_radio.cc:(.text+0x3c75): undefined reference to
bladerf_enable_module'LTE_fdd_enb_radio.cc:(.text+0x3c84): undefined reference to
bladerf_strerror' LTE_fdd_enb_radio.cc:(.text+0x3d80): undefined reference to
bladerf_device_speed'CMakeFiles/LTE_fdd_enodeb.dir/src/LTE_fdd_enb_radio.cc.o: In function
LTE_fdd_enb_radio::get_available_radios()': LTE_fdd_enb_radio.cc:(.text+0x3f8d): undefined reference to
bladerf_free_device_list'LTE_fdd_enb_radio.cc:(.text+0x3faf): undefined reference to
bladerf_get_device_list' CMakeFiles/LTE_fdd_enodeb.dir/src/LTE_fdd_enb_radio.cc.o: In function
LTE_fdd_enb_radio::LTE_fdd_enb_radio()':LTE_fdd_enb_radio.cc:(.text+0x5456): undefined reference to
bladerf_free_device_list' CMakeFiles/LTE_fdd_enodeb.dir/src/LTE_fdd_enb_radio.cc.o: In function
LTE_fdd_enb_radio::radio_thread_func(void)':LTE_fdd_enb_radio.cc:(.text+0x59dd): undefined reference to
bladerf_sync_rx' LTE_fdd_enb_radio.cc:(.text+0x6153): undefined reference to
bladerf_get_timestamp'LTE_fdd_enb_radio.cc:(.text+0x61d1): undefined reference to
bladerf_strerror' CMakeFiles/LTE_fdd_enodeb.dir/src/LTE_fdd_enb_radio.cc.o: In function
LTE_fdd_enb_radio::check_radio_number_change()':LTE_fdd_enb_radio.cc:(.text+0x6cea): undefined reference to
bladerf_free_device_list' LTE_fdd_enb_radio.cc:(.text+0x6d0c): undefined reference to
bladerf_get_device_list'collect2: error: ld returned 1 exit status
make[2]: [LTE_fdd_enodeb/LTE_fdd_enodeb] Error 1
make[1]: [LTE_fdd_enodeb/CMakeFiles/LTE_fdd_enodeb.dir/all] Error 2
make: ** [all] Error 2
should I
and@and-HP-250-G4-Notebook-PC:~/openlte_v00-19-04/build$ sudo make -L libbladeRF
??
Thanks for answering this newbie question
Last edit: Andrea_G1977 2016-03-30