Introduction
Welcome to the first lesson of our new module, "Operating the 4G Test Lab." In the previous module, you completed all the foundational setup: installing the srsRAN and Open5GS software suites, configuring them, programming a SIM card, and adding a corresponding subscriber profile to the Open5GS database. Your test lab is fully configured but currently dormant.
Today, your learning outcome is to launch and verify the operation of the Open5GS core network services. This is like powering on the brain of your cellular network. We'll start the collection of services that form the 4G Evolved Packet Core (EPC) and, just as importantly, we'll learn how to confirm that they are running correctly and are ready to accept connections. Your experience with Linux services and network analysis will be directly applicable here as we dive into systemd and log files.
By the end of this lesson, you will have a live, running core network, setting the stage for bringing our base station online and connecting our first device.
The Components of the Core Network
Before we start launching services, it's helpful to visualize what we're turning on. The Open5GS software suite implements the various functions of a mobile core network. For our 4G lab, we are interested in the components of the Evolved Packet Core (EPC).

As a Linux user, you can think of these architectural components as individual daemons or services managed by systemd. The following resource provides a clear list of the specific services we need for our 4G network.
Step 1. LTE EPC (Evolved Packet Core) Network Setup
This document from Seattle Community Network lists the Open5GS software components that correspond to the 4G EPC functions. It's a useful reference for mapping the architecture to the actual service names on your system.
Read the introductory paragraphs and the 'Software Components' list. Pay attention to the service names, such as open5gs-mmed.service and open5gs-hssd.service, as these are the exact names you will use to manage the services.
Based on that resource, the key 4G services we need to run are:
open5gs-hssd.service(Home Subscriber Server)open5gs-mmed.service(Mobility Management Entity)open5gs-sgwcd.service(Serving Gateway Control Plane)open5gs-sgwud.service(Serving Gateway User Plane)open5gs-pcrfd.service(Policy and Charging Rules Function)open5gs-smfd.service(Session Management Function, contains PGW-C)open5gs-upfd.service(User Plane Function, contains PGW-U)open5gs-webui.service(The web interface you used previously)
Launching the Open5GS Services
With the components identified, let's start them. Since these are all managed by systemd, we can use systemctl to control them.
You could start each service individually, but it's more efficient to start them all with a single command. In your terminal, run the following:
sudo systemctl start open5gs-hssd open5gs-mmed open5gs-sgwcd open5gs-sgwud open5gs-pcrfd open5gs-smfd open5gs-upfd
Note: We assume the open5gs-webui.service is already running from the last lesson. If not, you can add it to the command above or start it separately.
Verifying Operation
Launching the services is only half the task. Verifying they started correctly and are communicating is critical. A failure in one service can cause a cascade of issues. We'll use a few methods, from a quick status check to a more detailed log analysis.
Method 1: Check Service Status with systemctl
The most direct way to check if the services are running is to query systemctl. You can check them all at once using a wildcard.
sudo systemctl status 'open5gs-*'
This command will list the status of all services whose names begin with open5gs-. You should see Active: active (running) for each one. If any service has failed, this output is the first place to look for error messages.
The following video demonstrates this exact process and shows you what a healthy output looks like.
This walkthrough from Amin Sedighfar demonstrates how to check the status of all Open5GS daemons using systemctl. It provides a practical look at what you should expect to see on your own system.
Watch the segment from 05:40 to 06:15. The presenter runs the systemctl status command with a wildcard to check all the Open5GS services at once.
Method 2: Log File Analysis
The status check tells you if a process is running, but logs tell you what it's doing. This is where you'll find confirmation of successful initialization and inter-service communication. For a cybersecurity professional, reading logs is second nature, and here it's the key to confirming a healthy core network.
Open5GS services can be logged in two primary ways: through the journald daemon or to flat files in /var/log/open5gs/.
Using journalctl:
This is the standard systemd way to view logs. Let's look at the MME log, as it's the central orchestrator for device connections.
sudo journalctl -f -u open5gs-mmed
- The
-fflag "follows" the log, showing new entries in real time. - The
-uflag filters for a specificsystemdunit (service).
Tailing Log Files directly:
Alternatively, you can tail the individual log files. This can be useful for watching multiple logs at once in different terminal windows.
sudo tail -f /var/log/open5gs/mme.log
What to Look For:
The most important startup event is the MME successfully connecting to the HSS to be able to authenticate subscribers. In the MME log (viewed with either journalctl or tail), you should look for lines that indicate:
- The MME has initialized its S1AP interface (the interface that connects to the base station).
- The MME has successfully established a connection to the HSS.
The video you just watched also points out these key log entries.
Let's revisit the same video. After checking the service status, the presenter immediately inspects the MME log to find evidence of a successful startup.
Watch the segment from 06:45 to 07:33. The presenter uses journalctl to view the MME log and points out the crucial 'MME initialize done' and 'HSS is connected' messages. This is precisely what you should look for in your own logs.
For a deeper understanding of log interpretation and other verification techniques, the following resources are excellent.
Building a Personal Open-Source 5G Network
This article provides a concise guide to managing and monitoring Open5GS. It offers alternative verification methods and explains what to look for in the logs.
First, read the 'Startup Guide' section for an alternative verification command (ps aux | grep open5gs). Then, read the 'Log Files' section. It shows how to tail log files and, importantly, interprets what the log entries in the AMF (the 5G equivalent of MME), SMF, and UPF logs signify.
Step 1. LTE EPC (Evolved Packet Core) Network Setup
The Seattle Community Network guide also provides clear commands for monitoring. It's a good summary of the tools at your disposal.
Review the section 'Step 4: Start and monitor Open5GS software services'. It provides the journalctl and systemctl commands as a handy reference.
Feel free to open multiple terminal windows to tail the logs for the HSS (hss.log), MME (mme.log), and SGW-C (sgwc.log) simultaneously. This will give you a dynamic view of the system as it operates.
Conclusion
Excellent work. You have successfully launched the Open5GS core network and, more importantly, learned how to verify that it is operating correctly. By checking service statuses and inspecting log files for key handshake messages, you've confirmed that the "brain" of your private LTE network is online and ready for action.
Key Takeaways:
- The 4G EPC is composed of several distinct services (MME, HSS, SGW, etc.) that run as
systemddaemons in Open5GS. - Verification is a crucial step after launching the services. A simple
systemctl status 'open5gs-*'provides a high-level health check. - Log analysis via
journalctlor by tailing files in/var/log/open5gs/provides the definitive proof of a healthy system. - The most critical startup event to confirm in the logs is the MME's successful initialization and its connection to the HSS.
Preview of the Next Lesson:
Your core network is now running and is essentially waiting for a base station to connect to it. In the next lesson, you will start the srsENB base station and confirm its connection to the core network. This will establish the S1 link between the radio access network (our srsENB) and the core network (our Open5GS MME), bringing us one major step closer to connecting a device.