... | ... | @@ -6,7 +6,10 @@ In this tutorial, we will describe how to connect a commercial off-the-self UE ( |
|
|
|
|
|
The present tutorial describes how to deploy and run OAI EPC, OAI eNB and OAI RRH GW on different hosts as depicted in the following figure:
|
|
|
|
|
|
![topology.png](HowToConnectCOTSUEwithOAIeNBviaRRHGW/topology.png)
|
|
|
|
|
|
![topology_wiki.png](HowToConnectCOTSUEwithOAIeNBviaRRHGW/topology_wiki.png)
|
|
|
|
|
|
Figure 1.: OAI RRH GW, OAI eNB and OAI EPC+HSS on different hosts
|
|
|
|
|
|
At this point, we have to note that the OAI RRH GW in its simplest form is defaulted to a single RRH which in this tutorial is a USRP-B210-based RRH.
|
|
|
|
... | ... | @@ -31,21 +34,25 @@ not contain the latest UHD. The OAI build script will try to download the latest |
|
|
automated installation and compilation may fail due to the conflict or missing libraries. So
|
|
|
the simplest way is to uninstall GNURadio and outdated UHD libraries.
|
|
|
|
|
|
The tutorial set up is depicted once more in the following figure, this time containing interconnection information (i.e. IP addesses and Ethernet interface names) that will be used in certain configuration files.
|
|
|
|
|
|
![topology_wiki_if_info.png](HowToConnectCOTSUEwithOAIeNBviaRRHGW/topology_wiki_if_info.png)
|
|
|
|
|
|
Figure 2.: OAI RRH GW, OAI eNB and OAI EPC+HSS on different hosts (interface information included)
|
|
|
|
|
|
## 1. Installation and Configuration of OAI EPC + HSS
|
|
|
|
|
|
### 1.1 Installation
|
|
|
|
|
|
#### Step 1: Check out the Trunk
|
|
|
|
|
|
First, we will download source codes from the link below as an example. See [GetSources](GetSources).
|
|
|
|
|
|
We assume that you have following directory:
|
|
|
Download the source code from the appropriate Git repository (see [GetSources](GetSources)).We assume that you have following directory:
|
|
|
|
|
|
openair-cn : The location of openair-cn git repository
|
|
|
|
|
|
#### Step 2: Specify FQDN for EPC
|
|
|
|
|
|
Second, a fully qualified domain name (FQDN) needs to be set for the EPC (MME_GW) [\[1\]][1], before we use
|
|
|
A fully qualified domain name (FQDN) needs to be set for the EPC (MME_GW) [\[1\]][1], before we use
|
|
|
the automated script to build eNB, EPC and HSS all at once. An example is as follows. Assume the
|
|
|
hostname is "labuser". You may check it in `/etc/hostname`.
|
|
|
|
... | ... | @@ -78,7 +85,15 @@ Look at [AutoBuild](AutoBuild) for more details. |
|
|
|
|
|
#### Step 1: Edit the EPC configuration file: `~/openair-cn/BUILD/EPC/epc.conf.in`
|
|
|
|
|
|
Next, we explain the setup for running eNB and EPC+HSS on two different hosts. Assume the IP addresses of eNB and EPC+HSS are 192.168.100.102 and 192.168.100.103. Figure 2 is an example which specifies the network topology.
|
|
|
As depicted in Figure 2 the IP addresse of EPC+HSS is `192.168.12.4` and the Ethernet interface name is `eth0`. Also we assume that the UE that will be used will be configured with the following information ([SIMInfo](SIMInfo)):
|
|
|
* MCC (Mobile Country Code): `208`
|
|
|
* MNC (Mobile Network Code): `93`
|
|
|
* TAC (Tracking Area Code): `123`
|
|
|
* IMSI: 208930000000001
|
|
|
* Ki: 8BAF473F2F8FD09487CCCBD7097C6862 (32 digits)
|
|
|
* OP (Operator Key): 11111111111111111111111111111111 (32 digits)
|
|
|
|
|
|
Using this information the configuration file of EPC is edidted as follows:
|
|
|
|
|
|
|
|
|
```
|
... | ... | @@ -89,8 +104,8 @@ TAI_LIST = ( |
|
|
|
|
|
NETWORK_INTERFACES :
|
|
|
{
|
|
|
MME_INTERFACE_NAME_FOR_S1_MME = "eth1";
|
|
|
MME_IPV4_ADDRESS_FOR_S1_MME = "192.168.100.103/24";
|
|
|
MME_INTERFACE_NAME_FOR_S1_MME = "eth0";
|
|
|
MME_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.4/24";
|
|
|
|
|
|
MME_INTERFACE_NAME_FOR_S11_MME = "none";
|
|
|
MME_IPV4_ADDRESS_FOR_S11_MME = "0.0.0.0/24";
|
... | ... | @@ -102,8 +117,8 @@ S-GW : |
|
|
SGW_INTERFACE_NAME_FOR_S11 = "none";
|
|
|
SGW_IPV4_ADDRESS_FOR_S11 = "0.0.0.0/24";
|
|
|
|
|
|
SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP = "eth1";
|
|
|
SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP = "192.168.100.103/24";
|
|
|
SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP = "eth0";
|
|
|
SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP = "192.168.12.4/24";
|
|
|
SGW_IPV4_PORT_FOR_S1U_S12_S4_UP = 2152;
|
|
|
|
|
|
SGW_INTERFACE_NAME_FOR_S5_S8_UP = "none";
|
... | ... | @@ -117,8 +132,8 @@ P-GW : |
|
|
PGW_INTERFACE_NAME_FOR_S5_S8 = "none";
|
|
|
PGW_IPV4_ADDRESS_FOR_S5_S8 = "0.0.0.0/24";
|
|
|
|
|
|
PGW_INTERFACE_NAME_FOR_SGI = "eth1";
|
|
|
PGW_IPV4_ADDRESS_FOR_SGI = "192.168.100.103/24";
|
|
|
PGW_INTERFACE_NAME_FOR_SGI = "eth0";
|
|
|
PGW_IPV4_ADDRESS_FOR_SGI = "192.168.12.4/24";
|
|
|
PGW_MASQUERADE_SGI = "yes";
|
|
|
};
|
|
|
...
|
... | ... | @@ -147,7 +162,7 @@ cd SCRIPTS |
|
|
./run_hss
|
|
|
```
|
|
|
|
|
|
EPC should be able to connect to HSS and you should see both enter STATE_OPEN in the terminal.
|
|
|
EPC should be able to connect to HSS and you should see both enter STATE_OPEN in the terminal.The OAI core network is up and running.
|
|
|
|
|
|
## 2. Installation and Configuration of OAI RRH GW
|
|
|
|
... | ... | @@ -155,48 +170,74 @@ EPC should be able to connect to HSS and you should see both enter STATE_OPEN in |
|
|
|
|
|
#### Step 1: Check out the Trunk
|
|
|
|
|
|
First, we will download source codes from the link below as an example. See [GetSources](GetSources).
|
|
|
|
|
|
We assume that you have following directory:
|
|
|
Download the source code from the appropriate Git repository (see [GetSources](GetSources)). We assume that you have following directory:
|
|
|
|
|
|
openairinterface5g: The location of openairinterface5g repository.
|
|
|
|
|
|
#### Step 2: Run automated script for OAI RRH GW
|
|
|
|
|
|
```shell
|
|
|
cd ~/openairinterface
|
|
|
source oaienv
|
|
|
cd cmake_targets
|
|
|
./build_oai -I -g --RRH --install-system-files -w USRP --install-optional-packages```
|
|
|
./build_oai -I -g --RRH --install-system-files -w USRP -t ETHERNET --install-optional-packages #for USRP
|
|
|
./build_oai -I -g --RRH --install-system-files -w BLADERF -t ETHERNET --install-optional-packages #for BladeRF
|
|
|
```
|
|
|
|
|
|
Look at [AutoBuild](AutoBuild) for more details.
|
|
|
You can print out the help message to see what these options mean using the command "./build_oai -h". A short summary is as follows.
|
|
|
|
|
|
* -I: installs required packages.
|
|
|
* -g: adds debugging symbols to compilation directives.
|
|
|
* --RRH: installs RRH GW, i.e., rrh_gw.
|
|
|
* --install-system-files: installs OAI required files in Linux system.
|
|
|
* -w: adds the hardware support, which is USRP in our case.
|
|
|
* -t: adds fronthaul trasport protocol support (currently only ETHERNET is supported)
|
|
|
* --install-optional-packages: Installs optional packages
|
|
|
|
|
|
__Notes:__
|
|
|
* If you have previously build OAI on your host, please use -c or -C to remove existing compiled files.
|
|
|
* During the building process, you will be asked to set the password for MySQL "root" user. You are recommended to use "linux", since this is the default password used by OAI; otherwise, you will have to edit some configuration file so that HSS is able to access MySQL database.
|
|
|
|
|
|
Look at [AutoBuild](AutoBuild) for more details.
|
|
|
|
|
|
#### 2.2 Configuration and execution
|
|
|
|
|
|
RRH GW is configured via input arguements.
|
|
|
#### Step 1: Run RRH GW
|
|
|
|
|
|
All the required configuration for RRH GW is given via input arguments which will be adjusted with respect to the following:
|
|
|
* we assume that `UDP` will be used as the tarsport protocol in the link between RRH GW and eNB
|
|
|
* only `one` eNB will be connected to RRH GW (see Figure 1)
|
|
|
* RRH GW will have a radio front end equipment (USRPB210) attached to it, so there is `no emulation operation` (see Figure 1)
|
|
|
* the name of the Ethernet interface for RRH GW is `eth0` (see Figure 2).
|
|
|
|
|
|
##### Compile & Run RRH GW:
|
|
|
|
|
|
```shell
|
|
|
cd ~/openairinterface5g
|
|
|
source oaienv
|
|
|
./cmake_targets/build_oai -w USRP -t ETHERNET -c --RRH
|
|
|
./cmake_targets/build_oai -w USRP -t ETHERNET --RRH -c
|
|
|
cd cmake_targets/rrh_gw/build
|
|
|
sudo -E ./rrh_gw -i ethx -m1 -x
|
|
|
sudo -E ./rrh_gw -n1 -i eth0 -m0 -x
|
|
|
sudo -E ./rrh_gw -h #(to see help options)
|
|
|
```
|
|
|
You may print out the help message to see other options. A summary of the above options follows.
|
|
|
* -i: name of ethernet interface used
|
|
|
* -n: number of eNBs that will be connected to RRH GW (in this case is 1)
|
|
|
* -i: name of the RRH GW Ethernet interface (in this case the name is "eth0")
|
|
|
* -m: choose between UDP and RAW version of Ethernet (UDP:0 RAW:1)
|
|
|
* -t: periodically print round trip time measurements
|
|
|
* -x: choose between real time or emulated operation
|
|
|
* -x: choose between real time or emulated operation (in this case real time operation is used)
|
|
|
|
|
|
__Note__: some other options are very useful for debugging purposes, such as `-v`, which enables VCD and generates a log file (/tmp/openair_dump_rrh.vcd) with a lot of details and `-g9` which sets logging information to debug level. Finally, there is the option `-t`, which prints periodic round trip delay measurements between RRH GW and eNB. Since all three of them consume computing resources (e.g. VCD is heavy on file accesss), you are recommended to disable them for normal use.
|
|
|
|
|
|
When OAI RRH GW is successfully connected, you should see something like the following on eNB terminal:
|
|
|
When OAI RRH GW is up waiting for a connection from the eNB, you should see something like the following:
|
|
|
|
|
|
```
|
|
|
...
|
|
|
|
|
|
TYPE <CTRL-C> TO TERMINATE
|
|
|
[RRH][I]eth0: IP address: 192.168.12.1
|
|
|
[RRH][I]UDP mode selected for ethenet.
|
|
|
[ETHERNET]: Initializing openair0_device for RRH ...
|
|
|
[RRH] has loaded ETHERNET trasport protocol.
|
|
|
[RRH] local ip addr 192.168.12.1 port 50000
|
|
|
[RRH] binding mod_0 to 192.168.12.1:50000
|
|
|
```
|
|
|
|
|
|
## 3. Installation and Configuration of OAI eNB
|
... | ... | @@ -204,10 +245,8 @@ TYPE <CTRL-C> TO TERMINATE |
|
|
### 3.1 Installation
|
|
|
|
|
|
#### Step 1: Check out the Trunk
|
|
|
Download the source code from the appropriate Git repository (see [GetSources](GetSources)). We assume that you have following directory:
|
|
|
|
|
|
First, we will download source codes from the link below as an example. See [GetSources](GetSources).
|
|
|
|
|
|
We assume that you have following directory:
|
|
|
openairinterface5g: The location of openairinterface5g repository.
|
|
|
|
|
|
#### Step 2: Run automated build script (openairinterface5g)
|
... | ... | @@ -216,9 +255,8 @@ openairinterface5g: The location of openairinterface5g repository. |
|
|
cd ~/openairinterface
|
|
|
source oaienv
|
|
|
cd cmake_targets
|
|
|
./build_oai -I -g --eNB -x --install-system-files -w USRP --install-optional-packages```
|
|
|
|
|
|
During the building process, you will be asked to set the password for MySQL "root" user. You are recommended to use "linux", since this is the default password used by OAI; otherwise, you will have to edit some configuration file so that HSS is able to access MySQL database.
|
|
|
./build_oai -I -g --eNB -x --install-system-files -w None -t ETHERNET --install-optional-packages
|
|
|
```
|
|
|
|
|
|
You can print out the help message to see what these options mean using the command "./build_oai -h". A short summary is as follows.
|
|
|
|
... | ... | @@ -227,17 +265,28 @@ You can print out the help message to see what these options mean using the comm |
|
|
* --eNB: installs eNB, i.e., lte-softmodem.
|
|
|
* -x: adds a software oscilloscope feature to the produced binaries.
|
|
|
* --install-system-files: installs OAI required files in Linux system.
|
|
|
* -w: adds the hardware support, which is USRP in our case.
|
|
|
* -w: adds the hardware support, which is None in our case (radio hardware support is associated with RRH GW).
|
|
|
* -t: adds fronthaul trasport protocol support (currently only ETHERNET is supported)
|
|
|
* --install-optional-packages: Installs optional packages
|
|
|
|
|
|
__Notes:__
|
|
|
* If you have previously build OAI on your host, please use -c or -C to remove existing compiled files.
|
|
|
* During the building process, you will be asked to set the password for MySQL "root" user. You are recommended to use "linux", since this is the default password used by OAI; otherwise, you will have to edit some configuration file so that HSS is able to access MySQL database.
|
|
|
|
|
|
Look at [AutoBuild](AutoBuild) for more details.
|
|
|
|
|
|
### 3.2 Configuration and execution
|
|
|
|
|
|
#### Step 1: Edit the eNB configuration file (`~/openairinterface5g/targets/PROJECT/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf`),
|
|
|
#### Step 1: Edit the eNB configuration file (`~/openairinterface5g/targets/PROJECT/GENERIC-LTE-EPC/CONF/enb.band7.tm1.rrh.usrpb210.conf`),
|
|
|
|
|
|
The file is edited appropriately with respect to Figure 2:
|
|
|
* IP address of EPC/HSS is `192.168.12.4`
|
|
|
* IP address of eNB towards EPC/HSS is `192.168.12.3` and Ethernet interface name is `eth1`
|
|
|
* IP address of eNB towards RRH GW is `192.168.12.2` and Ethernet interface name is `eth0`
|
|
|
* IP address of RRH GW is `192.168.12.1`
|
|
|
* RRH GW will have a `USRPB210` attached to it
|
|
|
|
|
|
It is assumed that `UDP` ETHERNET communication will be used and finally, we again assume that the UE that will be used will be configured with the information mentioned in `Step 1: Edit the EPC configuration file`. Using this information the configuration file of eNB is edidted as follows:
|
|
|
|
|
|
```
|
|
|
tracking_area_code = "1";
|
... | ... | @@ -246,24 +295,46 @@ mobile_network_code = "93"; |
|
|
|
|
|
|
|
|
////////// MME parameters:
|
|
|
mme_ip_address = ( { ipv4 = "192.168.100.103";
|
|
|
ipv6 = "192:168:30::17";
|
|
|
mme_ip_address = ( { ipv4 = "192.168.12.4";
|
|
|
ipv6 = "192:168:3::17";
|
|
|
active = "yes";
|
|
|
preference = "ipv4";
|
|
|
}
|
|
|
);
|
|
|
rrh_gw_config = (
|
|
|
{
|
|
|
local_if_name = "eth0";
|
|
|
remote_address = "192.168.12.1";
|
|
|
local_address = "192.168.12.2";
|
|
|
local_port = 50001; #for raw option local port must be the same to remote
|
|
|
remote_port = 50000;
|
|
|
rrh_gw_active = "yes";
|
|
|
tr_preference = "udp"
|
|
|
rf_preference = "usrp_b200";
|
|
|
iq_txshift = 4;
|
|
|
tx_sample_advance = 70;
|
|
|
tx_scheduling_advance = 9;
|
|
|
|
|
|
}
|
|
|
);
|
|
|
|
|
|
NETWORK_INTERFACES :
|
|
|
{
|
|
|
ENB_INTERFACE_NAME_FOR_S1_MME = "eth1";
|
|
|
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.100.102/24";
|
|
|
ENB_INTERFACE_NAME_FOR_S1_MME = "eth1";
|
|
|
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.3/24";
|
|
|
|
|
|
ENB_INTERFACE_NAME_FOR_S1U = "eth1";
|
|
|
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.100.102/24";
|
|
|
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
|
|
ENB_INTERFACE_NAME_FOR_S1U = "eth1";
|
|
|
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.3/24";
|
|
|
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
|
|
};
|
|
|
|
|
|
```
|
|
|
|
|
|
where mme_ip_address is network interface's IP address of your EPC/HSS, and NETWORK_INTERFACE is your eNB related network interface information.
|
|
|
__Note__: Some notes on the following parameters:
|
|
|
* iq_txshift: corresponds to the value that will be used to shift the bits of I/Q samples in TX path and is dependent on the output fromat of the radio hardware target attached to RRH GW
|
|
|
* tx_sample_advance and tx_scheduling_advance are the parameters used for timestamp adjustment between the radio hardware target and its host
|
|
|
* tx_sample_advance-> fine-grain parameter - each unit corresponds to a sample
|
|
|
* tx_scheduling_advance-> coarse-grain parameter-each unit corresponds to one packet
|
|
|
|
|
|
#### Step 2: Run eNB
|
|
|
|
... | ... | @@ -272,22 +343,16 @@ where mme_ip_address is network interface's IP address of your EPC/HSS, and NETW |
|
|
```shell
|
|
|
cd ~/openairinterface5g
|
|
|
source oaienv
|
|
|
./cmake_targets/build_oai -w None -t ETHERNET -x -c --eNB
|
|
|
./cmake_targets/build_oai -w None -t ETHERNET --eNB -x -V -c
|
|
|
cd cmake_targets/lte_build_oai/build
|
|
|
sudo -E ./lte-softmodem -O $OPENAIR_DIR/targets/PROJECT/GENERIC-LTE-EPC/CONF/enb.band7.tm1.rrh.usrpb210.conf -d
|
|
|
sudo -E ./lte-softmodem -h #(to see help options)
|
|
|
sudo -E ./lte-softmodem -O $OPENAIR_DIR/targets/PROJECT/GENERIC-LTE-EPC/CONF/enb.band7.tm1.rrh.usrpb210.conf
|
|
|
```
|
|
|
|
|
|
You may print out the help message to see other options. A summary of the above options is given below.
|
|
|
You may print out the help message (`./lte-softmodem -h`) to see other options. A summary of the above options is given below.
|
|
|
* -O: configuration file
|
|
|
* -m: set the maximum downluink MCS
|
|
|
* -t: set the maximum uplink MCS
|
|
|
* -x: set the transmission mode, valid option: 1
|
|
|
* -W: enable L2 Wireshark messages on localhost
|
|
|
|
|
|
__Note__: some other options are very useful for debugging purposes, such as `-V`, which enables VCD and generates a log file (/tnp/openair_dump_eNB.vcd) with a lot of details, and `-d`, which enables software oscilloscope with interactive graphic interfaces. Since both consume a lot of computing resources (one is heavy on file access, the other one is heavy on graphics), you are recommended to disable them for normal use.
|
|
|
__Note__: some other options are very useful for debugging purposes, such as `-V`, which enables VCD and generates a log file (/tmp/openair_dump_eNB.vcd) with a lot of details, and `-d`, which enables software oscilloscope with interactive graphic interfaces. Since both consume a lot of computing resources (one is heavy on file access, the other one is heavy on graphics), you are recommended to disable them for normal use.
|
|
|
|
|
|
When OAI eNB is successfully connected, you should see something like the following on eNB terminal:
|
|
|
When eNB is successfully connected, you should see something like the following on eNB terminal:
|
|
|
|
|
|
```
|
|
|
...
|
... | ... | @@ -299,141 +364,9 @@ TYPE <CTRL-C> TO TERMINATE |
|
|
Entering ITTI signals handler
|
|
|
```
|
|
|
|
|
|
|
|
|
## 4. UE Configuration and User Registration on HSS Database
|
|
|
|
|
|
Now eNB, EPC and HSS are working properly, and we may move to the next stage. Assume
|
|
|
that the UE or USIM card has the following information ([Link](SIMInfo)):
|
|
|
|
|
|
* MCC (Mobile Country Code): 208
|
|
|
* MNC (Mobile Network Code): 93
|
|
|
* TAC (Tracking Area Code): 123
|
|
|
* IMSI: 208930000000001
|
|
|
* Ki: 8BAF473F2F8FD09487CCCBD7097C6862 (32 digits)
|
|
|
* OP (Operator Key): 11111111111111111111111111111111 (32 digits)
|
|
|
|
|
|
You may other combinations as you like.
|
|
|
|
|
|
### 4.1 USIM Card Programming
|
|
|
|
|
|
TBD (description USIM programming device + procedure + pics)
|
|
|
|
|
|
### 4.2 UE Configuration
|
|
|
|
|
|
TBD (pics + description)
|
|
|
|
|
|
#### 4.2.1 Smartphone: Samsung S3
|
|
|
|
|
|
#### 4.2.2 Smartphone: Samsung S4 mini
|
|
|
|
|
|
You have to create a new APN profile in your smartphone according the one that
|
|
|
you will assign to the UE in the HSS database. So you have to go
|
|
|
__Settings->Mobile network settings->Access Point Names-> Add a new apn__.
|
|
|
|
|
|
Give a **name** to this apn profile (e.g. `eur`). At the **APN field** write
|
|
|
the name that exists on the HSS database (e.g. `oai.ipv4`). At the **Bearer** field check the option `LTE`.
|
|
|
|
|
|
Save the apn profile and then select it.
|
|
|
|
|
|
#### 4.2.3 LTE Dongle: Bandrich LTE Dongle C501
|
|
|
|
|
|
#### 4.2.4 LTE Dongle: Huawei E3372
|
|
|
|
|
|
For this LTE Dongle you don't have to give at commands in order to configure it but you can do it from the graphical interface that it is on the url 192.168.8.1. You have to go to Profile Management and add a new APN profile (see the picture below)
|
|
|
|
|
|
![huawei_apn.png](HowToConnectCOTSUEwithOAIeNBviaRRHGW/huawei_apn.png)
|
|
|
|
|
|
### 4.3 User Registration on HSS Database
|
|
|
|
|
|
In order for UE to complete the attach procedure successfully, we need to register the user on HSS database.
|
|
|
|
|
|
#### Step 1: Install Phpmyadmin (Optional)
|
|
|
|
|
|
In this case, phpmyadmin may come handy to you. Alternatively, you may access MySQL
|
|
|
database from the command line. The instructions are available [here](https://help.ubuntu.com/community/phpMyAdmin).
|
|
|
In most cases, the following commands will work for you.
|
|
|
|
|
|
```shell
|
|
|
sudo apt-get install phpmyadmin
|
|
|
sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
|
|
|
sudo a2enconf phpmyadmin
|
|
|
sudo /etc/init.d/apache2 reload
|
|
|
```
|
|
|
|
|
|
Then you can access the HSS database via http://127.0.0.1/phpmyadmin/ with username "**hssadmin**" and password "**admin**".
|
|
|
|
|
|
#### Step 2: Add User to Table oai_db.users
|
|
|
|
|
|
You may check out existing users in the database via phpmyadmin. However, you may not
|
|
|
be able to insert a user record on phpmyadmin, because the Key (as well as OPc) is stored
|
|
|
as binary in the database. Use the following commands as a guide.
|
|
|
|
|
|
```shell
|
|
|
shell > mysql -u root -p
|
|
|
# The password is "linux"
|
|
|
mysql > use oai_db;
|
|
|
mysql > INSERT INTO users (`imsi`, `msisdn`, `imei`, `imei_sv`, `ms_ps_status`, `rau_tau_timer`,
|
|
|
-> `ue_ambr_ul`, `ue_ambr_dl`, `access_restriction`, `mme_cap`, `mmeidentity_idmmeidentity`,
|
|
|
-> `key`, `RFSP-Index`, `urrp_mme`, `sqn`, `rand`, `OPc`)
|
|
|
-> VALUES ('208930000000001', '33638060010', NULL, NULL, 'PURGED', '120', '50000000', '100000000',
|
|
|
-> '47', '0000000000', '3', 0x8BAF473F2F8FD09487CCCBD7097C6862, '1', '0', '',
|
|
|
-> 0x00000000000000000000000000000000, '');
|
|
|
```
|
|
|
|
|
|
There are a couple of things to note:
|
|
|
|
|
|
* msisdn: even though it is optional, you may not leave it blank since OAI will check its presence (any value would be fine).
|
|
|
* OPc: OPc is computed from OP and Key. You may leave it NULL, since HSS will compute it for you; or you
|
|
|
may use the online tools listed [here](SIMInfo) to compute the value.
|
|
|
* **mmeidentity_idmmeidentity**: the value is 3 here; it has to match the one in Table oai_db.mmeidentity.
|
|
|
|
|
|
#### Step 3: Update Tables oai_db.mmeidentity and oai_db.pdn
|
|
|
|
|
|
You can directly insert a record to oai_db.mmeidentity via phpmyadmin. In this case,
|
|
|
"idmmeidentity" is 3, "mmehost" is "labuser.111.111" and "mmerealm" is "111.111".
|
|
|
|
|
|
Also, you need to insert a record to oai_db.pdn for the user via phpmyadmin.
|
|
|
|
|
|
### 4.4 Connect UE to eNB
|
|
|
|
|
|
### 4.5 Possible Issues
|
|
|
|
|
|
#### Issue 1: MNC Not Found (mcc_mnc_list)
|
|
|
|
|
|
If you choose a good combination of MCC and MNC that is not currently in the mcc_mnc_list,
|
|
|
you may see some error like the following on the EPC terminal:
|
|
|
|
|
|
```
|
|
|
...
|
|
|
Assertion (0) failed!
|
|
|
In mme_app_handle_nas_auth_param_req() /home/labuser/trunk/openair-cn/MME_APP/mme_app_authentication.c:291
|
|
|
MNC Not found (mcc_mnc_list)
|
|
|
...
|
|
|
```
|
|
|
|
|
|
So the solution is to add your own combination to the mcc_mnc_list located in `~/trunk/openair-cn/UTILS/mcc_mnc_itu.c`.
|
|
|
Then you can rebuild EPC with the following command.
|
|
|
|
|
|
```shell
|
|
|
~/openair-cn/SCRIPTS/build_epc #(Run this command with options as discussed in sections above)
|
|
|
```
|
|
|
|
|
|
#### Issue 2: iptables: No chain/target/match by that name.
|
|
|
|
|
|
```
|
|
|
...
|
|
|
iptables: No chain/target/match by that name.
|
|
|
[SPGW-APP][E]ERROR in system command iptables -t mangle -A FORWARD -d 192.168.3.2 -m mark --mark 0
|
|
|
-j GTPUSP --own-ip 127.0.0.1 --own-tun 1 --peer-ip 127.0.0.1 --peer-tun 3396329693 --action add: 256
|
|
|
at /home/labuser/trunk/openair-cn/SGW-LITE/sgw_lite_handlers.c:897
|
|
|
```
|
|
|
|
|
|
If you see an error like this, insert `~/trunk/targets/bin/xt_GTPUSP.ko`:
|
|
|
|
|
|
```shell
|
|
|
sudo insmod ~/trunk/targets/bin/xt_GTPUSP.ko
|
|
|
```
|
|
|
|
|
|
At this point we have an operating base station and core network, so it is time to configure the COTS UE and use it (see Stage 2 of [HowToConnectCOTSUEwithOAIeNB](HowToConnectCOTSUEwithOAIeNB) tutorial).
|
|
|
|
|
|
## References:
|
|
|
|
... | ... | @@ -442,15 +375,10 @@ sudo insmod ~/trunk/targets/bin/xt_GTPUSP.ko |
|
|
|
|
|
## Attachments
|
|
|
|
|
|
* [enb.band7.tm1.usrpb210.epc.local.conf](HowToConnectCOTSUEwithOAIeNBviaRRHGW/enb.band7.tm1.usrpb210.epc.local.conf)
|
|
|
* [eNB_EPC_different_hosts.png](HowToConnectCOTSUEwithOAIeNBviaRRHGW/eNB_EPC_different_hosts.png)
|
|
|
* [eNB_EPCHSS_local_host.png](HowToConnectCOTSUEwithOAIeNB/eNB_EPCHSS_local_host.png)
|
|
|
* [epc_commented.png](HowToConnectCOTSUEwithOAIeNB/epc_commented.png)
|
|
|
* [enb.band7.tm1.rrh.usrpb210.conf](HowToConnectCOTSUEwithOAIeNBviaRRHGW/enb.band7.tm1.rrh.usrpb210.conf)
|
|
|
* [epc.conf.in](HowToConnectCOTSUEwithOAIeNB/epc.conf.in)
|
|
|
* [epc.png](HowToConnectCOTSUEwithOAIeNB/epc.png)
|
|
|
* [figure_local_eNB_EPC.png](HowToConnectCOTSUEwithOAIeNB/figure_local_eNB_EPC.png)
|
|
|
* [huawei_apn.png](HowToConnectCOTSUEwithOAIeNB/huawei_apn.png)
|
|
|
* [topology_wiki.png](HowToConnectCOTSUEwithOAIeNB/topology_wiki.png)
|
|
|
* [topology_wiki_if_info.png](HowToConnectCOTSUEwithOAIeNB/topology_wiki_if_info.png)
|
|
|
|
|
|
__Acknowledge__: this example was provided by Yeoh Chun-Yeow in one previous email.
|
|
|
|
|
|
-- @Xuhang.Ying, @Virgilios.Passas - 25 Jul 2015 |
|
|
__Acknowledge__: Xuhang.Ying, Virgilios.Passas |