Testing OpenLTE

Gang - having some success with OpenLTE - at least with LTE_fdd_dl_scan of local towers. This is a UHD app using Soapy/grosmo so discovering what antenna it was using was a mystery. Putting (hack in, in my case) a few informative statements in the source openlte_v00-20-05/LTE_fdd_dl_scan/src/LTE_fdd_dl_scan_flowgraph.cc helped, plus testing different antenna, also playing around with other ‘get’ methods:

GLOBAL VARIABLES
osmosdr::gain_range_t grange;

            switch(hardware_type)
            {
            case LTE_FDD_DL_SCAN_HW_TYPE_USRP_B:
                printf("hw type USRP_B and LimeSDR\n");
                samp_src->set_sample_rate(15360000);
                samp_src->set_gain_mode(false);
                samp_src->set_gain(61);                             // set for max
                samp_src->set_bandwidth(10000000);
                std::cout << "Using antenna: " << samp_src->get_antenna() << std::endl;
                grange = samp_src->get_gain_range();
                printf("gains: %f to %f, step %f\n",grange.start(),grange.stop(),grange.step());
                break;

compile and run prints in the scanner window, when started:

– Using subdev spec ‘0:0 1:1’.
hw type USRP_B and LimeSDR
– RX LPF configured
Using antenna: LNAH
gains: -12.000000 to 61.000000, step 0.100000

then in the telnet control window have fun band scanning:

*** LTE FDD DL SCAN ***
Type help to see a list of commands
write band 5
info channel_found_begin freq=2130000000 dl_earfcn=2150 freq_offset=1.53009 phys_cell_id=244 sfn=454 n_ant=4 phich_dur=Normal phich_res=1/6 bandwidth=10
info channel_found_end freq=2130000000 dl_earfcn=2150 freq_offset=1.53009 phys_cell_id=244

5 Likes

Made some progress - I know the ebay phone SGS4Mini is European from the bands supported

Band 3 - dl 1805 to 1880
Band 7 - dl 2620 to 2690
Band 8 - dl 925 to 960
Band 20 - dl 791 to 821

and from the IMEI it’s made in Finland { http://www.samsungsfour.com/tutorials/find-out-galaxy-smartphone-country-of-origin-from-imei-code.html } - the OAI France MCC/MNC does not work, neither does a UK one, but testing with Finland 244 / 91 worked.
Picked Band 20 so I could watch with a usrp/tvrx on 806Mhz (earfcn 6300) and after turning gains up to levels like in the OAI config (tx/rx_gain 100) they are talking, but so far the phone just registers over and over. Not using a proper duplexer, just antenna at 180°- maybe try various gains.

Just goes up the C-RNTI re-registering over and over it looks like:

03/24/2018 19:20:38.238954 info phy LTE_fdd_enb_phy.cc 485 Received PDSCH schedule from MAC CURRENT_TTI:MAC=1588,PHY=1586 N_dl_allocs=1 N_ul_allocs=0
03/24/2018 19:20:38.247943 info phy LTE_fdd_enb_phy.cc 513 Received PUSCH schedule from MAC CURRENT_TTI:MAC=1594,PHY=1592 N_ul_decodes=1
03/24/2018 19:20:38.338181 info user LTE_fdd_enb_user_mgr.cc 166 C-RNTI=336 assigned
03/24/2018 19:20:38.338285 info mac LTE_fdd_enb_mac.cc 1071 RAR scheduled 1
03/24/2018 19:20:38.338438 info mac LTE_fdd_enb_mac.cc 1274 RAR sent 1684 1691 1688 1694 430020C80C0150
03/24/2018 19:20:38.338477 warning msgq LTE_fdd_enb_msgq.cc 234 phy_to_mac circular buffer empty on receive
03/24/2018 19:20:38.339321 info phy LTE_fdd_enb_phy.cc 485 Received PDSCH schedule from MAC CURRENT_TTI:MAC=1688,PHY=1686 N_dl_allocs=1 N_ul_allocs=0
03/24/2018 19:20:38.347902 info phy LTE_fdd_enb_phy.cc 513 Received PUSCH schedule from MAC CURRENT_TTI:MAC=1694,PHY=1692 N_ul_decodes=1
03/24/2018 19:20:42.937929 info user LTE_fdd_enb_user_mgr.cc 623 C-RNTI allocation timer expiry C-RNTI=332
03/24/2018 19:20:42.938042 info user LTE_fdd_enb_user_mgr.cc 194 C-RNTI=332 released
03/24/2018 19:20:43.038294 info user LTE_fdd_enb_user_mgr.cc 623 C-RNTI allocation timer expiry C-RNTI=333
03/24/2018 19:20:43.038396 info user LTE_fdd_enb_user_mgr.cc 194 C-RNTI=333 released
03/24/2018 19:20:43.138164 info user LTE_fdd_enb_user_mgr.cc 623 C-RNTI allocation timer expiry C-RNTI=334
03/24/2018 19:20:43.138268 info user LTE_fdd_enb_user_mgr.cc 194 C-RNTI=334 released
03/24/2018 19:20:43.238043 info user LTE_fdd_enb_user_mgr.cc 623 C-RNTI allocation timer expiry C-RNTI=335
03/24/2018 19:20:43.238144 info user LTE_fdd_enb_user_mgr.cc 194 C-RNTI=335 released
03/24/2018 19:20:43.337918 info user LTE_fdd_enb_user_mgr.cc 623 C-RNTI allocation timer expiry C-RNTI=336
03/24/2018 19:20:43.338046 info user LTE_fdd_enb_user_mgr.cc 194 C-RNTI=336 released

– Make connection: ‘LimeSDR-USB [USB 3.0] 9060B00471F23’
– Reference clock 30.72 MHz
– Device name: LimeSDR-USB
– Reference: 3.072e+07 MHz
– LMS7002M calibration values caching Disable
RX Antenna: LNAH
TX Antenna: BAND1

Interestingly the device can actually detect a local US Band 5 ATT tower.

1 Like

hey , did you have success to run nodeB with openlte and LimeSDR ? any idea please how to do it ?

Hello chuck must take a look at this
— …/openlte-code/LTE_fdd_enodeb/src/LTE_fdd_enb_radio.cc 2019-12-02 07:49:57.297553345 +0100
+++ …/openlte/LTE_fdd_enodeb/src/LTE_fdd_enb_radio.cc 2019-12-04 21:58:21.253298602 +0100
@@ -1,4 +1,4 @@
-#line 2 “LTE_fdd_enb_radio.cc” // Make FILE omit the path
+// Make FILE omit the path
/*******************************************************************************

 Copyright 2013-2017 Ben Wojtowicz

@@ -229,7 +229,7 @@
try
{
// Setup the USRP

  •    if(devs[idx-1]["type"] == "x300")
    
  •    if(devs[idx-1]["type"] == "soapy")
       {
           devs[idx-1]["master_clock_rate"] = "184320000";
           master_clock_set                 = true;
    

@@ -252,7 +252,8 @@
usrp->set_rx_freq((double)liblte_interface_ul_earfcn_to_frequency(ul_earfcn));
usrp->set_tx_gain(tx_gain);
usrp->set_rx_gain(rx_gain);

  •        usrp->set_tx_antenna("BAND2");
    
  •        usrp->set_rx_antenna("LNAH");
           // Setup the TX and RX streams
           tx_stream  = usrp->get_tx_stream(stream_args);
           rx_stream  = usrp->get_rx_stream(stream_args);
    

@@ -822,7 +823,7 @@
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 +843,7 @@

 // 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 +975,7 @@
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