forked from acouzens/open5gs
Document update for 'your first LTE'
This commit is contained in:
parent
5234001b0a
commit
77955d01f8
|
@ -8,12 +8,12 @@ This post is the perfect starting point for learning to build your own LTE netwo
|
|||
### Prerequisites
|
||||
---
|
||||
|
||||
First, you have to prepare USRP B200/B210 to run srsENB. However, please keep in mind that you would still need a fairly high-end PC (at least dual-core i5, better quad-core i7) with USB 3.0 to attach the USRP B200/B210.
|
||||
First, you have to prepare USRP B200/B210 to run srsRAN. However, please keep in mind that you would still need a fairly high-end PC (at least dual-core i5, better quad-core i7) with USB 3.0 to attach the USRP B200/B210.
|
||||
|
||||
For USRP B200/B210, you can use a GPS antenna for clock synchronization. Of course, it can work without a GPS antenna, but if you have that antenna, it's a good to have a window near your desk where you can put the small GPS patch antenna. In my case, a 1 to 2 meters antenna cable is used between desk/computer and the window.
|
||||
|
||||
This document will be described with the following equipment.
|
||||
- i5-8500 PC with Ubuntu 18.04(bionic)
|
||||
- i5-8500 PC with Ubuntu 20.04(focal)
|
||||
- USRP B200/B210 with USB 3.0
|
||||
- iPhone XS
|
||||
- sysmoUSIM-SJS1
|
||||
|
@ -112,7 +112,7 @@ Done !
|
|||
### Installation
|
||||
---
|
||||
|
||||
We will use *Ubuntu 18.04(Bionic)* installed PC.
|
||||
We will use *Ubuntu 20.04(focal)* installed PC.
|
||||
{: .blue .bold}
|
||||
|
||||
#### 1. USRP Hardware Driver
|
||||
|
@ -131,9 +131,9 @@ After installing, you need to download the FPGA images packages by running _uhd
|
|||
$ sudo /usr/lib/uhd/utils/uhd_images_downloader.py
|
||||
```
|
||||
|
||||
#### 2. srsENB
|
||||
#### 2. srsRAN
|
||||
|
||||
On *Ubuntu 18.04(Bionic)*, one can install the required libraries with:
|
||||
On *Ubuntu 20.04(focal)*, one can install the required libraries with:
|
||||
|
||||
```bash
|
||||
$ sudo apt install cmake libfftw3-dev libmbedtls-dev libboost-program-options-dev libconfig++-dev libsctp-dev
|
||||
|
@ -142,11 +142,11 @@ $ sudo apt install cmake libfftw3-dev libmbedtls-dev libboost-program-options-de
|
|||
Download and build srsLTE:
|
||||
|
||||
```bash
|
||||
$ git clone https://github.com/srsLTE/srsLTE.git
|
||||
$ cd srsLTE
|
||||
$ git checkout release_19_12
|
||||
$ git clone https://github.com/srsRAN/srsRAN.git
|
||||
$ cd srsRAN
|
||||
$ git checkout release_21_04
|
||||
$ git rev-parse HEAD
|
||||
d045213fb9cbf98c83c06d7c17197a9dcbfddacf
|
||||
1c6dd8c4adc8419d4a431f382283539f1719582a
|
||||
$ mkdir build
|
||||
$ cd build
|
||||
$ cmake ../
|
||||
|
@ -161,11 +161,11 @@ The Open5GS package is available on the recent versions of *Ubuntu*.
|
|||
```bash
|
||||
# Getting the authentication key
|
||||
$ sudo apt install wget
|
||||
$ wget https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_18.04/Release.key
|
||||
$ wget https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_20.04/Release.key
|
||||
$ sudo apt-key add Release.key
|
||||
|
||||
# Installing Open5GS
|
||||
$ sudo sh -c "echo 'deb https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_18.04/ ./' > /etc/apt/sources.list.d/open5gs.list"
|
||||
$ sudo sh -c "echo 'deb https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_20.04/ ./' > /etc/apt/sources.list.d/open5gs.list"
|
||||
$ sudo apt update
|
||||
$ sudo apt install open5gs
|
||||
```
|
||||
|
@ -320,46 +320,62 @@ $ sudo ip6tables -t nat -A POSTROUTING -s 2001:230:cafe::/48 ! -o ogstun -j MASQ
|
|||
**Note:** For the first time, it is a good condition if you do not have any rules in the IP/NAT tables. If a program such as docker has already set up a rule, you will need to add a rule differently.
|
||||
{: .notice--danger}
|
||||
|
||||
#### 2. srsENB
|
||||
Change back to the srsENB source directory and copy the main config example as well as all additional config files for RR, SIB and DRB.
|
||||
#### 2. srsRAN
|
||||
Change back to the srsRAN source directory and copy the main config example as well as all additional config files for RR, SIB and DRB.
|
||||
|
||||
```bash
|
||||
$ cp srsenb/enb.conf.example srsenb/enb.conf
|
||||
$ cp srsenb/rr.conf.example srsenb/rr.conf
|
||||
$ cp srsenb/sib.conf.example srsenb/sib.conf
|
||||
$ cp srsenb/drb.conf.example srsenb/drb.conf
|
||||
$ cp srsenb/sib.conf.example srsenb/sib.conf
|
||||
$ cp srsenb/sib.conf.mbsfn.example srsenb/sib.conf.mbsfn
|
||||
```
|
||||
|
||||
You should check your phone frequency. If your phone does not support Band-3, you should use a different DL EARFCN value.
|
||||
|
||||
```diff
|
||||
--- enb.conf.example 2018-11-19 18:16:06.953631893 +0900
|
||||
+++ enb.conf 2019-04-08 11:15:18.051261318 +0900
|
||||
@@ -23,8 +23,8 @@
|
||||
cell_id = 0x01
|
||||
phy_cell_id = 1
|
||||
tac = 0x0007
|
||||
$ diff -u enb.conf.example enb.conf
|
||||
--- enb.conf.example 2021-08-23 12:00:03.975297244 +0900
|
||||
+++ enb.conf 2021-08-23 14:34:01.794290668 +0900
|
||||
@@ -19,8 +19,10 @@
|
||||
#####################################################################
|
||||
[enb]
|
||||
enb_id = 0x19B
|
||||
-mcc = 001
|
||||
-mnc = 01
|
||||
+mcc = 310
|
||||
+mnc = 789
|
||||
+#mcc = 001
|
||||
+#mnc = 01
|
||||
+mcc = 901
|
||||
+mnc = 70
|
||||
mme_addr = 127.0.1.100
|
||||
gtp_bind_addr = 127.0.1.1
|
||||
s1c_bind_addr = 127.0.1.1
|
||||
@@ -66,12 +66,13 @@
|
||||
# Default "auto". B210 USRP: 400 us, bladeRF: 0 us.
|
||||
#####################################################################
|
||||
[rf]
|
||||
-dl_earfcn = 3400
|
||||
+dl_earfcn = 1600
|
||||
@@ -65,7 +67,7 @@
|
||||
tx_gain = 80
|
||||
rx_gain = 40
|
||||
|
||||
#device_name = auto
|
||||
#device_args = auto
|
||||
+device_args="clock=external"
|
||||
#time_adv_nsamples = auto
|
||||
#burst_preamble_us = auto
|
||||
-#device_name = auto
|
||||
+device_name = auto
|
||||
|
||||
# For best performance in 2x2 MIMO and >= 15 MHz use the following device_args settings:
|
||||
# USRP B210: num_recv_frames=64,num_send_frames=64
|
||||
@@ -80,6 +82,7 @@
|
||||
# Example for ZMQ-based operation with TCP transport for I/Q samples
|
||||
#device_name = zmq
|
||||
#device_args = fail_on_disconnect=true,tx_port=tcp://*:2000,rx_port=tcp://localhost:2001,id=enb,base_srate=23.04e6
|
||||
+device_args = clock=external
|
||||
|
||||
#####################################################################
|
||||
```
|
||||
|
||||
```diff
|
||||
$ diff -u rr.conf.example rr.conf
|
||||
diff rr.conf.example rr.conf
|
||||
61c61,62
|
||||
< dl_earfcn = 3350;
|
||||
---
|
||||
> // dl_earfcn = 3350;
|
||||
> dl_earfcn = 1600;
|
||||
```
|
||||
|
||||
PLMN ID, DL EARFCN, and Device Argument are updated as belows.
|
||||
|
@ -372,14 +388,20 @@ Device Argument : Clock source from external GPS-DO
|
|||
|
||||
If you do not use the GPS-DO, you should use:
|
||||
```diff
|
||||
#device_name = auto
|
||||
-#device_args = auto
|
||||
+device_args = auto
|
||||
#time_adv_nsamples = auto
|
||||
#burst_preamble_us = auto
|
||||
$ diff -u enb.conf.example enb.conf
|
||||
--- enb.conf.example 2021-08-23 14:32:35.585438813 +0900
|
||||
+++ enb.conf 2021-08-23 14:32:08.350450409 +0900
|
||||
@@ -82,7 +82,6 @@
|
||||
# Example for ZMQ-based operation with TCP transport for I/Q samples
|
||||
#device_name = zmq
|
||||
#device_args = fail_on_disconnect=true,tx_port=tcp://*:2000,rx_port=tcp://localhost:2001,id=enb,base_srate=23.04e6
|
||||
-device_args = clock=external
|
||||
|
||||
#####################################################################
|
||||
# Packet capture configuration
|
||||
```
|
||||
|
||||
Now, run the srsENB as follows:
|
||||
Now, run the srsRAN as follows:
|
||||
|
||||
```bash
|
||||
$ cd srsenb/
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue