| 1 | [[Include(WikiToC)]] |
| 2 | |
| 3 | This tutorial contains instructions for running the openairinterface eNB and UE on various platforms. |
| 4 | It adapts the Eurecom tutorial at : https://gitlab.eurecom.fr/oai/openairinterface5g/wikis/HowToConnectOAIENBWithOAIUEWithoutS1Interface |
| 5 | for the ORBIT and COSMOS testbeds. |
| 6 | |
| 7 | == Prerequisites == |
| 8 | 1. Two nodes, with appropriate hardware, within RF range |
| 9 | 1. Currently supported: USRP x310, USRP 2974, USRP b210 |
| 10 | 1. Load the image {{{tutorial-oai.ndz}}} onto both nodes |
| 11 | 1. Turn the nodes on |
| 12 | 1. If graphical display is desired, enable x11 tunneling to console and then to nodes |
| 13 | 1. ssh to the nodes |
| 14 | |
| 15 | == On node 1 == |
| 16 | 1. run /opt/oaiscripts/build_oai.sh to build for the current hardware and kernel |
| 17 | 1. edit the file /opt/oaiscripts/run_enb.sh for the SDR in use, for example, set SDR IP addr and max gain |
| 18 | 1. run /opt/oaiscripts/run_enb.sh |
| 19 | |
| 20 | |
| 21 | Example script, change parameters as needed: |
| 22 | * run_enb.sh: |
| 23 | {{{#!shell |
| 24 | #! /bin/bash |
| 25 | #sdr_addrs takes standard uhd arguments, such as: |
| 26 | #"type=x300,addr=192.168.40.2" #x310 over direct network |
| 27 | #"type=x300,resource=rio0" #x310 over pcie |
| 28 | #"type=b210" #b210 over usb |
| 29 | #values for RUs.[0] override config file, must be set per usrp type |
| 30 | # -d enables xforms charts |
| 31 | |
| 32 | cd /opt/openairinterface5g |
| 33 | source oaienv |
| 34 | cd ./cmake_targets |
| 35 | ./lte_build_oai/build/lte-softmodem \ |
| 36 | -O $OPENAIR_HOME/ci-scripts/conf_files/enb.band7.tm1.25PRB.usrpb210.conf \ |
| 37 | --nokrnmod 1 --noS1 --eNBs.[0].rrc_inactivity_threshold 0 \ |
| 38 | --RUs.[0].att_tx 40 --RUs.[0].att_rx 0 \ |
| 39 | --usrp-args "type=b200" \ |
| 40 | -d |
| 41 | }}} |
| 42 | |
| 43 | == On Node 2 == |
| 44 | 1. run /opt/oaiscripts/build_oai.sh to build for the current hardware and kernel |
| 45 | 1. edit the file /opt/oaiscripts/run_ue.sh for the SDR in use, for example, set SDR IP addr and max gain |
| 46 | 1. run /opt/oaiscripts/run_ue.sh |
| 47 | |
| 48 | Example script, change parameters as needed: |
| 49 | * run_ue.sh: |
| 50 | {{{#!shell |
| 51 | #! /bin/bash |
| 52 | #sdr_addrs takes standard uhd arguments, such as: |
| 53 | #"type=x300,addr=192.168.40.2" #x310 over direct network |
| 54 | #"type=x300,resource=rio0" #x310 over pcie |
| 55 | #"type=b210" #b210 over usb |
| 56 | #values for RUs.[0] override config file, must be set per usrp type |
| 57 | # -d enables xforms charts |
| 58 | |
| 59 | cd /opt/openairinterface5g |
| 60 | source oaienv |
| 61 | cd ./cmake_targets/lte_build_oai/build |
| 62 | ./lte-uesoftmodem \ |
| 63 | -C 2680000000 -r 25 \ |
| 64 | --ue-scan-carrier --nokrnmod 1 --noS1 \ |
| 65 | --ue-rxgain 120 --ue-txgain 30 --ue-max-power 0 \ |
| 66 | --ue-nb-ant-tx 1 --ue-nb-ant-rx 1 \ |
| 67 | --usrp-args "type=b200" \ |
| 68 | -d |
| 69 | }}} |
| 70 | |
| 71 | == Once Both nodes are running == |
| 72 | * if all is successfull, you shouuld see new interfaces on the two nodes, with addresses: |
| 73 | * 10.0.1.1 |
| 74 | * 10.0.1.2 |
| 75 | * you should be able to run ping, iperf, and so on |
| 76 | |
| 77 | |
| 78 | == Understanding xforms terms and plots == |
| 79 | * Explanations from: |
| 80 | * https://www.mathworks.com/help/lte/physical-channels.html |
| 81 | |
| 82 | * PBCH: physical broadcast channel |
| 83 | * The PBCH carries part of the system information required for terminals to access the network |
| 84 | * PUSCH: physical uplink control channel |
| 85 | * PDCCH: physical downlink control channel |
| 86 | * The PDCCH conveys control information, scheduling decisions for PDSCH reception, and for scheduling grants enabling transmission on the PUSCH. |
| 87 | * PUSCH: physical uplink shared channel |
| 88 | * PDSCH: physical downlink shared channel |
| 89 | * The PDSCH carries user data and paging information to the terminal. |
| 90 | |
| 91 | == Calibration == |
| 92 | * physical attenuation |
| 93 | * received signal at UE |
| 94 | * received signal at eNB |
| 95 | * pdsch constellation at UE |
| 96 | * pdsch constellation at eNB |
| 97 | |
| 98 | == Expected Performance == |
| 99 | This depends on a number of factors, including: |
| 100 | * the total bandwidth (number of resource blocks) |
| 101 | * 5mhz:25prb |
| 102 | * 10mhz:50prb |
| 103 | * 20mhz:100prb |
| 104 | * p(d/u)sch modulation: |
| 105 | * qpsk |
| 106 | * 16qam |
| 107 | * 64qam |
| 108 | * 256qam |
| 109 | * FDD vs TDD |
| 110 | * number of MIMO channels |
| 111 | * control vs data channel split |
| 112 | |
| 113 | For the default config file in this tutorial, it's: |
| 114 | * 1/1 non-mimo |
| 115 | * FDD band 7 |
| 116 | * 5mhz/25PRB |
| 117 | * up to 256qam, depending on signal |
| 118 | * control / data split of (0.25/0.75?) |
| 119 | * so you can expect up to 19mbps downlink at 64qam, and 25mbps downlink at 256qam |
| 120 | |
| 121 | |
| 122 | == Specifics per domain == |
| 123 | === sb2.cosmos-lab.org === |
| 124 | 1. set usrp address to "type=x3xx,resource=rio0" |
| 125 | 1. on eNB, set att_tx=70, att_rx=10 |
| 126 | 1. use RFSWITCH service to set all switches to port 1 for antenna |
| 127 | |
| 128 | === sb2.orbit-lab.org === |
| 129 | 1. set usrp address to "type=x3xx,addr=192.168.40.2" |
| 130 | 1. bring up usrp ethernet interface, set ip to 192.168.40.1/16 |
| 131 | |
| 132 | === sb1.orbit-lab.org === |
| 133 | 1. set usrp address to "type=b210" |
| 134 | 1. UE_rxgain: 120 |
| 135 | 1. UE_txgain: 30 |
| 136 | 1. UE_maxpower: 0 |
| 137 | 1. eNB_att_tx: 40 |
| 138 | 1. eNB_att_rx: 0 |
| 139 | |
| 140 | |
| 141 | === sb4.orbit-lab.org === |
| 142 | 1. set usrp address to "type=b210" |
| 143 | 1. configure RF matrix for 60db of attenuation between eNB and UE node chosen |