LTE Software Install Guide version 2024-10-29*This document is based on the latest test release.
Features may not be present in your current installed software. You may check their availability in your release documentation.
If you require an up to date release, ask for it in a ticket.
Features may not be present in your current installed software. You may check their availability in your release documentation.
If you require an up to date release, ask for it in a ticket.
Table of Contents
- 1 Introduction
- 2 Install Guide
- 3 Initial Test and Setup
- 4 Logging
- 5 Troubleshooting
- 6 Additional Information
1 Introduction
This document describes how to install and use your software binary LTE 100 and LTE UE 100. It explains basic install procedure and where to find software. For advanced use, please refer to software documentations.
1.1 Background
The LTE 100 product includes the following components:
-
lteenb
: This component is a LTE base station (eNodeB). -
ltemme
: This component is a LTE EPC including MME (Mobility Management Entity), SGW (Serving Gateway), PGW (Packet Data Network Gateway) and HSS (Home Subscriber Server). -
lteims
: This component is an IMS test server. -
ltembmsgw
: This component is a LTE MBMS Gateway. -
trx_<name>
: This component is your radio frontend driver where <name> represents your radio frontend type. Examples aretrx_sdr
for PCIe SDR card andtrx_uhd
for USRP SDR cards. -
www
: this component is in charge of web interface to Amarisoft LTE software. It allows you to control the software and visualize logs.
The LTE UE 100 product includes the following components:
-
lteue
: This component is a LTE UE simulator. It simulates one or more UEs by communicating through a RF system with an eNodeB and core network. -
trx_<name>
: This component is your radio frontend driver where <name> represents your radio frontend type. Examples aretrx_sdr
for PCIe SDR card andtrx_uhd
for USRP SDR cards. -
www
: this component is in charge of web interface to Amarisoft LTE software. It allows you to control the software and visualize logs.
Note that each component has a doc directory where you can find its documentation. Alternatively, all documentations are available for download in our Extranet.
2 Install Guide
2.1 Requirements
Before proceeding, make sure that you have:
- A fast PC. For best performances, an Intel Core i9 CPU with 18 cores and AVX2 support running at a clock of 4 GHz is recommended for a 5G setup.
- Appropriate hardware interface(s) to connect your Radio frontend, i.e:
- - PCIe port: (1x gen 2 per
PCIe SDR50 card
) - - PCIe port: (8x gen 2 per
PCIe SDR100 card
) - - PCIe port: (4x gen 2 per
PCIe CPRI card
) - - One Gigabit Ethernet port per
USRP device
such as N2x0 - - One USB 3.0 port per
USRP device
such as B2x0 - - One 10 Gigabit Ethernet port per
USRP device
such as X3x0
- - PCIe port: (1x gen 2 per
- Root privileges to be able to install and run the software.
- A 64 bit Linux distribution. Fedora 39 is the officially supported distribution.
The following distributions are known as compatible:- Fedora 22 to 39
- Cent OS 7
- Ubuntu 14 to 22
Your system requires at least GLIBC 2.17.
- Internet access as new packages might be required to get installed on your PC.
2.2 Computer Setup
We strongly advise to restrict the usage of computer for running Amarisoft Software only. Installing or running any other program like graphical user interface can impact real performance of the device. |
Amarisoft provides a Fedora recovery image. This image can be used to setup your custom server with Fedora OS. You can find the details in tech academy at https://tech-academy.amarisoft.com/Install_RecoveryUSB.html.
The step by step manual install for Fedora is detailed in the follwoing. For other Linux distributions, you should find the the same packages to install.
- Install your OS ISO image on the server.
- Install and launch openssh
- -
dnf -y install openssh
- -
systemctl enable sshd
- -
nano /etc/ssh/sshd_config (Set PermitRootLogin yes)
- -
service sshd start
- -
service sshd status
- -
- Disable firewall
- -
systemctl disable firewalld
- -
service firewalld stop
- -
- Disable SELinux
- -
perl -p -i -e "s/enforcing/disabled/" /etc/selinux/config
- - or edit the file /etc/selinux/config and edit the line Selinux to SElinux = disabled
- -
- Disable graphical GUI
- -
systemctl enable multi-user.target --force
- -
systemctl set-default multi-user.target
- -
- Install the following packages
- -
dnf -y install wget screen iperf wireshark lm_sensors make gcc lksctp-tools.x86_64 kernel-devel.x86_64 htop tcpdump perl php php-json
- -
- Verify that SCTP kernel module is running
- -
checksctp
- - if it reports that the protocol is not supported
- - check if you have a /etc/modprobe.d/sctp-blacklist.conf file
- - edit it to comment the ’blacklist sctp’ line
- - reboot
- -
- Verify that httpd is running
- -
service httpd status
- - if it is not enabled, type
- -
systemctl enable httpd
- -
service httpd start
- -
- For SW package installation follow the instructions on section See Installation Steps for more details.
2.3 Hardware Prerequisites
Before starting the software installation of your Amarisoft setup, all Radio frontends have to be connected to your PC.
If your setup is composed of multiple Amarisoft PCIe cards, you need to plug the provided USB or SATA cables between each card in order to synchronize them in time and frequency as described hereunder.
2.3.1 PCIe SDR50 cards:
- Connect internal OUT connector of the first card to IN connector of the second card.
- Then do the same with OUT of second card and IN of third one, etc...
- Once the SDR cards are connected, you may have to configure manually the RF driver, see RF configuration section for more details ((See RF Configuration)
2.3.2 PCIe SDR100 cards:
- The
PCIe SDR100 cards
have 3 CLKOUT connectors to simply synchronize up to 4 boards while limiting delays caused by chaining - Select a
PCIe SDR100 cards
as Master and connect one of the 3 SATA CLKOUT connector to the CLKIN connector of a Slave card - If you have more than 4
PCIe SDR100 cards
to connect, use the CLKOUT connectors of one Slave card - Once the SDR cards are connected, you may have to configure manually the RF driver, see RF configuration section for more details ((See RF Configuration)
2.3.3 PCIe CPRI Card
- Insert the CPRI cards into PCIe slots of the server. The PCIe slot should be at least Gen2 x4. One CPRI card is needed per NR cell 100 MHz 4x4. For a NSA setup, 2 CPRI cards are required and they should be synchronized. The synchronization is done by a SATA cable connected to the SYNC OUT connector of the master card at one side and to the SYNC IN connector of the slave card at the other side, as depicted in the following image.
- Each CPRI card is identified by a Linux device. When you install several CPRI cards, the mapping between the PCIe cards and the Linux devices is not predictable and you may have to configure manually the RF driver, see RF configuration section for more details ((See RF Configuration).
- Amarisoft PCIe CPRI board uses the same driver as the Amarisoft PCIe SDR board. So during the install phase, you should choose
sdr
as your RF board. Board type is recognized automatically by the driver.
2.4 Installation Steps
To automatically install the LTE software package on your PC, you need to follow these steps. Depending on your RF board, you will find a TRX driver in your package. The installation process will also update eNodeB configuration to use the corresponding TRX driver.
- Download your release from Amarisoft Extranet at
https://extranet.amarisoft.com/
The downloaded file would be a tarball file: amarisoft.YYYY-MM-DD.tar.gz where YYYY-MM-DD is the release date. - Put this file on the PC at any place using the method you want (scp, http, USB key...) and extract it:
tar xzf amarisoft.YYYY-MM-DD.tar.gz
This would create a directory called YYYY-MM-DD.
- As
root
, Go to the directory YYYY-MM-DD and execute the provided script install.sh as follows:./install.sh <path> --default
- - By default if no
<path>
is specified, components are installed in/root
, you can choose other directories by specifying a new destnation in<path>
. Please note thatwww
component will always be located under/var/www/html
in Fedora or/var/www
in Ubuntu. - - The
--default
option forces answer to default for all questions asked during install phase. The default answers forLTE 100
are depicted below:The default answers for
LTE UE 100
are depicted below:
Take a look at messages at the end of install phase, you may be requested to power on/off your PC. This would be the case if there is, for example, an FPGA upgrade of your PCIe SDR card.
If you would like to have a custom install, you can run the script without--default
option and answer each question separately. ForLTE 100
product, this would typically be the case if you do not want to enable automatic LTE service or if you would like to install eNB and MME components on different PCs. - - By default if no
Once the installation phase is completed, you will need license files to use your system. Depending on the purchased license type, there are different ways to activate your system:
- Fixed license : Each license delivered is dedicated to one specific PC. There is no possibility to share the keys or move to another setup. The installation procedure is described in chapter 2.5.
- Floating license with license server: The second method consists in using a floating license provided by a license server. This mechanism is relevant when you want to timeshare the license between different hardware or users or when the system is running on virtual machines. The installation procedure is described in chapter 2.6.
- Floating license in USB dongle: The third mechanism consists in using a floating license embedded in a USB dongle . It’s also relevant for time sharing but less convenient than a floating license running on a server when it comes to the mobility. The installation procedure is described in chapter 2.7.
2.5 How to retrieve a fixed license key
2.5.1 LTE 100
First thing is to start the software. If you have answered yes
to the question Do you want to enable LTE automatic service?
, then the software has already been started. In this case, you need to access LTE service screen to get your hexadecimal code. You can use the following command for this purpose:
screen -x lte
This will connect you to different component monitors. You should see a message stating that the license key is not present and printing a 16 digits hexadecimal code.
If you have not started LTE automatic service, then you need to start the software manually. The software package is located by default in /root
unless you have specified another path
when running install.sh
script.
Below is the procedure to start all software components one by one assuming default path is used during the install:
cd /root/mme ./ltemme config/mme.cfg cd ../ims ./lteims config/ims.cfg cd ../mbms ./ltembms cd ../enb ./lteenb config/enb.cfg
Once the software is started, you will see the same hexadecimal code printed by each software component. Please communicate to delivery@amarisoft.com the code to generate the license files
NOTE : The fixed license keys are deeply linked to Hardware where the hexadecimal code has been generated.
It’s by consequence not possible to move the license key on a new hardware or replace pieces such as the Network Interface Controller.
If you expect to replace your hardware, we recommend to use a floating license (see below), which is Hardware agnostic.
|
2.5.2 LTE UE 100
If you have answered yes
to the question Do you want to enable LTE automatic service?
, then the UE simulator has already been started. In this case, you need to access LTE service screen to get the code. You can use the following command for this purpose:
screen -x lte
This will connect you to the UE simulator monitor. You should see a message stating that the license key is not present and printing a 16 digits hexadecimal code.
If you have not started LTE automatic service, then you need to start the software manually. The UE simulator software is located by default in /root
unless you have specified another path
when running install.sh
script. You can start it manually with following commands assuming default path is used during the install:
cd /root/ue ./lteue config/ue.cfg
Once the software started, you will see the hexadecimal code printed in the screen.
2.5.3 Fixed License Files generation and install
Next steps are:
- Send this hexadecimal code by email to
delivery@amarisoft.com
. License key files will be generated in Amarisoft Extranet. You will get an email when they are available for download. - Downloaded your license key files from our Extranet. You need to have an active account to connect to our Extranet. If you do not have one, send an email to
delivery@amarisoft.com
to request one. - Create a directory called .amarisoft under
${HOME}
where${HOME}
is the home directory of theroot
user. (exemple /root/.amarisoft ) - Copy the license files inside .amarisoft directory.
Once the license key files are installed, you need to restart the system.
2.6 How to use the floating licenses
2.6.1 License server installation
First thing to do for using one or several floating licenses is to install a license server. This server can be run on one Amarisoft setup or on a dedicated PC.
If you use a dedicated PC , there is no Hardware requirement.
Just make sure that this PC can be reachable from other PCs running eNodeB or EPC and that you have :
- Root privileges.
- A 64 bit Linux distribution. Fedora 39 is the officially supported distribution.
The following distributions are known as compatible:- Fedora 22 to 39
- Cent OS 7
- Ubuntu 14 to 22
Your system requires at least GLIBC 2.17.
To configure your license server PC :
- Plug the USB dongle provided by Amarisoft in your PC. The dongle has to be mounted on your system.
- Download from Amarisoft extranet the floating licenses for all components and copy them on your PC under $HOME/.amarisoft/floating/ directory (as instance /root/.amarisoft/floating/)
- Copy the ltelicense-linux-YYYY-MM-DD.tar.gz from your release tarball on your PC
- Untar it with "tar xzf ltelicense-linux.YYYY-MM-DD.tar.gz" command. This would create a directory called YYYY-MM-DD.
- Go to the directory YYYY-MM-DD and execute the following command with ROOT priviledges. The LTELICENSE can be run directly from the directory it has been unpacked.
./ltelicense_server config/license.cfg
2.6.2 Connecting a component to license server
Once the license server is up and running, you can now configure the Amarisoft components (i.e eNB, MME etc.. ) so they can connect to the server and retrieve the floating license.
- On your PC (where the component is running), create a directory called .amarisoft under
${HOME}
where${HOME}
is the home directory of theroot
user. (example /root/.amarisoft ) - Under this directory, create a license_server.cfg file and add the license server parameters :
Example :
{ license_server: { server_addr: "192.168.1.1" } }
- Then change the server_addr value with the IP address of your license server .
2.7 Getting license from a USB dongle
When using a floating license in USB dongle, the only thing to do is to plug the USB key provided by Amarisoft on your PC and verify that it is mounted.
If the USB is not mounted automatically, you can do it manually by following the steps below:
- Detect the USB hard disk drive
As root , type "fdisk -l" once the USB dongle is plugged
You should see a new Device enumerated with name "/dev/sdxx"
example:
/dev/sdb1 * 56 15974399 15974344 7.6G b W95 FAT32
- Create a mount point with command:
mkdir <dir_name>
example: "mkdir /media/usb-drive"
- Mount USB drive with command:
mount <source=device_name> <directory>
example: "mount /dev/sdb1 /media/usb-drive"
The USB dongle should now be detected and amarisoft components should be able to get the license keys from the dongle
2.8 RF driver configuration for multiple SDR card setup
If your setup is composed of one Amarisoft PCIe card only or if you use different Radio frontend models you can skip this section.
Otherwise, please read it as you may have to configure the SDR configuration manually.
Each PCIe SDR50 card
has a unique device number assigned when the kernel driver is started.
Each PCIe SDR100 card
creates 2 sdr devices: the master (TX/RX1 and TX/RX2) is assigned an even number and the slave (TX/TX3 and TX/RX4) is assigned the following odd device number: sdr0 and sdr1 for example.
Each PCIe CPRI card
has a unique device number assigned when the kernel driver is started.
When your setup is composed of several PCIe cards, the mapping between the PCIe connectors and the Linux devices is not predictable (but it should not change after each boot).
Ideally, the mapping should follow the PCIe slot position and should result in :
PCIe slot#0=>dev/sdr0 PCIe slot#1=>dev/sdr1 PCIe slot#2=>dev/sdr2 etc ..
Unfortunately, this is not always the case. As a consequence, the first time you boot your system, you have to identify the position of the SDR cards by following the steps below and force the "sdr mapping" in order to align the linux device names and their physical positions.
To do so:
- Stop LTE service with "service lte stop" command
- Under /root/trx_sdr folder, run "./sdr_util -c 0 led 1" command to identify the SDR card#0 (/dev/sdr0)
This command will turn ON the led on the SDR card#0 - Once identified, turn off the led with the "./sdr_util -c 0 led 0" command.
- Repeat steps 2 and 3 for each card: "/sdr_util -c <n> led 1" where <n> is the index of the card.
Once you have identified all SDR card positions, you may have something similar to this (where SDR names are misaligned with their positions)
In that case, you need to force the sdr mapping by following the steps below :
- As root, create the file /etc/sdr-mapping
- Edit the file and fill it with the sdr mapping identified thanks to the steps above
In this example, the file shoud be filled this way:
0 4 3 2 1 - Reload the RF driver by doing a power cycle of the box (a soft reboot is not enough)
After the power cycle, you can verify that SDR mapping is OK now by repeating the steps 1,2,3,4.
Note: This procedure must be run each time a SDR card is added or remove |
For more details , please refer to trx_sdr.pdf documentation
3 Initial Test and Setup
3.1 Automatic service configuration
This section only applies to product with automatic LTE service.
The LTE automatic service uses /root/ots/config/ots.cfg
for its configuration.
The format is shell.
The default configuration file is generated during installation.
To use your own configuration we recommend to create a new file and change /root/ots/config/ots.cfg
symbolic link to point to your file.
Else, your changes will be overriden at next software install/upgrade.
Example:
Create a my-ots.cfg file and put the following inside:
# Include default configuration source ots.default.cfg # Add your custom config MME_CONFIG_FILE=/root/mme/config/my-mme.cfg
Then:
cd /root/ots/config rm -f ots.cfg ln -s my-ots.cfg ots.cfg
3.2 LTE 100
This section only applies to LTE 100 product with automatic LTE service. Once you are logged on your callbox, you can access software components (eNB, MME, IMS or MBMSGW) using screen command:
screen -x lte
This will connect you to different component monitor.
Next sections show you basic methods. For more information please refer to screen
documentation (https://www.gnu.org/software/screen/manual/screen.html).
3.2.1 Select component
Each component monitor is inside a window. You can switch from a window to another with the command:
ctrl+a <window index>
Where window index is:
- 0 MME
- 1 eNB
- 2 MBMSGW
- 3 IMS
Note: press simultaneously |
You can also switch to next window:
ctrl+a <space>
Each component screen offers a list of commands that can be used either to get status or trigger action. Each of them are documented in the component documentations (example lteenb.pdf) or inline with the "help" command
3.2.2 Exit screen
ctrl+a d
3.3 UE 100
3.3.1 Access UE Simulator
Once you are logged in PC, you can access UE simultor using screen command:
screen -x lte
This will connect you to UE simulator monitor.
For more information please refer to screen
documentation (https://www.gnu.org/software/screen/manual/screen.html).
3.3.2 Exit screen
ctrl+a d
3.4 How To Manage Your LTE Automatic Service
This section applies to automatic LTE service for both LTE 100 and UE 100.
3.4.1 Status
You can check the LTE service status this way:
service lte status
The command will return "active (running)
" status if service is running
3.4.2 Stop
You can stop all LTE components this way:
service lte stop
3.4.3 Start
You can start them again this way:
service lte start
3.4.4 Disable
You may also prevent them to start at boot time:
systemctl disable lte
NB: lte service remains enable until next reboot
NB2: this command is not available on Ubuntu version <= 14
3.4.5 Enable
You may enable service at boot time this way:
systemctl enable lte
NB: lte service remains disable until next reboot
NB2: this command is not available on Ubuntu version <= 14
3.5 How To Change Software Configuration
This section only applies to LTE 100 with automatic LTE service.
The LTE automatic service starts each component with the following config files:
- eNB
/root/enb/config/enb.cfg
- MME
/root/mme/config/mme.cfg
- IMS
/root/mme/config/ims.cfg
- MBMSGW
/root/mbms/config/mbmsgw.cfg
Please note that these files are symbolic links to real configuration files as depicted below for enb.cfg
.
In order to change the configuration, you have two options:
- Editing the above files to change the configuration directly.
- Changing the symbolic link to point to another configuration file. Following example shows the commands to change the default config to a carrier aggregation configuration on eNodeB side.
cd /root/enb/config rm enb.cfg ln -s enb-2cc.cfg enb.cfg
Once you have changed your config, you need to restart the LTE service using the following command:
service lte restart
NB: you may use screen to check that all components are correctly started.
For more details on config files, please refer to each component documentation.
3.5.1 UE 100
This section only applies to UE 100 with automatic LTE service.
The LTE automatic service starts UE Simulator with the following config:
- UE
/root/ue/config/ue.cfg
In order to change the configuration, you have to:
- Edit the
ue.cfg
file to change the configuration. - restart the LTE service by typing
service lte restart
For more details on config files, please refer to UE Simulator documentation.
3.6 How To Change Software Versions
All software components are installed in /root
directory by default. You may find different versions of each component within the /root
directory.
The systems uses symlinks (mme, enb, mbms, ue) that points to a version of each component as depicted below.
You can change those links if you need to change software version to use.
4 Logging
Components put their current logs in /tmp
directory. However, you can also have access to a Web tool on the following URL that helps you visualize the logs as well as some useful stats for real time analysis.
To get access to this log , open a web browser (Chrome or Firefox) on you remote PC and connect to http://<my IP>/lte/ ,where my IP
is the IP address of your PC where the Amarisoft software is running.
This will open a web page composed of three panels.
To display log and/or interact with Amarisoft software, you need to add a client (click Add server
button as shown in picture below)
The list of your client is displayed on left panel of the interface.
Enter name you want to appear on client panel, set the IP address of your component PC and the port of your software component.
*Note : each software component uses a specific port. To know this value, look at com_addr value in its configuration file (example ims.cfg).
Format is : com_addr: "<IP Address>:<Port Number>"
Where <IP Address> is the IP address of the WebSocket server remote API and <port Number> the port on which it listens. The WebSocket server for remote API will be enabled and bound to this address and port number.
The default values used in configuration files are:
in /root/mme/config/ims.cfg , com_addr: "[::]:9003" in /root/mme/config/mme.cfg , com_addr: "[::]:9000" in /root/enb/config/com_addr , com_addr: "[::]:9001"
Port 9003 is used for IMS , 9000 for MME and 9001 for eNB.
Note: [::] will make remote API reachable from any network interface.
After clicking on Create
button, the client will try to connect.
If connection is successful, the configuration window will appear so that you configure logs:
For each layer you can define a level of trace, from None
to Debug
(which gives the highest verbosity for the layer)
:
- Filter. This is the level of log that will be downloaded to the GUI.
- Level. This is the level of log on the component, as defined in
log_options
of its configuration file) and will override its configuration.
As a result, each time the client connects to the component, it will apply the configuration, overriding its current config. - Max size. Log data size as defined in
log_options
of its configuration file.
Of course, you can keep default configuration and simply click on Update.
The icon means the client is not connected whereas means the client is connecting and means the client is connected.
When connected, a new tab will appear in main tab panel and provide you advanced features.
NOTE : If the client fails to connect and start logging , please check that HTTPD service ing on your component PC
service httpd status
For more details, please refer to ltewww
documentation
5 Troubleshooting
Below are some of the most common issues encountered during install phase with recommended actions to address each issue.
Issue | Cause/Correction |
---|---|
Could not load ./trx_uhd.so' (Operation not supported) | Fedora 23 and Ubuntu 16 are using C++11 ABI and thus UHD driver is not compatible.
If you are in this case, please edit your RF config file and update name of RF driver part from uhd
to uhd_cxx11 . |
trx_lms7002m.cpp:30:28: fatal error: lime/LimeSuite.h: No such file or directory | You need to first install LMS Suite available in URL https://wiki.myriadrf.org/Lime_Suite . |
TRX discontinuity too wide seen after running eNodeB | The most likely explanation is that not enough CPU time is available. Below is a check list:
|
PC crashes or freezes during install phase or few seconds after running the SW | If you use PCIe card, below is a list to check:
|
Install script returns the following error message when using PCIe SDR card: insmod: ERROR: could not insert module sdr.ko: Invalid module format . | This error means that the driver module is not compatible with the kernel version of your PC. You should rebuild and reload the driver as below. Make sure you reboot the system.
cd /root/trx_sdr/kernel make clean make ./init.sh |
Install script returns the following error message when using PCIe SDR card: nsmod: ERROR: could not insert module sdr.ko: Required key not available . | This error comes from the Linux kernel because you are trying to load an unsigned SDR driver. It means that secure boot is activated. You should go to the BIOS settings and deactivate it.
|
license error when running Amarisoft software components: license /root/.amarisoft/ltexxx.key error 0xd . | This error is because the key file does not correspond to the software component which is being run. Typically, you will see this error when running ltemme software with lteenb.key as an example. |
license error when running Amarisoft software components: SSL error when loading license /root/.amarisoft/ltexxx.key . | This error could be casued either due to firewall or due to bad SSL libraries. In order to fix it:
|
5.1 Contact
- Our Extranet site is located at
extranet.amarisoft.com
. This site would give you access to our documentation and new releases. - For all technical issues, you can create a ticket describing your problem on our support site at
support.amarisoft.com
. Please note that you need to have an active account in our Extranet in order to be able to login to our support site. Your credentials are the same as the ones you use to access Extranet. - our FTP server is located at
ftp.amarisoft.com
. This server should be used to exchange big logs. Your credentials are the same as the ones you use to access Extranet. Please note that you need to use an FTP client supporting SSL such as Filezilla. - For any request concerning license delivery or addition of new accounts, please send an email to
delivery@amarisoft.com
.
6 Additional Information
This document is copyright (C) 2012-2024 Amarisoft. Its redistribution without authorization is prohibited.
This document is available without any express or implied warranty and is subject to change without notice. In no event will Amarisoft be held liable for any damages arising from the use of this document.
For any technical issue, please raise a ticket from our support site at https://support.amarisoft.com/.
To learn more about our technology and solutions, e-mail us at customer@amarisoft.com or visit https://www.amarisoft.com.