24b - Configuración de RAN con srsRAN e SDR USRP B210

Volver ó curso

O primeiro paso desta práctica é instalar un frontend de radiofrecuencia mediante a placa SDR e os seus drivers.

Instalación dos drivers UHD

Comproba que a SDR estea conectada con:

lsusb
É o dispositivo “Ettus Research LLC USRP B210”
É o dispositivo “Ettus Research LLC USRP B210”
sudo apt-get install autoconf automake build-essential ccache cmake cpufrequtils doxygen ethtool \
g++ git inetutils-tools libboost-all-dev libncurses5 libncurses5-dev libusb-1.0-0 libusb-1.0-0-dev \
libusb-dev python3-dev python3-mako python3-numpy python3-requests python3-scipy python3-setuptools \
python3-ruamel.yaml 
cd ~
git clone https://github.com/EttusResearch/uhd.git
cd ~/uhd/host/
mkdir build && cd build
cmake ../
make -j4
make test
sudo make install

Comproba a conexión:

sudo uhd_usrp_probe 

Se falla, executa isto e repite o comando anterior:

python3 /usr/lib/uhd/utils/uhd_images_downloader.py
[INFO] [UHD] linux; GNU C++ version 11.3.0; Boost_107400; UHD_4.4.0.0-0ubuntu1~jammy1
[INFO] [B200] Detected Device: B210
[INFO] [B200] Operating over USB 3.
[INFO] [B200] Initialize CODEC control...
[INFO] [B200] Initialize Radio control...
[INFO] [B200] Performing register loopback test...
[INFO] [B200] Register loopback test passed
[INFO] [B200] Performing register loopback test...
[INFO] [B200] Register loopback test passed
[INFO] [B200] Setting master clock rate selection to 'automatic'.
[INFO] [B200] Asking for clock rate 16.000000 MHz...
[INFO] [B200] Actually got clock rate 16.000000 MHz.
  _____________________________________________________
 /
|       Device: B-Series Device
|     _____________________________________________________
|    /
|   |       Mboard: B210
|   |   serial: 8001658
|   |   name: Zhixun-wireless
|   |   product: 2
|   |   revision: 4
|   |   FW Version: 8.0
|   |   FPGA Version: 16.0
|   |
|   |   Time sources:  none, internal, external, gpsdo
|   |   Clock sources: internal, external, gpsdo
|   |   Sensors: ref_locked
|   |     _____________________________________________________
|   |    /
|   |   |       RX DSP: 0
|   |   |
|   |   |   Freq range: -8.000 to 8.000 MHz
|   |     _____________________________________________________
|   |    /
|   |   |       RX DSP: 1
|   |   |
|   |   |   Freq range: -8.000 to 8.000 MHz
|   |     _____________________________________________________
|   |    /
|   |   |       RX Dboard: A
|   |   |     _____________________________________________________
|   |   |    /
|   |   |   |       RX Frontend: A
|   |   |   |   Name: FE-RX2
|   |   |   |   Antennas: TX/RX, RX2
|   |   |   |   Sensors: temp, rssi, lo_locked
|   |   |   |   Freq range: 50.000 to 6000.000 MHz
|   |   |   |   Gain range PGA: 0.0 to 76.0 step 1.0 dB
|   |   |   |   Bandwidth range: 200000.0 to 56000000.0 step 0.0 Hz
|   |   |   |   Connection Type: IQ
|   |   |   |   Uses LO offset: No
|   |   |     _____________________________________________________
|   |   |    /
|   |   |   |       RX Frontend: B
|   |   |   |   Name: FE-RX1
|   |   |   |   Antennas: TX/RX, RX2
|   |   |   |   Sensors: temp, rssi, lo_locked
|   |   |   |   Freq range: 50.000 to 6000.000 MHz
|   |   |   |   Gain range PGA: 0.0 to 76.0 step 1.0 dB
|   |   |   |   Bandwidth range: 200000.0 to 56000000.0 step 0.0 Hz
|   |   |   |   Connection Type: IQ
|   |   |   |   Uses LO offset: No
|   |   |     _____________________________________________________
|   |   |    /
|   |   |   |       RX Codec: A
|   |   |   |   Name: B210 RX dual ADC
|   |   |   |   Gain Elements: None
|   |     _____________________________________________________
|   |    /
|   |   |       TX DSP: 0
|   |   |
|   |   |   Freq range: -8.000 to 8.000 MHz
|   |     _____________________________________________________
|   |    /
|   |   |       TX DSP: 1
|   |   |
|   |   |   Freq range: -8.000 to 8.000 MHz
|   |     _____________________________________________________
|   |    /
|   |   |       TX Dboard: A
|   |   |     _____________________________________________________
|   |   |    /
|   |   |   |       TX Frontend: A
|   |   |   |   Name: FE-TX2
|   |   |   |   Antennas: TX/RX
|   |   |   |   Sensors: temp, lo_locked
|   |   |   |   Freq range: 50.000 to 6000.000 MHz
|   |   |   |   Gain range PGA: 0.0 to 89.8 step 0.2 dB
|   |   |   |   Bandwidth range: 200000.0 to 56000000.0 step 0.0 Hz
|   |   |   |   Connection Type: IQ
|   |   |   |   Uses LO offset: No
|   |   |     _____________________________________________________
|   |   |    /
|   |   |   |       TX Frontend: B
|   |   |   |   Name: FE-TX1
|   |   |   |   Antennas: TX/RX
|   |   |   |   Sensors: temp, lo_locked
|   |   |   |   Freq range: 50.000 to 6000.000 MHz
|   |   |   |   Gain range PGA: 0.0 to 89.8 step 0.2 dB
|   |   |   |   Bandwidth range: 200000.0 to 56000000.0 step 0.0 Hz
|   |   |   |   Connection Type: IQ
|   |   |   |   Uses LO offset: No
|   |   |     _____________________________________________________
|   |   |    /
|   |   |   |       TX Codec: A
|   |   |   |   Name: B210 TX dual DAC
|   |   |   |   Gain Elements: None

Instalación de eNB/gNB mediante srsRAN, posta en marcha da celda

Visto en 24 (idéntico).


Posta en marcha da celda con USRP B210

nano /etc/srsran/enb.conf

Cambios:

[enb]
mcc = 999
mnc = 70
mme_addr = 10.207.0.160        ## IP for external MME, eg. 192.168.1.10
gtp_bind_addr = 10.207.0.159   ## local interface IP for external S1-U, eg. 192.168.1.3
s1c_bind_addr = 10.207.0.159   ## local interface IP for external S1-MME, eg. 192.168.1.3
n_prb = 15
tm = 2                     ## Rank indicator de MIMO
nof_ports = 2              ## Modo MIMO

[rf]
dl_earfcn = 3350           ## Omitir a menos que solo haya una celda (siempre lo puedes poner en cada declaración de cell en rr.conf)
tx_gain = 80               ## this power seems to work best
rx_gain = 40
device_name = UHD
device_args = auto         ## does not work with anything other than 'auto'

Información sobre tm (Rank Indicator): https://www.sharetechnote.com/html/Handbook_LTE_RI.html

Agora retocamos o ficheiro rr.conf. Ten en conta que o dl_earfcn debe coincidir en ambos, e que o tac (tracking area code) debe ser o mesmo que en Open5GS.

nano /etc/srsran/rr.conf

Cambios para 4G (ver titorial para 5G SA):

Máis info sobre códigos | e sobre PCI.

cell_list =
(
  {
        // rf_port = 0;
        cell_id = 0x01;
        tac = 0x0001;         # Debe coincidir con Open5GS
        pci = 1;
        root_seq_idx = 204;
        dl_earfcn = 3350;     # Debe coincidir con enb.conf u omitirse en enb.conf
        //ul_earfcn = 21400;
        ho_active = true;
        //meas_gap_period = 0; // 0 (inactive), 40 or 80
        //meas_gap_offset_subframe = [6, 12, 18, 24, 30];
        // target_pusch_sinr = -1;
        // target_pucch_sinr = -1;
        // enable_phr_handling = false;
        // min_phr_thres = 0;
        // allowed_meas_bw = 6;
        // t304 = 2000; // in msec. possible values: 50, 100, 150, 200, 500, 1000, 2000

        // CA cells
        scell_list = (
        // {cell_id = 0x02; cross_carrier_scheduling = false; scheduling_cell_id = 0x02; ul_allowed = true}
        )

        // Cells available for handover
        meas_cell_list =
        (
          {
            eci = 0x19B01;
            dl_earfcn = 3350;
            pci = 1;
            //direct_forward_path_available = false;
            //allowed_meas_bw = 6;
            //cell_individual_offset = 0;
          },
          {
            eci = 0x19C01;
            dl_earfcn = 3350;
            pci = 6;
          }
        );

        // Select measurement report configuration (all reports are combined with all measurement objects)
        meas_report_desc =
        (
          {
            eventA = 3
            a3_offset = 6;
            hysteresis = 0;
            time_to_trigger = 480;
            trigger_quant = "RSRP";
            max_report_cells = 1;
            report_interv = 120;
            report_amount = 1;
          }
        );

        meas_quant_desc = {
          // averaging filter coefficient
          rsrq_config = 4;
          rsrp_config = 4;
        };
  }
  // Add here more cells
);
Retoca o campo “ExecStart” para que a ruta a “srsenb” sexa a correcta.
Retoca o campo “ExecStart” para que a ruta a “srsenb” sexa a correcta.

Temos dúas opcións de executar:

Comproba a conexión eNB a core cunha terminal no log de cada equipo (core e eNB):

Conexión entre srsENB e Open5GS
Conexión entre srsENB e Open5GS

Volver ao curso