- all RAN code, CI code, configuration files, dockerfiles, in CSSL v1.0
- all deployment code (openshift, charts, ancillary files like shell
scripts), in MIT
- documentation in CC-BY-4.0
- exceptions might apply and are listed in NOTICE
- there is a new LICENSES folder with all licenses
- CONTRIBUTIONS.md has been updated accordingly
For automated changes based on OAI PL v1.1:
perl -i~ -0pe 's/\/\*.*Licensed to the OpenAirInterface.*openairinterface.org\n#?/\/*\n * SPDX-License-Identifier: LicenseRef-CSSL-1.0\n/s' **/*.{c,h,cpp}
perl -i~ -0pe 's/\/\*.*Licensed to the OpenAirInterface.*openairinterface.org\n#?/\/*\n * SPDX-License-Identifier: LicenseRef-CSSL-1.0\n/s' **/*.ts
perl -i~ -0pe 's/<!--.*Licensed to the OpenAirInterface.*openairinterface.org\n.*-->/<!-- SPDX-License-Identifier: LicenseRef-CSSL-1.0 -->/s' **/*.xml
The rest (cmake, files with missing license, cmake) manually.
Plotting tools
ul_bler_vs_snr_graph.py
This generates UL BLER vs SNR plots using nr_ulsim. It uses cache so subsequent runs are faster.
Assumes your nr_ulsim is in ../../cmake_targets/ran_build/build. Run with -h flag to see options
Example graph:
Cache usage and modifting nr_ulsim command
Modify the script call to nr_ulsim if you want a different channel model or other flags in the nr_ulsim command.
Remember to clear the cache (remove cache.pkl from this folder) so that the results from a different run are not
taken from the cache.
Same goes for any software modifications of nr_ulsim - the cache is not aware of the software version used to generate
the data - remember to clear your cache manually if you are comparing different nr_ulsim versions.
The script also allows to skip usage of the cache with --rerun option.
dl_graph.py
This generates plots from data saved from nr_dlsim. It takes data in two formats:
- Plots frequency domain channel estimates, constellation diagram and LLRs from data read in binary format. The data is generated from
nr_dlsim -w - Plots BER (other also possible) from CSV data generated by
nr_dlsim -Z.
The plots are saved in three formats: .png, .pdf and .svg.
Example graphs:
BER
plot_power_control.sh
This plots the relevant graphs for power control at the gNB, exported through T
and recorded via the csv tracer and
plotted with gnuplot.
Run first the csv tracer in one terminal, selecting the desired quantities, and
write them out to a file:
./common/utils/T/tracer/csv -d ../common/utils/T/T_messages.txt -s $'\t' -t time GNB_MAC_PUSCH_POWER_CONTROL time snrx10 phr tpc tb_size txpower_calc rbSize mcs > /tmp/pusch.csv
in a second terminal, run the gNB with desired configuration, and pass the
--T_stdout 2 option to connect to the csv tracer:
sudo ./nr-softmodem -O <config> --T_stdout 2
Note that you could also run both in one window, connecting both commands with
a &. In that case, it's important to run the nr-softmodem at second
position, which will receive signals and stop the csv tracer when stopping
the main process.
The script might also be used to print PUCCH SNR. This can be achieved by only
recording the relevant fields with the csv tracer for trace
`GNB_MAC_PUCCH_POWER_CONTROL
./common/utils/T/tracer/record -d ../common/utils/T/T_messages.txt -OFF -on GNB_MAC_PUSCH_POWER_CONTROL -on GNB_MAC_PUCCH_POWER_CONTROL -o /tmp/record.raw
Use the replay tracer and csv to separate into PUSCH and PUCCH traces.
After recovering the pusch.csv file, you could plot it with a script.
./plot-power-control.gp.sh /tmp/pusch.csv
The script prints four graphs:
- prints instantaneous SNR, and "deltaMCS" (the power used for the
transmission if in deltaMCS mode that accounts for MCS). It also prints an
average SNR, but this has to be manually post-processed from the instanteous
SNR values (
snrx10above) - TPC commands and PHR of the UE
- Resource blocks used for all transmissions, and the MCS
- transport block size of the transmission, to estimate the amount of traffic.
The script should either auto-scale graphs or have sensible defaults. It prints on screen. There is code to print to a file; uncomment the relevant lines to achieve this.
