Free5GC: Install: Difference between revisions

From OnnoCenterWiki
Jump to navigationJump to search
No edit summary
No edit summary
Line 1: Line 1:
A. Prerequisites
Sumber: https://www.free5gc.org/installations/stage-1-all-in-one/
Linux Kernel Version


In order to use the UPF element, you must use the 5.0.0-23-generic or 5.4.x version of the Linux kernel. free5gc uses the gtp5g kernel module, which has been tested and compiled against that kernel versions only. If you installed Ubuntu 20.04, the version looks like 5.4.x. To determine the version of the Linux kernel you are using:
    $ uname -r
    5.4.0-65-generic
You will not be able to run most of the tests in Test section unless you deploy a UPF.


Golang Version
free5GC Installation on KVM
Minimum Requirement
Software


As noted above, free5gc is built and tested with Go 1.14.4
OS: Ubuntu 18.04
To check the version of Go on your system, from a command prompt:
Linux kernel: 4.15.0-43-generic
    go version
gcc 7.3.0
If another version of Go is installed, remove the existing version and install Go 1.14.4:
Go 1.11.4
    # this assumes your current version of Go is in the default location
QEMU emulator 2.11.1
    sudo rm -rf /usr/local/go
    wget https://dl.google.com/go/go1.14.4.linux-amd64.tar.gz
    sudo tar -C /usr/local -zxvf go1.14.4.linux-amd64.tar.gz
If Go is not installed on your system:
    wget https://dl.google.com/go/go1.14.4.linux-amd64.tar.gz
    sudo tar -C /usr/local -zxvf go1.14.4.linux-amd64.tar.gz
    mkdir -p ~/go/{bin,pkg,src}
    # The following assume that your shell is bash
    echo 'export GOPATH=$HOME/go' >> ~/.bashrc
    echo 'export GOROOT=/usr/local/go' >> ~/.bashrc
    echo 'export PATH=$PATH:$GOPATH/bin:$GOROOT/bin' >> ~/.bashrc
    echo 'export GO111MODULE=auto' >> ~/.bashrc
    source ~/.bashrc
Further information and installation instructions for golang are available at the official golang site.
Control-plane Supporting Packages


sudo apt -y update
Hardware
sudo apt -y install mongodb wget git
sudo systemctl start mongodb
WARNING: MongoDB 5.0+ requires a CPU with AVX support. Or downgrade your MongoDB to 4.4


see https://www.mongodb.com/community/forums/t/mongodb-5-0-cpu-intel-g4650-compatibility/116610/2
CPU: Intel i5 processor
RAM: 4GB
Hard drive: 160G
NIC card: 1Gbps ethernet card


see also docker-library/mongo#485 (comment)
Hardware recommended


User-plane Supporting Packages
  CPU: Intel i7 processor
sudo apt -y update
  RAM: 8GB
sudo apt -y install git gcc g++ cmake autoconf libtool pkg-config libmnl-dev libyaml-dev
  Hard drive: 160G
Linux Host Network Settings
  NIC card: 10Gbps ethernet card
  sudo sysctl -w net.ipv4.ip_forward=1
  sudo iptables -t nat -A POSTROUTING -o <dn_interface> -j MASQUERADE
  sudo iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1400
  sudo systemctl stop ufw


B. Install Control Plane Elements
Hardware Tested
Clone the free5GC repository


To install the latest stable build (v3.2.1):
eNB
    cd ~
    git clone --recursive -b v3.2.1 -j `nproc` https://github.com/free5gc/free5gc.git
    cd free5gc
(Alternatively) to install the latest nightly build:
    cd ~/free5gc
    git checkout main
    git submodule sync
    git submodule update --init --jobs `nproc`
    git submodule foreach git checkout main
    git submodule foreach git pull --jobs `nproc`
Compile network function services in free5gc


To do so individually (e.g., AMF only):
WNC OSQ4G-01E2, 3GPP Rel-13 compliance (4G LTE Small Cell)
    cd ~/free5gc
D-Link DWR-1012, 3GPP Rel-12 compliance (4G LTE Small Cell)
    make amf
GemTek WLTGFC-101, 3GPP Rel-9 compliance (4G LTE Small Cell)
To build all network functions:
    cd ~/free5gc
    make


C. Install User Plane Function (UPF)
UE
As noted above, the GTP kernel module used by the UPF requires that you use Linux kernel version 5.0.0-23-generic or 5.4.x. To verify your version:
uname -r
Retrieve the 5G GTP-U kernel module using git and build it
git clone https://github.com/free5gc/gtp5g.git
cd gtp5g
make
sudo make install
Build the UPF (you may skip this step if you built all network functions above):


to build using make:
LG C90 cellular phone
  cd ~/free5gc
D-Link DWR-932C dongle via USB cable
  make upf
 
Customize the UPF as desired. The UPF configuration file in run.sh is free5gc/config/upfcfg.yaml.
Preparation
KVM Environment Setup
VM NIC Cards
NIC for connecting to the Internet
Network source: Virtual network - NAT
Interface name in VM: ens3 (in this example)
NIC for connecting to eNB:
Network source: Host device <Host Interface Name>
Interface name in VM: ens4 (in this example)
Collect eNodeB and USIM Information
 
eNodeB information (in this example)
 
  IP Address: 192.188.2.1
Gateway:    192.188.2.2 (IP of NIC connected to eNB)
PLMN:
  MCC: 208
  MNC: 93
MME GID:  1
MME Code: 1
TAC: 1
 
USIM information (in this example)
 
IMSI 208930000000003
K    8baf473f2f8fd09487cccbd7097c6862
  OPc  8e27b6af0e692e750f32667a3b14605d
 
Installation
Please follow the instructions from Part A ~ Part C.
 
Part A. Compile Source Code
Prerequisites
Install MongoDB 3.6.3, Golang 1.11.4.


D. Install WebConsole
Before building WebConsole, install nodejs and yarn packages first:
sudo apt remove cmdtest
sudo apt remove yarn
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
  sudo apt-get update
  sudo apt-get update
  sudo apt-get install -y nodejs yarn
  sudo apt-get -y install mongodb wget git
  Build WebConsole
sudo systemctl start mongodb (if '/usr/bin/mongod' is not running)
 
# Check if golang is installed
 
go version
 
# If not, run commands below
 
wget -q https://storage.googleapis.com/golang/getgo/installer_linux
chmod +x installer_linux
./installer_linux
source ~/.bash_profile
rm -f installer_linux
 
go get -u -v "github.com/gorilla/mux"
go get -u -v "golang.org/x/net/http2"
go get -u -v "golang.org/x/sys/unix"
 
To run free5GC with least privilege, TUN device permission should be a crw-rw-rw-(666).
 
ls -al /dev/net/tun
crw-rw-rw- 1 root root 10, 200 Jan 14 13:09 /dev/net/tun
 
Write the configuration file for the TUN device.
 
sudo sh -c "cat << EOF > /etc/systemd/network/99-free5gc.netdev
[NetDev]
Name=uptun
Kind=tun
EOF"
 
sudo systemctl enable systemd-networkd
sudo systemctl restart systemd-networkd
 
Check IPv6 Kernel Configuration. Although you can skip this step, we suggest that you set this up to support IPv6-enabled UE.
 
sysctl -n net.ipv6.conf.uptun.disable_ipv6
 
(if the output is 0 and IPv6 is enabled, skip the followings)
 
sudo sh -c "echo 'net.ipv6.conf.uptun.disable_ipv6=0' > /etc/sysctl.d/30-free5gc.conf"
sudo sysctl -p /etc/sysctl.d/30-free5gc.conf
 
You are now ready to set the IP address on TUN device. If IPv6 is disabled for TUN device, please remove Address=cafe::1/64 from below.
 
sudo sh -c "cat << EOF > /etc/systemd/network/99-free5gc.network
[Match]
Name=uptun
[Network]
Address=45.45.0.1/16
Address=cafe::1/64
EOF"
 
sudo systemctl enable systemd-networkd
sudo systemctl restart systemd-networkd
 
Add the following lines into /etc/network/interfaces for network-manager service
 
auto uptun
iface uptun inet static 
address 45.45.0.1
netmask 255.255.0.0
iface uptun inet6 static
pre-up modprobe ipv6
address cafe::1
netmask 64
Restart uptun interface
 
sudo ip a flush uptun
sudo systemctl restart networking
 
# Check if uptun is up
 
sudo apt-get -y install net-tools
ifconfig uptun
 
AMF, SMF, UPF, HSS, and PCRF
Install the depedencies for building the source
 
sudo apt-get -y install autoconf libtool gcc pkg-config git flex bison libsctp-dev libgnutls28-dev libgcrypt-dev libssl-dev
libidn11-dev libmongoc-dev libbson-dev libyaml-dev
 
Git clone and compile
 
git clone https://bitbucket.org/nctu_5g/free5gc-stage-1.git
cd free5gc-stage-1
autoreconf -iv
./configure --prefix=`pwd`/install
make -j `nproc`
make install
 
Part B. VM Internal Network Environment Setting
[Option 1] Need to run on every boot
 
sudo ifconfig ens4 192.188.2.2
sudo sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
sudo iptables -I INPUT -i uptun -j ACCEPT
 
[Option 2] or configure as auto run on boot
 
sudo sh -c "cat << EOF > /etc/init.d/ngc-network-setup
#!/bin/sh
### BEGIN INIT INFO
# Provides:          ngc-network-setup
# Required-Start:    networkd
# Required-Stop:    networkd
# Default-Start:    networkd
# Default-Stop:      networkd
# Short-Description:
# Description:
#
### END INIT INFO
ifconfig ens4 192.188.2.2
sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
iptables -I INPUT -i uptun -j ACCEPT
EOF"
sudo chmod 755 /etc/init.d/ngc-network-setup
sudo /etc/init.d/ngc-network-setup
sudo ln -s /etc/init.d/ngc-network-setup /etc/rc3.d/S99ngc-network-setup
sudo ln -s /etc/init.d/ngc-network-setup /etc/rc4.d/S99ngc-network-setup
sudo ln -s /etc/init.d/ngc-network-setup /etc/rc5.d/S99ngc-network-setup
 
Part C. Run
Run in all-in-one mode
The daemon free5gc-ngcd includes AMF, SMF, UPF, HSS, and PCRF. Thus, instead of running all 5 daemons, you can just run free5gc-ngcd in your development environment.
 
./free5gc-ngcd
 
While running free5gc-ngcd
All logs for AMF, SMF, UPF, HSS, and PCRF are written to ./install/var/log/free5gc/free5gc.log.
All settings are managed in one place for ./install/etc/free5gc/free5gc.conf.
You can find the log/conf path at the beginning of the running screen.
You can user -f argument to specify config file to be used.
Run functions separately
We also provide 5GC functions running separately.
 
./free5gc-upfd
./free5gc-amfd
./free5gc-smfd
./nextepc-hssd
./nextepc-pcrfd
 
Note: We also provide a reference for 5GC functions running in separate machines.
 
[Optional] Self-test
We provide a program that checks whether the installation is correct. After running the wireshark, select loopback interface, and then filter s1ap || diameter || gtpv2 || gtp and run ./test/testngc. You can see the packets virtually created.
 
./test/testngc -f install/etc/free5gc/test/free5gc.testngc.conf
 
Part D. Web User Interface
Install Node.js and NPM
 
sudo apt-get -y install curl
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get -y install nodejs
 
Install the dependencies to run WebUI (first time)
 
cd webui
npm install
 
Run WebUI
 
cd webui
npm run dev
 
Now the web server is running on http://localhost:3000. The default username and password are “admin” and “1423”.
 
Core Network Configuration
free5GC configuration file
Modify ./install/etc/free5gc/free5gc.conf
 
amf-slap address (line 67)
 
amf:
  s1ap:
    addr: <IP of GW NIC to eNB: 192.188.2.2>
 
upf-gtpu address (line 162)
 
smf:
  upf:
    addr: <IP of GW NIC to eNB: 192.188.2.2>
 
AMF GUMMEI (line 91)
 
amf:
  gummei:
    plmn_id:
      mcc: <eNB MCC: 208>
            mnc: <eNB MNC: 93>
    mme_gid: <eNB MME GID: 1>
    mme_code: <eNB MME Code: 1>   
 
AMF TAI (line 130)
 
amf:
  tai:
    plmn_id:
      mcc: <eNB MCC: 208>
            mnc: <eNB MNC: 93>
        tac: <eNB TAC: 1>
 
Add subscriber (UE)
Add a subscriber by the Web UI
Run the web server:
 
cd ./webui && npm run dev
 
Visit http://localhost:3000
  - Username : admin
  - Password : 1423
Add a subscriber with IMSI, K, OPc
  - Go to Subscriber Menu.
  - Click `+` Button to add a new subscriber.
  - Fill the IMSI, security context(K, OPc, AMF), and APN of the subscriber.
  - Click `SAVE` Button
 
This addition will take effect immediately on free5GC without restaring any daemon.
 
Rebuild Project
To completely rebuild the project after modifying source code
 
  (Control-C kill free5gc-ngcd)
make maintainer-clean
rm -rf ./install
git pull
autoreconf -iv
./configure --prefix=`pwd`/install
make -j `nproc`
make install
./free5gc-ngcd
 
Troubleshooting
Note for modifying configuration file
Use space for indent. DO NOT use tab.
A white space must be added between the colon and value after the item name, e.g. addr: 192.188.2.2
./test/testngc test failure
 
Make sure all configuration files and environment settings are correct.
 
Kill testngc process which didn’t finish correctly
 
killall -9 testngc
 
Remove test subscriber left by previous failed test (NextEPC issue #57)
 
$ mongo
> use free5gc
> db.subscribers.find()  ### (Check the test subscriber)
> db.subscribers.drop()  ### Remove all subscriber
> db.subscribers.find()  ### (Check that all subscribers are empty)
./free5gc-ngcd errors
 
ERRR: - The certificate is expired (NextEPC issue #94)
 
cd support/freeDiameter
./make_certs.sh .
cd ../..
make install
 
Address already in use
 
$ killall -9 testngc
 
or
 
$ killall -9 free5gc-ngcd
 
Rebuild failure
 
config.status: error: cannot find input file: `Makefile.in' (NextEPC issue #68)
autoheader \
    && aclocal \
    && libtoolize --ltdl --copy --force \
    && automake --add-missing --copy \
    && autoconf \
    && ./configure
 
==Appendix A: Program the SIM Card==
 
Install packages:
 
sudo apt-get install pcscd pcsc-tools libccid python-dev swig python-setuptools python-pip libpcsclite-dev
sudo pip install pycrypto
 
Download PySIM
 
git clone git://git.osmocom.org/pysim.git
 
Change to pyscard folder and install
 
cd <pyscard-path>
sudo /usr/bin/python setup.py build_ext install
 
Verify your reader is ready
 
sudo pcsc_scan
 
Check whether your reader can read the SIM card
 
cd <pysim-path>
./pySim-read.py –p 0
 
Program your SIM card information
 
./pySim-prog.py -p 0 -x 208 -y 93 -t sysmoUSIM-SJS1 -i 208930000000003 --op=8e27b6af0e692e750f32667a3b14605d -k 8baf473f2f8fd09487cccbd7097c6862 -s 8988211000000088313 -a 23605945
 
You can get your SIM card from sysmocom. You also need a card reader to write your SIM card. You can get a card reader from here or equivalent device will do.
 
==Referensi==
 
* https://www.free5gc.org/installations/stage-1-all-in-one/


to build using make:
==Pranala Menarik==
cd ~/free5gc
make webconsole
(Alternatively) to build manually:
cd ~/free5gc/webconsole/frontend
yarn install
yarn build
rm -rf ../public
cp -R build ../public
cd ..
go build -o bin/webconsole server.go


Note: 2GB or more of OS memory is recommended. WebConsole may be failed to build if memory is less then 1GB.
* [[5G]]

Revision as of 04:25, 9 December 2022

Sumber: https://www.free5gc.org/installations/stage-1-all-in-one/


free5GC Installation on KVM Minimum Requirement Software

OS: Ubuntu 18.04
Linux kernel: 4.15.0-43-generic
gcc 7.3.0
Go 1.11.4
QEMU emulator 2.11.1

Hardware

CPU: Intel i5 processor
RAM: 4GB
Hard drive: 160G
NIC card: 1Gbps ethernet card

Hardware recommended

CPU: Intel i7 processor
RAM: 8GB
Hard drive: 160G
NIC card: 10Gbps ethernet card

Hardware Tested

eNB

WNC OSQ4G-01E2, 3GPP Rel-13 compliance (4G LTE Small Cell)
D-Link DWR-1012, 3GPP Rel-12 compliance (4G LTE Small Cell)
GemTek WLTGFC-101, 3GPP Rel-9 compliance (4G LTE Small Cell)

UE

LG C90 cellular phone
D-Link DWR-932C dongle via USB cable

Preparation KVM Environment Setup VM NIC Cards NIC for connecting to the Internet Network source: Virtual network - NAT Interface name in VM: ens3 (in this example) NIC for connecting to eNB: Network source: Host device <Host Interface Name> Interface name in VM: ens4 (in this example) Collect eNodeB and USIM Information

eNodeB information (in this example)

IP Address: 192.188.2.1
Gateway:    192.188.2.2 (IP of NIC connected to eNB)
PLMN:
  MCC: 208
  MNC: 93
MME GID:  1
MME Code: 1
TAC: 1

USIM information (in this example)

IMSI 208930000000003
K    8baf473f2f8fd09487cccbd7097c6862
OPc  8e27b6af0e692e750f32667a3b14605d

Installation Please follow the instructions from Part A ~ Part C.

Part A. Compile Source Code Prerequisites Install MongoDB 3.6.3, Golang 1.11.4.

sudo apt-get update
sudo apt-get -y install mongodb wget git
sudo systemctl start mongodb (if '/usr/bin/mongod' is not running)
  1. Check if golang is installed
go version
  1. If not, run commands below
wget -q https://storage.googleapis.com/golang/getgo/installer_linux
chmod +x installer_linux
./installer_linux
source ~/.bash_profile
rm -f installer_linux
go get -u -v "github.com/gorilla/mux"
go get -u -v "golang.org/x/net/http2"
go get -u -v "golang.org/x/sys/unix"

To run free5GC with least privilege, TUN device permission should be a crw-rw-rw-(666).

ls -al /dev/net/tun
crw-rw-rw- 1 root root 10, 200 Jan 14 13:09 /dev/net/tun

Write the configuration file for the TUN device.

sudo sh -c "cat << EOF > /etc/systemd/network/99-free5gc.netdev
[NetDev]
Name=uptun
Kind=tun
EOF"
sudo systemctl enable systemd-networkd
sudo systemctl restart systemd-networkd

Check IPv6 Kernel Configuration. Although you can skip this step, we suggest that you set this up to support IPv6-enabled UE.

sysctl -n net.ipv6.conf.uptun.disable_ipv6

(if the output is 0 and IPv6 is enabled, skip the followings)

sudo sh -c "echo 'net.ipv6.conf.uptun.disable_ipv6=0' > /etc/sysctl.d/30-free5gc.conf"
sudo sysctl -p /etc/sysctl.d/30-free5gc.conf

You are now ready to set the IP address on TUN device. If IPv6 is disabled for TUN device, please remove Address=cafe::1/64 from below.

sudo sh -c "cat << EOF > /etc/systemd/network/99-free5gc.network
[Match]
Name=uptun
[Network]
Address=45.45.0.1/16
Address=cafe::1/64
EOF"
sudo systemctl enable systemd-networkd
sudo systemctl restart systemd-networkd

Add the following lines into /etc/network/interfaces for network-manager service

auto uptun
iface uptun inet static  
	address 45.45.0.1 
	netmask 255.255.0.0

iface uptun inet6 static
	pre-up modprobe ipv6 
	address cafe::1
	netmask 64

Restart uptun interface

sudo ip a flush uptun
sudo systemctl restart networking
  1. Check if uptun is up
sudo apt-get -y install net-tools
ifconfig uptun

AMF, SMF, UPF, HSS, and PCRF Install the depedencies for building the source

sudo apt-get -y install autoconf libtool gcc pkg-config git flex bison libsctp-dev libgnutls28-dev libgcrypt-dev libssl-dev 
libidn11-dev libmongoc-dev libbson-dev libyaml-dev

Git clone and compile

git clone https://bitbucket.org/nctu_5g/free5gc-stage-1.git
cd free5gc-stage-1
autoreconf -iv
./configure --prefix=`pwd`/install
make -j `nproc`
make install

Part B. VM Internal Network Environment Setting [Option 1] Need to run on every boot

sudo ifconfig ens4 192.188.2.2
sudo sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
sudo iptables -I INPUT -i uptun -j ACCEPT

[Option 2] or configure as auto run on boot

sudo sh -c "cat << EOF > /etc/init.d/ngc-network-setup
#!/bin/sh
### BEGIN INIT INFO
# Provides:          ngc-network-setup
# Required-Start:    networkd
# Required-Stop:     networkd
# Default-Start:     networkd
# Default-Stop:      networkd
# Short-Description:
# Description:
#
### END INIT INFO

ifconfig ens4 192.188.2.2
sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
iptables -I INPUT -i uptun -j ACCEPT
EOF"

sudo chmod 755 /etc/init.d/ngc-network-setup
sudo /etc/init.d/ngc-network-setup

sudo ln -s /etc/init.d/ngc-network-setup /etc/rc3.d/S99ngc-network-setup
sudo ln -s /etc/init.d/ngc-network-setup /etc/rc4.d/S99ngc-network-setup
sudo ln -s /etc/init.d/ngc-network-setup /etc/rc5.d/S99ngc-network-setup

Part C. Run Run in all-in-one mode The daemon free5gc-ngcd includes AMF, SMF, UPF, HSS, and PCRF. Thus, instead of running all 5 daemons, you can just run free5gc-ngcd in your development environment.

./free5gc-ngcd

While running free5gc-ngcd All logs for AMF, SMF, UPF, HSS, and PCRF are written to ./install/var/log/free5gc/free5gc.log. All settings are managed in one place for ./install/etc/free5gc/free5gc.conf. You can find the log/conf path at the beginning of the running screen. You can user -f argument to specify config file to be used. Run functions separately We also provide 5GC functions running separately.

./free5gc-upfd
./free5gc-amfd
./free5gc-smfd
./nextepc-hssd
./nextepc-pcrfd

Note: We also provide a reference for 5GC functions running in separate machines.

[Optional] Self-test We provide a program that checks whether the installation is correct. After running the wireshark, select loopback interface, and then filter s1ap || diameter || gtpv2 || gtp and run ./test/testngc. You can see the packets virtually created.

./test/testngc -f install/etc/free5gc/test/free5gc.testngc.conf

Part D. Web User Interface Install Node.js and NPM

sudo apt-get -y install curl
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get -y install nodejs

Install the dependencies to run WebUI (first time)

cd webui
npm install

Run WebUI

cd webui
npm run dev

Now the web server is running on http://localhost:3000. The default username and password are “admin” and “1423”.

Core Network Configuration free5GC configuration file Modify ./install/etc/free5gc/free5gc.conf

amf-slap address (line 67)

amf:
  s1ap:
    addr: <IP of GW NIC to eNB: 192.188.2.2>

upf-gtpu address (line 162)

smf:
  upf:
    addr: <IP of GW NIC to eNB: 192.188.2.2>

AMF GUMMEI (line 91)

amf:
  gummei:
    plmn_id:
      mcc: <eNB MCC: 208>
            mnc: <eNB MNC: 93>
    mme_gid: <eNB MME GID: 1>
    mme_code: <eNB MME Code: 1>    

AMF TAI (line 130)

amf:
  tai:
    plmn_id:
      mcc: <eNB MCC: 208>
            mnc: <eNB MNC: 93>
        tac: <eNB TAC: 1>

Add subscriber (UE) Add a subscriber by the Web UI Run the web server:

cd ./webui && npm run dev

Visit http://localhost:3000

 - Username : admin
 - Password : 1423

Add a subscriber with IMSI, K, OPc

 - Go to Subscriber Menu.
 - Click `+` Button to add a new subscriber.
 - Fill the IMSI, security context(K, OPc, AMF), and APN of the subscriber.
 - Click `SAVE` Button

This addition will take effect immediately on free5GC without restaring any daemon.

Rebuild Project To completely rebuild the project after modifying source code

(Control-C kill free5gc-ngcd)
make maintainer-clean
rm -rf ./install
git pull
autoreconf -iv
./configure --prefix=`pwd`/install
make -j `nproc`
make install
./free5gc-ngcd

Troubleshooting Note for modifying configuration file Use space for indent. DO NOT use tab. A white space must be added between the colon and value after the item name, e.g. addr: 192.188.2.2

./test/testngc test failure

Make sure all configuration files and environment settings are correct.

Kill testngc process which didn’t finish correctly

killall -9 testngc

Remove test subscriber left by previous failed test (NextEPC issue #57)

$ mongo
> use free5gc
> db.subscribers.find()  ### (Check the test subscriber)
> db.subscribers.drop()  ### Remove all subscriber
> db.subscribers.find()  ### (Check that all subscribers are empty)
./free5gc-ngcd errors

ERRR: - The certificate is expired (NextEPC issue #94)

cd support/freeDiameter
./make_certs.sh .
cd ../..
make install

Address already in use

$ killall -9 testngc

or

$ killall -9 free5gc-ngcd

Rebuild failure

config.status: error: cannot find input file: `Makefile.in' (NextEPC issue #68)
autoheader \
    && aclocal \
    && libtoolize --ltdl --copy --force \
    && automake --add-missing --copy \
    && autoconf \
    && ./configure

Appendix A: Program the SIM Card

Install packages:

sudo apt-get install pcscd pcsc-tools libccid python-dev swig python-setuptools python-pip libpcsclite-dev
sudo pip install pycrypto

Download PySIM

git clone git://git.osmocom.org/pysim.git

Change to pyscard folder and install

cd <pyscard-path>
sudo /usr/bin/python setup.py build_ext install

Verify your reader is ready

sudo pcsc_scan

Check whether your reader can read the SIM card

cd <pysim-path>
./pySim-read.py –p 0

Program your SIM card information

./pySim-prog.py -p 0 -x 208 -y 93 -t sysmoUSIM-SJS1 -i 208930000000003 --op=8e27b6af0e692e750f32667a3b14605d -k 8baf473f2f8fd09487cccbd7097c6862 -s 8988211000000088313 -a 23605945

You can get your SIM card from sysmocom. You also need a card reader to write your SIM card. You can get a card reader from here or equivalent device will do.

Referensi

Pranala Menarik