Studio

1. Core network

1.1 Open5GS core

Confirm the core configuration

  1. In the top navigation, open Open5GS core → Version management, then open the configuration directory.
  1. Open the .env file and check values such as the AMF IP address, MCC, and MNC.
  1. In the AMF configuration, check TAC and slice settings.
  1. In the SMF and UPF configuration, check the DNN/APN and the supported IP types. If you change them, update both files together.

Provision subscribers

  1. Open Open5GS core → Subscription management.
  1. In Subscription templates, click Add and create a template for the shared parameters.
  • Profile name: any name
  • K: 00112233445566778899AABBCCDDEEFF
  • AMF: 9001
  • OP/OPC: OPC 000102030405060708090A0B0C0D0E0F
  • Slice: SST 1, SD empty. This must match the core configuration.
  • DNN/APN: open5g. This must match the core configuration.
  • Type: IPv4v6 or IPv4. Match what the core supports.
  1. Under Subscribers, click Add. Select the template you just created, enter a 15-digit IMSI, then click Create. Restart the core after provisioning.

Start and stop the core

  1. Open Open5GS core → Metrics. Click Start, choose the configuration, then click Start again. Use Logs to watch the output.
  1. Click Stop to shut the core down.

1.2 OAI core

Confirm the core configuration

  1. Open OAI core → Version configuration, then open the configuration directory from the icon in the version row.
  1. In open5g_studio.yaml, check the AMF IP address.
  1. Confirm the related settings in conf.yaml.

Subscriber database:

Slice, MCC, MNC, and TAC:

APN/DNN. Later changes must be applied in every place shown below:

Provision subscribers

  1. Open OAI core → Subscription management and click Add.
  • UE ID and SUPI: the 15-digit IMSI.
  • encPerManentKey: 00112233445566778899AABBCCDDEEFF
  • encOpcKey: 000102030405060708090A0B0C0D0E0F
  • servingPlmnId: 00101. It must match the core MCC and MNC.
  • protectionParameterId: 00112233445566778899AABBCCDDEEFF
  • DNN: open5g. It must match the core configuration.
  • defaultSessionType: IPv4v6. It must match the core.

Start and stop the core

  1. Open OAI core → Metrics. Click Start, choose the configuration in the dialog, then click Start. Use Logs to watch the core.
  1. Click Stop in the upper right to shut the core down.

2. Base station

2.1 OAI gNB

Edit the gNB configuration

Open OAI gNB → Version management, then click the edit button beside the configuration you want to change.

  1. TAC, MCC, MNC, and slice.
  1. IP addresses. The AMF address comes from the core configuration. The gNB address must be reachable from the core network.
  1. Frequency and bandwidth.
  1. PCIe/USB.
  1. Antennas.

Single antenna:

Dual antenna:

Four antennas:

Start and stop the gNB

  1. Open OAI gNB → Metrics and click Start. Choose the gNB version and configuration, then click Start.
  1. Use the log button to read the gNB log.
  1. Click Stop to shut the gNB down.

Start and stop an NTN gNB

The start sequence is the same as a normal gNB. The NTN configuration file is gnb.sa.band256.u0.106prb.yunsdr.ntn-leo.conf.

  1. The current stack only simulates LEO satellite orbits.
  2. gNB and UE coordinates cannot be changed yet.

2.2 srsRAN gNB

Edit the gNB configuration

Open srsRAN → Version management, then click the edit button beside the configuration file.

  1. IP address, PLMN, TAC, and slice. addr is the AMF address. bind_addr is the gNB address and must reach the AMF. PLMN and TAC each appear in two places.
  1. Frequency and bandwidth. Set the SDR sample rate that matches the bandwidth. 100 MHz uses 122.88.
  1. PCIe/USB.
  1. Antenna count. Set this to match the hardware in use.

Start and stop the gNB

  1. Open srsRAN gNB → Metrics, click Start, choose the configuration, then click Start.
  1. Use Logs to watch the gNB.
  1. Click Stop to shut the gNB down.

3. OAI UE emulator

  1. The OAI UE emulator can attach only to an OAI gNB.
  2. Keep the UE emulator antennas as close to the gNB antennas as possible.

3.1 UE emulator (command line)

Terrestrial gNB

  1. Enter the OAI build directory.
cd ~/sdr/Open5G/oai/openairinterface5g-2026-w34/cmake_targets/
  1. Start the emulator. Some values must be copied from the gNB startup log.
sudo ./ran_build/build/nr-uesoftmodem --usrp-args "dev=pciex:0,auxdac1=1650" --ue-rxgain 60 --ue-txgain 0 --ue-nb-ant-rx 1 --ue-nb-ant-tx 1 -C 3649380000 -r 273 --numerology 1 --ssb 1472 --band 78 --ue-fo-compensation --uicc0.imsi 001010000000004 --uicc0.key 00112233445566778899AABBCCDDEEFF --uicc0.opc 000102030405060708090A0B0C0D0E0F --uicc0.pdu_sessions.[0].dnn open5g
  1. Press Ctrl+C to stop it.
ParameterMeaning
--usrp-argsFixed value on the current release
dev=pciex:0,auxdac1=1660PCIe port and auxdac. Read the number after auxdac1 from the SDR nameplate
--ue-rxgainSDR receive gain. Larger means more gain. 102 is the maximum
--ue-txgainSDR transmit gain. Larger means less gain
--ue-nb-ant-rxNumber of receive antennas
--ue-nb-ant-txNumber of transmit antennas
-CCenter frequency used by the gNB. A green line in the gNB log contains this value
-rBandwidth used by the gNB. 273 means 100 MHz. A green line in the gNB log contains this value
--numerologySubcarrier spacing. 1 means 30 kHz. A green line in the gNB log contains this value
--ssbSSB position. A green line in the gNB log contains this value
--bandBand used by the gNB
--uicc0.imsiIMSI. Provision it on the core first
--uicc0.keyAuthentication key. Match the subscriber record
--uicc0.opcOPC. Match the subscriber record
--uicc0.pdu_sessions.[0].dnnDNN (APN). Match the core configuration and the subscriber record

NTN gNB

The NTN UE emulator can currently be started only from the command line.

  1. Open the UE configuration directory and check the file.
cd ~/sdr/Open5G/oai/openairinterface5g-2026-w34/targets/PROJECTS/GENERIC-NR-5GC/CONF/
cat ue-ntn.conf

Contents:

# SPDX-License-Identifier: LicenseRef-CSSL-1.0
# The subscriber data must match the 5GC database used by the test lab.
uicc0 = {
 imsi = "001010000000001";
 key = "00112233445566778899AABBCCDDEEFF";
 opc = "000102030405060708090A0B0C0D0E0F";
 pdu_sessions = ({ dnn = "open5g"; nssai_sst = 1; });
}
# UE ECEF position used for NTN UE-specific timing advance.
position0 = {
 x = 0.0;
 y = 0.0;
 z = 6377900.0;
}
  1. Enter the build directory and start the UE emulator.
cd ~/sdr/Open5G/oai/openairinterface5g-2026-w34/cmake_targets/
sudo ./ran_build/build/nr-uesoftmodem \
  --usrp-args 'dev=pcies:0,auxdac1=1660' \
  -O ../targets/PROJECTS/GENERIC-NR-5GC/CONF/ue-ntn.conf \
  --band 256 -C 2185000000 --CO -190000000 -r 106 \
  --numerology 0 --ssb 146 --time-sync-I 0.1 \
  --ntn-initial-time-drift -46 --initial-fo 50340 \
  --cont-fo-comp 2 --autonomous-ta --ue-txgain 20 --ue-rxgain 0
ParameterMeaning
-OUE configuration file, as an absolute or relative path
--usrp-argsdev=pcies:0,auxdac1=1660. SDR and frequency offset
--bandgNB band, from the gNB log
-CDownlink frequency, from the gNB log
--COUplink/downlink frequency offset, from the gNB log
-rBandwidth, from the gNB log
--numerologySubcarrier spacing, from the gNB log
--ssbSSB position, from the gNB log
--time-sync-ITime PI controller
--ntn-initial-time-driftInitial time-drift estimate
--initial-foDoppler. Read it from the gNB log
--cont-fo-compContinuous closed-loop Doppler compensation
--autonomous-taEnable adaptive timing advance
--ue-rxgainReceive gain. Larger means more gain
--ue-txgainTransmit attenuation. Larger means more attenuation
-AOffset. Usually unused. PCIEX on the 7400 uses a fixed -300

The gNB log looks like the screenshot below. Use it for every parameter that must be copied from the log. A small Doppler error is acceptable.

3.2 UE emulator (Web)

The Web launcher currently has a problem and will be updated later. It still uses an old DNN value, so the PDU session cannot be established.

Terrestrial gNB

  1. Open OAI gNB → UE emulator.
  1. Set args, PCIe, transmit and receive gain, antenna count, cell band, bandwidth, frequency, and subscriber data.
  1. Choose the version and click Start. The button changes to Stop. Click it again to stop the emulator.

NTN gNB

  1. Select the NTN scenario and fill in the rest as shown. -O points at the UE configuration. Use a path relative to the OAI root, for example ~/sdr/Open5G/oai/openairinterface5g-2026-w34/. Do not use an absolute path.

The file contains the subscriber data and the position:

  1. Click Start in the upper right. After the emulator starts, the button turns into a red Stop button. Click it to stop.

4. Handset

4.1 APN/DNN

  1. On the home screen, open Settings → Mobile network → SIM1.
  1. Open APN and edit the profile, or add a new one.
  1. Set the following:
  • Name: any value
  • APN: open5g (match the core; the open-source stack uses open5g, commercial and 4G stacks use internet)
  • MCC and MNC: split the PLMN. For PLMN 00101, MCC is 001 and MNC is 01
  • APN type: default
  • APN protocol: ipv4ipv6, matching the core
  • APN roaming protocol: ipv4ipv6, matching the core

4.2 Enable 5G

  1. On the home screen, open Settings → Mobile network → SIM1.
  1. Turn on Enable 5G.

4.3 Turn off VoNR/VoLTE

  1. On the home screen, open Settings → Mobile network → SIM1.
  1. Find VoLTE HD calling and turn it off.
  1. On the dial pad, enter *#*#4636#*#*. Open Phone information, set Preferred network type to NR only, then toggle airplane mode.

4.4 SA/NSA

  1. Open Settings → About phone → Version info. Tap Software version repeatedly until developer mode is enabled and Developer options appears.
  1. Open Settings → System management and upgrade → Developer options. Set 5G network mode to SA preferred (an option that includes SA or AUTO).

5. Traffic

5.1 Find the UE IP address

On the phone

Open Settings → My device → All specs and info → Status, then find IP address.

On other phones the path is Settings → About phone → Status.

On the core

Open5GS

  1. Open Open5GS core → Metrics, click Logs, and switch to the open5gs-smf tab to see the UE IP address.
  1. From the shell:
sudo docker logs -f open5gs-smf

OAI

  1. Open OAI core → Metrics, click Logs, and switch to the oai-smf tab.
  1. From the shell:
sudo docker logs -f oai-smf

5.2 iperf

Open5GS

  1. Open a terminal and enter the UPF container.
sudo docker exec -it open5gs-upf bash
  1. Start iperf. 10.46.0.2 is the UE address. Replace it with the address you actually received.
iperf -u -c 10.46.0.2 -t 1000 -b 1G -i 1 -l 1350
  1. Press Ctrl+C to stop the traffic, then type exit to leave the container.

OAI

  1. Run iperf against the UE. 192.168.70.135 is the UPF address and 10.0.0.2 is the UE address. Replace both with the addresses in your lab.
docker exec -it oai-ext-dn iperf -u -t 86400 -i 1 -fk -B 192.168.70.135 -b 200M -c 10.0.0.2

5.3 VLC HD video (OAI)

Host that runs the gNB and core

IP address and route

  1. Give the host an address on a separate network, for example 192.168.3.10/24.
  1. Add a route. 10.46.0.0/24 is the pool the core assigns to UEs. 172.22.0.8 is the UPF container address that bridges to the UPF.
sudo route add -net 10.46.0.0/24 gw 172.22.0.8

Install and start VLC

  1. Install VLC.
sudo apt-get install vlc
  1. On the gNB/core host, run vlc.
  1. Open Media → Stream...
  1. Click +Add... and choose the HD video file.
  1. In the dropdown, choose Stream, then click the button to continue.
  1. Click Next. Nothing else is required on this screen.
  1. Enable Display locally if you want the video to play in this VLC window. For New destination, choose HTTP and click Add. Set an unused port, for example 8990, then click Next.
  1. Clear Activate Transcoding. Set Profile to Video-H.264+MP3(TS), then click Next.
  1. Click Stream. No further settings are required.

Host that runs the UE emulator

IP address and route

  1. Start the OAI UE emulator and let it attach before doing anything else. Find the address with ip a on oaitun_ue1.
  2. Add a static route. 192.168.3.0/24 is the network of the gNB host. 10.46.0.1 is the UPF address.
sudo route add -net 192.168.3.0/24 gw 10.46.0.1
  1. Ping the far side to confirm connectivity.

Install and start VLC

  1. Install VLC.
sudo apt-get install vlc
  1. Run vlc.
  1. Open Media → Open Network Stream...
  1. On the Network tab, enter the stream URL. 192.168.3.10 is the address of the host that runs VLC on the gNB side. The protocol and port are the ones configured on the VLC server. Click Play.

Android phone

  1. After the phone attaches, open VLC.
  1. On the home screen, open More in the bottom bar, then New stream. Enter the same URL used by the server and tap the play icon.

6. FAQ

None yet.