Amarisoft

LteSat

This tutorial is to show you how to use/operate LteSat. LteSat. ltesat is a companion software of Amarisoft eNB/gNB for any NTN scenario. It can run in two different mode : Toobox mode and Mission Control mode.

NOTE :  ltesat is supported since the 2024 March Official release and it requires license.

NOTE :  For the formal documents for ltesat, refer to ltesat.doc

Table of Contents

Introduction

LteSat is an advanced software solution designed to extend the capabilities of Amarisoft's eNB/gNB base station platforms into the realm of Non-Terrestrial Networks (NTN), addressing the unique challenges of satellite-based cellular connectivity. Developed as a specialized companion tool, LteSat facilitates seamless integration between terrestrial cellular infrastructure and satellite constellations, particularly those employing Low Earth Orbit (LEO) architectures. The software is architected to operate in two primary modes: Toolbox mode and Mission Control mode. In Toolbox mode, LteSat provides powerful offline capabilities for satellite scenario planning, orbit replay, and trajectory analysis using a variety of input formats compatible with Amarisoft's NTN configurations. This enables engineers and researchers to model, visualize, and prepare for complex satellite-ground interactions. Mission Control mode, on the other hand, elevates LteSat into a real-time orchestration platform, dynamically controlling multiple Amarisoft eNB/gNB instances deployed globally and synchronizing their operation with moving satellite constellations. This ensures continuous, reliable coverage by managing cell-satellite associations and automating handovers as satellites traverse their orbits. LteSat leverages robust logging systems and integrates tightly with the Amarisoft WebGUI for monitoring and management, making it a pivotal tool in the deployment of next-generation hybrid terrestrial-satellite networks. Its introduction reflects the growing importance of NTN in 5G and future wireless ecosystems, where ubiquitous, resilient connectivity is demanded across remote, maritime, and underserved regions.

Summary of the Tutorial

This tutorial details the procedures for installing, configuring, and testing the ltesat tool in various operational modes. The summary below outlines the test methodologies and step-by-step procedures for each test described in the tutorial.

General Configuration and Installation Notes:

Test Setup

The toolbox mode operation does not require any specific hardware test setup. For mission control mode, any basic callbox hardware setup would work.

This is the basic callbox setup. The antennas are connected only to the first SDR card (RF 1 / sdr 0). A UE can connect to the cell over the air. The callbox is also connected to the Internet. No UE takes part in the tests here. Test 3 only needs the gNB running on this callbox.

Callbox with antennas on the first SDR card and an Internet connection

Key Configuration Parameters

Followings are important configuration parameters for this tutorial. You may click on the items for the descriptions from Amarisoft documents.

How to Install ?

ltesat is included in installation package (if you have license for it) but it does not get installed during the installation process. You need to manually untar it from the installation package.

If you untar the insallation package and get into the untarred directory, you would find  a tarball with name starting with ltesat as shown below.

In this example the installation package is the 2024-04-10 release. There are two ltesat tarballs, ltesat-aarch64-2024-04-10.tar.gz and ltesat-linux-2024-04-10.tar.gz. I used the linux one. The aarch64 one is for ARM based hosts, the same as for the other packages in the list.

Installation package directory with the ltesat-linux tarball underlined

Untar the tarball with the command 'tar xzf tarball_name' as shown below.

I ran it in the 2024-04-10 package directory: tar xzf ltesat-linux-2024-04-10.tar.gz. The files are extracted into a new directory next to the tarball. Nothing is installed anywhere else.

tar xzf command extracting ltesat-linux-2024-04-10.tar.gz

Then you would get the uncompressed directory as ltesat-linux-yyyy-mm-dd as shown below.

The new directory is ltesat-linux-2024-04-10. You run ltesat from inside this directory, and all the tests in this tutorial are run from it.

New ltesat-linux-2024-04-10 directory next to the tarball

How to Configure ?

How to configure ltesat is similar to other Amarisoft software. If you go to ltesat directory, you would find a directory named 'config'.

Next to config are the ltesat executable, the libraries libc_wrapper.so, libnopoll.so and libnuma.so, the license files and ReleaseNotes-ltesat.txt. ltesat is the program run in all the tests below.

Contents of the ltesat directory with the config directory and ltesat binary

In the config directory are some sample configuration files. You can use any of these sample configuration file or modify these files as per your test requirement.

The samples are sat-export.cfg, sat-groundtrack.cfg, sat-mc.cfg, sat-pass.cfg and sat-traj.cfg. There is also iss.tle, a TLE file. sat-mc.cfg is the largest sample, at 2002 bytes.

Sample ltesat configuration files in the config directory

Opening one of the configuration file shows a configuration as follows. Of course, the detailed configuration varies depending on test cases. This is just to show you about the file format and syntax, you would see overall file composition is similar to other amarisoft product starting with log_options, com_addr and then detailed configuration parameters come.

If you want to run the configuration in connection with WebGUI, com_addr is important. ltesat is using the port 9009 as a default unless you change this port here in the configuration.

NOTE : The local address of the com_addr should be specified as [::] instead of "127.0.0.1". In some situation, "127.0.0.1" may not work properly.

In this configuration log_options is "prod.level=debug,all.max_size=1" and log_filename is "/tmp/mcc.log". com_addr is "[::]:9009".

cells_list defines the ground cells. This file has one, a small cell over western Europe. Its ground_position is latitude 45 and longitude 5. Its radius is 500e3, that is 500 km.

constellation_list defines the satellites. This file has one LEO constellation with n_planes 36 and n_sats_per_plane 36, so 1296 satellites in total. The inclination is 50 degrees and the altitude is 650e3, that is 650 km. Change these four values to model a different constellation.

ltesat configuration with com_addr, cells_list and constellation_list

If you want to run the configuration in connection with Amarisoft Callbox, addr in ran_node_list is important. ltesat is using the port 9001 as a default unless you change this port here in the configuration.

NOTE : The local address of the addr should be specified as "127.0.0.1" instead of   [::]. In some situation,  [::] may not work properly.

ran_node_list has one RAN node. addr is "127.0.0.1:9001" and label is "eNB #1". ltesat uses the label when it prints the state of this node, for example [eNB #1] Connected.

mapping_list ties a ground cell to the cells of the RAN. ground_cell_id 0 is the cell in cells_list. ran_cell_list [0x01] is cell 0x01 of the eNB or gNB. The comment above it mentions 2 cells for soft handovers between satellites, but this list has only one cell.

The rest of the file is for display and pass computation. n_steps 180 and step_ms 30000 are used for the ground track display. min_elevation 20 and pass_overlap 30 are the parameters for pass computation. dump_ran_status is commented out. Uncomment it to have the pass updates on the console.

ltesat ran_node_list with addr 127.0.0.1:9001 and mapping_list

Test 1 : Running in Toolbox mode

This is the simplest way of using the tool. Just run it standalone without an association with any other tools (e.g, WebGUI, RAN). You can run ltesat with a configuration as follows.

./ltesat configuration_file

The example that I ran for this test is ./ltesat config/sat-mc-1ran.cfg. Then you will get the print of multiple columns of data. The contents of the column would vary with the configuration that you set.  An advantage of this mode is that it is super fast and easy to run. A drawback is that there is no visualization for the result.

ltesat prints its version, 2024-04-10, and then 1 constellations instantiated, total 1296 satellites. That is the 36 x 36 constellation in the configuration. After that comes the simulation output, one row every 30 seconds from 2024-04-10T15:51:27.130.

Each row gives Distance in km, Azimuth and Elevation in degrees, and Doppler in ppm. In the first row the distance is 9000.831 km and the elevation is -39.038 degrees. A negative elevation means the satellite is below the horizon. Over the rows the distance falls to 6529.698 km and the elevation rises to -23.979 degrees. The Doppler goes from 16.768 to 19.682 ppm.

ltesat toolbox mode output with distance, azimuth, elevation and Doppler

Test 2 : Running in Mission Control Mode without RAN

In this test, I will run the exactly same configuration used in previous test but run it in different mode called 'Mission Control' mode. Main purpose is just to visualize the output data. A perfect setup for the mission control mode is ltesat and WebGUI and RAN, but in this test I will just use ltesat and WebGUI without RAN.

To run a ltesat configuration in mission control mode is to run the command with -m option : ./ltesat -m configuration_file

In this test, I ran : ./ltesat -m config/sat-mc-1ran.cfg . When it runs, it does not print any result in text. It is transferring the output data to WebGUI in the background. Since I don't run any RAN (i.e, eNB or gNB), you see the message like "[eNB #1] Couldn't start connection" but you may ignore this for now.

ltesat prints 1296 Satellites instantiated and 1 Ground cells instantiated. Cell 0 has coverage from 2 satellites at this moment. The last line comes from the ran_node_list entry labelled eNB #1. You get it because the eNB/gNB (i.e, lte service) is not running, and you can ignore it in this test.

ltesat -m output with eNB #1 Couldn't start connection

Now launch WebGUI and create a Server component to ltesat. If you use the default setting for ltesat configuration (i.e, com_addr : [::]:9009), you may set 127.0.0.1 for address and 9009 as the port. If 127.0.0.1 does not work, type in the IP address of your callbox.

Click the [Server] button at the top left of WebGUI. In the Create server client dialog, I set Name to SAT and Address to 192.168.100.17 with port 9009. 192.168.100.17 is the IP address of my callbox. Then click [Create].

WebGUI Create server client dialog for SAT on port 9009

If WebGUI is get successfully connected ltesat, you would see log options showing up in the dialog box, specify log options as you like and hit [Update] button.

The dialog lists two layers, PHY and PROD, both at debug level with Max size 1. Use the green + button to add a layer, then click [Update]. The log list then shows PROD messages in the MCC column, such as cell_id=0 sat_id=149 azimuth=179.03 elevation=30.36 begin coverage.

WebGUI log configuration dialog for SAT with PHY and PROD layers

Then you would see the 'connected' indicator and log print.

Make sure the connected indicator next to SAT is on. The log list keeps adding PROD messages. Each one says when a satellite begins to cover cell 0. For example, at 11:42:51.768 sat_id=149 begins coverage at azimuth=186.48 and elevation=30.18.

WebGUI with SAT server connected and PROD begin coverage logs

Now hit [SAT] button and you will get the ltesat data displayed on top of world map as shown below.

The SAT tab shows every satellite as a dot on the world map. The ground cell over western Europe is the white circle. Ground cell 0 is selected at the top.

The table below has one row per satellite. It lists the start, duration and maximum elevation of the next pass, and the current Elevation, Azimuth and Distance. A positive elevation is shown in green and a negative one in red. RAN link is none for every satellite, because no RAN is connected in this test.

WebGUI SAT tab with the constellation on the world map and pass table

Test 3 : Running in Mission Control Mode  with RAN

In this test, I will run the ltesat in connection with both WebGUI and RAN. In this case, the configuration for RAN should be NTN configuration and it should match the configuration of ltesat (especially in terms of the number cells).

For this test, I used a NR SA NTN configuration gnb-sa-ntn-leo.cfg which is modified from the gnb-sa-ntn.cfg.

Callbox enb.cfg symbolic link pointing to tmp/gnb-sa-ntn-leo.cfg

The configuration in gnb-sa-ntn-leo.cfg is exactly same as gnb-sa-ntn.cfg except only one parameter. I just changed NTN_MODE to 2 (LEO) and everything else same as the default setting.

NTN_MODE selects 0 for GEO, 1 for MEO and 2 for LEO. The other defines are NR_BANDWIDTH 20, N_ANTENNA_DL 2, N_ANTENNA_UL 1 and CHANNEL_SIM 1. NR_BANDWIDTH is limited to 20 MHz in NTN bands 255 and 256. CHANNEL_SIM 1 enables the satellite link emulation within the eNB DL channel simulator.

NTN_MODE also picks one of three blocks below. With NTN_MODE 2 the #else block is used, so CSI_SRS_PERIOD is 40, MAX_HARQ is 5, T3XX_TIMER is 1000 and SRB_T_POLL_RETX is 80. The GEO and MEO blocks are not used in this test.

gnb-sa-ntn-leo.cfg defines with NTN_MODE set to 2 for LEO

Once the configuration is done, first run RAN part (i.e, 'service lte restart') and get into screen mode (i.e, 'screen -r') and make it sure the (enb) is running without any problem.

In the ENB window, ltelaunch.sh from /root/lteots-linux-2024-04-05 starts the Base Station version 2024-04-05. RF0 runs with sample_rate 23.040 MHz, dl_freq 2185.000 MHz and ul_freq 1995.000 MHz in band n256. dl_ant is 2 and ul_ant is 1. The (enb) prompt is up with no error.

ENB screen window with the NTN cell running in band n256

Then run ltesat in mission critical mode with configuration that matches RAN configuration. In this test, ltesat run as follows :

./ltesat -m config/sat-mc-1ran.cfg

This time ltesat prints [eNB #1] Connected. Cell 0 has coverage from 1 satellites at this moment. The rest of the output is the same as in Test 2.

ltesat -m output with eNB #1 Connected

Now open the WebGUI and ensure that both ENB and SAT server are properly connected (NOTE : Regarding on how to connect WebGUI to ltesat refer to previous test)

In the left panel, both SAT and ENB under CBC-2023010100 show the connected indicator. The ENB log shows the NG setup request and response with 127.0.1.100:38412.

The PROD messages from ltesat appear in the same list. ran_node=eNB #1 ran_cell_id=1 ground_cell_id=0 sat_id=149 links satellite 149 to cell 1 of the gNB. 0.592 s later comes cell_id=0 sat_id=149 azimuth=209.74 elevation=26.63 begin coverage.

WebGUI with SAT and ENB servers connected and the satellite link log

Once SAT server is properly connected, hit [SAT] button and you will see the satellite constellation displayed on world map.

The map and the table look the same as in Test 2, now with the ENB server also connected. In the first rows RAN link is still none. The rows are in ID order, so the linked satellite is further down the table.

WebGUI SAT tab with both SAT and ENB servers connected

If you sort the data in RAN link (click on the [RAN link] column title), it will sort the linked RANs shown at the top.

After sorting, satellite 149 is at the top. Its RAN link is active, RAN cell is 1 and UEs is 0. Its elevation is 38.44 degrees, its azimuth is 196.35 degrees and its distance is 990.06 km. This is the sat_id=149 that ltesat linked to eNB #1 in the log. No UE is connected in this test, so UEs stays 0.

SAT table sorted by RAN link with satellite 149 active