# Open5G2GO: Askey gNodeB Setup

# gNodeB Setup

## Overview

An gNodeB is a base station in 5G networks that handles radio transmission and reception for user equipment (UEs). To integrate an Askey gNodeB with Open5G2GO, the gNodeB must establish a connection to the AMF using the NGAP protocol over SCTP.

The NGAP protocol is responsible for:

* gNodeB registration and configuration
* Mobility management
* Session management
* Signaling between the gNodeB and core network

## Step 1: Register Your gNodeB in Open5G2GO

Before configuring the gNodeB hardware, you must register it in Open5G2GO's configuration file.

### Edit the gNodeB Configuration File

Open the configuration file:

```bash
nano config/gnodebs.yaml
```

### Update the eNodeB Entry

Replace the example values with your eNodeB's actual information:

```yaml
gnodebs:
    ip_address: "YOUR_GNODEB_IP"           # Management IP for SNMP monitoring
    name: "My-gNodeB"                      # Friendly name for dashboard
    location: "Office Building A"          # Physical location
```

| Field | Where to Find It |
|-------|------------------|
| `ip_address` | Your eNodeB's management IP (check your network config) |
| `name` | Choose any friendly name |
| `location` | Physical location description |

### Apply the Configuration

After saving the file, restart the backend service:

```bash
sudo docker compose -f docker-compose.prod.yml restart backend
```

The dashboard will now recognize and monitor your gNodeB.


---

## Step 2: Gather Connection Parameters

Before configuring your eNodeB, gather the following information:

| Parameter | Value | Notes |
|-----------|-------|-------|
| AMF IP Address | Your Docker host IP (e.g., 10.48.0.110) | This is the IP address where your Open5G2GO AMF service is running |
| AMF SCTP Port | 38412 | Standard SCTP port for NGAP protocol |
| MCC (Mobile Country Code) | 315   | US CBRS Private LTE (or your configured MCC) |
| MNC (Mobile Network Code) | 010   | Private network operator code (or your configured MNC) |
| TAC (Tracking Area Code) | 1     | Area code for location management |
| SST       | 1     | Default Slice Value  |

> **Tip:** To find your Docker host IP, run `hostname -I` on your host machine or check your network configuration. For Docker Desktop, this may be `127.0.0.1` or your machine's local network IP.

## Step 3: Configure the gNodeB Hardware

### Access the gNodeB Web Interface


1. Open a web browser
2. Navigate to the eNodeB's IP address (e.g., `http://192.168.8.50`)
3. Enter your login credentials

 ![Askey gNodeB Login Page](https://outline-production-attachments.s3-accelerate.amazonaws.com/uploads/bcdc8248-9752-47b6-aef9-c30b5d469051/f91075ba-a42d-424b-9f9d-818720509efc/192.168.8.50_.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA4EOUDTOVUICLPZ4P%2F20260927%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260927T134500Z&X-Amz-Expires=86400&X-Amz-Signature=6b1e34a631e2c7ec51f46a578ede5f30687d4df6e7a291a702aeb9c3394f2931&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject " =2260x1460")

Your Askey gNodeB should be powered up and have GPS lock. Confirm Sync settings by navigating to *System Settings > Sync Source.*

 ![](https://outline-production-attachments.s3-accelerate.amazonaws.com/uploads/bcdc8248-9752-47b6-aef9-c30b5d469051/8bcc7463-ab21-4c37-b887-973d8966ade5/192.168.8.50_%20%281%29.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA4EOUDTOVUICLPZ4P%2F20260927%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260927T134500Z&X-Amz-Expires=86400&X-Amz-Signature=a2d89ddf68a14d4b9c602cd6f866eaa8195b23630a7c713f3f86a4de6df7d9b9&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject " =2808x2662")


As shown above our gNodeB is using GPS Sync and has a lock. Next, we configure connection parameters so the gNodeB can communicate with the Open5G2GO core.

Go to RAN *Configuration > gNodeB > CU* and update the following fields with your settings.

N2: Can be same fixed IP as gNodeB, 192.168.8.50 in our example.

N3: Must be a different IP to gNodeB, 192.168.8.51 in our example. Ensure this address is not already used in your network.

Site(gNB) ID: Update if required

gNB ID length: leave as default

Cell ID: Customize if necessary, a single radio network can be left as default.

TAC: 1

PLMN List: Enter the PLMNID selected during the setup wizard. In our example ‘99970’

AMF IP: Enter the IP address you selected for Open5G2GO in the setup wizard. in our example 192.168.8.5

Other settings: Leave as Default. Open5G2GO is set up to support the default Encryption and Integrity algorithms on Askey gNB.

 ![](https://outline-production-attachments.s3-accelerate.amazonaws.com/uploads/bcdc8248-9752-47b6-aef9-c30b5d469051/cf4f2c2a-33f7-4d9f-b868-4f5dbd52a417/192.168.8.50_%20%282%29.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA4EOUDTOVUICLPZ4P%2F20260927%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260927T134500Z&X-Amz-Expires=86400&X-Amz-Signature=fcf0801333199795a70d85d9bd8cdd7a5419437cc84ddad588e96df553c556d3&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject " =2808x2880")


When you save settings radio will prompt for reboot. Accept and wait 4 to 7 minutes for the gNB to come back up.



If you need to update operating band, bandwidth and frame configuration of the gNB, go to *RAN Configuration > gNB > DU*.

 ![](https://outline-production-attachments.s3-accelerate.amazonaws.com/uploads/bcdc8248-9752-47b6-aef9-c30b5d469051/0c593678-25c3-43d7-8d62-3d90a4487059/192.168.8.50_%20%284%29.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA4EOUDTOVUICLPZ4P%2F20260927%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260927T134500Z&X-Amz-Expires=86400&X-Amz-Signature=9fb62ed93c896bfe451fd69444d636329d96738ed14801c988201bb1a148c1ac&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject " =2808x5942")


## Verification

### Check gNodeB Connection Status

Confirm status by entering *About > Dashboard.* Our example below shows *Cell State: In Service* which means it is connected to the core and ready to connect UEs / devices.

 ![](https://outline-production-attachments.s3-accelerate.amazonaws.com/uploads/bcdc8248-9752-47b6-aef9-c30b5d469051/ff897ce6-2568-4d1e-8027-75ff0ef67200/192.168.8.50_%20%283%29.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA4EOUDTOVUICLPZ4P%2F20260927%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260927T134500Z&X-Amz-Expires=86400&X-Amz-Signature=a6b825a031c40d6a87b260e0da7b1726a8f8c41fd7cde920b45218adea998ed8&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject " =2808x1944")


### Check AMF Logs for NG Setup

From your Docker host, examine the AMF logs for NG Setup messages:

```javascript
docker compose -f docker-compose.5g.prod.yml logs amf | grep -E "(NG-Setup|gNB)"
```

You should see output similar to:

```javascript
waveriders@wavedock:~/open5G2GO$ docker compose -f docker-compose.5g.prod.yml logs amf | grep -E "(NG-Setup|gNB)"
open5g2go-amf  | 03/19 13:10:15.858: [amf] INFO: gNB-N2 accepted[192.168.8.50]:38412 in ng-path module (../src/amf/ngap-sctp.c:113)
open5g2go-amf  | 03/19 13:10:15.858: [amf] INFO: gNB-N2 accepted[192.168.8.50] in master_sm module (../src/amf/amf-sm.c:894)
open5g2go-amf  | 03/19 13:10:15.861: [amf] INFO: [Added] Number of gNBs is now 1 (../src/amf/context.c:1277)
open5g2go-amf  | 03/19 13:10:15.861: [amf] INFO: gNB-N2[192.168.8.50] max_num_of_ostreams : 2 (../src/amf/amf-sm.c:941)
```

The presence of "gNB-N2 accepted" indicates successful registration of the gNodeB.

**Additional Verification Commands**

View all AMF logs: 

```javascript
docker compose -f docker-compose.5g.prod.yml logs amf
```

Check gNodeB connectivity: 

```javascript
docker compose -f docker-compose.5g.prod.yml logs amf | grep -E "(gNB|accepted|Number of gNBs)"
```

Verify SCTP connection is established: 

```javascript
sudo ss -Snp | grep 38412
```

## Troubleshooting

### gNodeB Shows "Disconnected" Status

Verify the AMF IP address is correct and reachable from the gNodeB

Check firewall rules on the Docker host to allow port 38412 (SCTP) and 2152 (UDP)

Verify SCTP kernel module is loaded: 

```javascript
sudo modprobe sctp
```

Review the AMF logs for error messages: 

```javascript
docker compose -f docker-compose.5g.prod.yml logs amf
```

### NG Setup Failures

Confirm the PLMN configuration (MCC/MNC) matches between the gNodeB and AMF — check with: 

```javascript
docker exec open5g2go-amf cat /etc/open5gs/amf.yaml | grep -A2 mcc
```

Verify the TAC and SST values match (default: TAC=1, SST=1)

Check that the AMF service is running: 

```javascript
docker compose -f docker-compose.5g.prod.yml ps amf
```

If the gNodeB connects then immediately disconnects, check the AMF logs for SCTP_SHUTDOWN_EVENT — this may indicate a stale SCTP association. Reboot the gNodeB to force a clean reconnect.

### Network Connectivity Issues

Test connectivity from the gNodeB to the Docker host: ping <docker_host_ip>

Verify SCTP is listening on the host:

```javascript
sudo ss -Slnp | grep 38412
```

Check that GTP-U is listening: 

```javascript
sudo ss -ulnp | grep 2152
```

▎ Note: For additional support, check the AMF logs for specific error codes and consult your gNodeB vendor's documentation.

### Next Steps

Once the gNodeB is successfully connected:


1. Provision SIM cards via the Web UI (Devices page) or directly via MongoDB (see Operations Guide)
2. Insert SIMs into 5G NR capable devices
3. Monitor connections on the Dashboard — you should see Registered UEs and Connected Devices update
4. If devices connect but have no internet, check the Troubleshooting Guide for downlink and LAN reachability issues