What is the SDK?
SDK overview
The software development kit (SDK) is a collection of software development tools in one installable package. They facilitate the creation of applications by having a compiler, debugger and sometimes a software framework. They are normally specific to a hardware platform and operating system combination.
The SDK can take the form of application programming interfaces (APIs) in the form of on-device libraries of reusable functions used to interface to a particular programming language, or it may be as complex as hardware-specific tools that can communicate with a particular embedded system.
The SDK facilitates adaptor development in the MDM environment.
Prerequisites
The following prerequisites must be met before installing and using the SDK.
- The SDK installation is supported on the following platforms:
-
RHEL. The RHEL 9 operating system must be installed on the host. The NSP Installation and Upgrade Guide provides detailed instructions for the RHEL OS installation.
-
Mac. Supported operating system version — macOS Sequoia (version 15) and above. For more information, see SDK on Mac
-
Microsoft Windows. Supported operating system version — Windows 11 and above. For more information, see SDK on Microsoft Windows
-
-
Docker-CE version 29.x with compatible Docker Compose is required for the SDK.
-
To start the installation, log in as the root user on the SDK host.
-
The deployer host must have following utilities: Openssl, Curl, and Wget.
Server size requirements
The deployer host must have at least 6 CPU cores, 32 GB of memory, 16 GB of swap memory and a minimum of 200 GB disk space available to run the SDK.
Recommendations for SDK Usage on MAC/Windows system
-
Power Management — To prevent interruptions to long-running SDK processes such as adapter builds, configure the system’s power, sleep, and battery settings.
- Process Behavior (Lock/Sleep):
-
Build Processes — To ensure stability and prevent resource contention, avoid triggering parallel builds. Execute one build process at a time, waiting for its completion before initiating another.
-
User Accounts — To optimize memory use, it is recommended to utilize a single, default user account for the SDK. System memory may be adversely affected by the creation of several user accounts.
-
Code Server Instances — Close any unused code server instances to conserve memory and improve performance.
-
SDK Startup — The SDK must be manually started after the system boots or reboots. Following steps need to be performed after reboot:
For MAC:-
colima ssh
-
su – root
-
Navigate to the <sdk-installation-directory> directory.
For example, cd /Users/<username>/<sdk-installation-directory>
-
Start the SDK application. See How do I start the SDK application?.
-
Start the Code-Server application. See How do I start the Code-Sever?
-
Open Windows PowerShell and execute the following command to connect to WSL VM.
wsl -d Ubuntu-24.04
-
su – root
-
Navigate to the <sdk-installation-directory> directory.
For example, cd /Users/<username>/<sdk-installation-directory>
-
Start the SDK application. See How do I start the SDK application?.
-
Start the Code-Server application. See How do I start the Code-Sever?
-
-
Windows Terminal Sessions — For the SDK application to run on Windows (using WSL/Ubuntu), the PowerShell terminal session that was used to launch it must remain open.
-
Recommended Specifications:
-
MAC — A minimum of 6 CPU cores, 12 GB of RAM, 8 GB of SWAP and 100 GB of disk space are recommended for optimal SDK performance.
-
Windows — A minimum of 8 CPU cores, 12 GB of RAM, 8 GB of SWAP and 100 GB of disk space are recommended for optimal SDK performance.
-
-
Mac/Colima File Paths — For Mac and Colima environments, it is recommended to use a path located under /Users/<username>.
SDK on Mac
Before installing SDK on Mac, the following steps need to be performed.
-
Install Colima. Open a terminal window and execute following command.
brew install colima
-
brew install docker
-
softwareupdate --install-rosetta --agree-to-license
-
Start Colima Virtual Machine with custom resource configuration.
colima start --cpu 6 --memory 12 --disk 100 --runtime docker --arch aarch64 --vm-type=vz --vz-rosetta --network-address --dns 8.8.8.8
Note: Rosetta is not necessary for Apple on Intel chips, and we can start Colima with the following command.
colima start --cpu 6 --memory 12 --disk 100 --runtime docker --network-address --dns 8.8.8.8
-
Configure Docker context to use Colima.
unset DOCKER_HOST
docker context use Colima
-
colima ssh
-
Set or update root user password inside Colima.
sudo passwd root
The following prompt is displayed to set root password.
New password:
A prompt to re-enter the password is displayed.
Retype new password:
Success message is displayed.
-
su – root
-
Configure swap memory for improved performance.
sudo fallocate -l 8G /swapfile &&
sudo chmod 600 /swapfile && \
sudo mkswap /swapfile && \
sudo swapon /swapfile
-
Go to How do I install the SDK?.
SDK on Microsoft Windows
Before installing SDK on Microsoft Windows, the following steps need to be performed. Before proceeding, ensure that Virtualization Technology (VT) is enabled; if not, enable it. Additionally, verify that WSL2 is installed on Windows, and install it if necessary.
-
Create a configuration file, .wslconfig with following content and place it in the user directory, "C:\Users\<username>”
[wsl2]
memory=12GB
processors=8
localhostForwarding=true
swap=8GB
kernelCommandLine = "sysctl.vm.swappiness=90"
-
Open Windows PowerShell and execute the following command to install WSL.
wsl --install -d Ubuntu-24.04
The following prompt is displayed to create default user and password.
Create a default Unix user account: <username>
New password:
A prompt to re-enter the password is displayed.
Retype new password:
Success message is displayed.
-
Once the default user is created you can update the root password by executing the following command.
sudo passwd root
The following prompt is displayed to set root password.
New password:
A prompt to re-enter the password is displayed.
Retype new password:
Success message is displayed.
-
su - root
-
Go to How do I install the SDK?.
Restore configurations of Mac and Windows
If the user want to remove or uninstall SDK from their stations, or if there is an issue with setting up SDK and want to start a new configuration, follow these steps.
Cleanup in Mac:
-
colima ssh
-
su - root
-
Navigate to the <sdk-installation-directory> directory.
For example, cd /Users/<username>/<sdk-installation-directory>
-
Stop the Code-Server application. See How do I stop the Code-Sever?.
./code-server.sh stop
-
Stop the SDK application. See Command line arguments.
./nsp-mdm-sdk.sh stop
-
docker image prune -a -f
-
Delete the SDK installation directory.
For example, rm -rf /Users/<username>/<sdk-installation-directory>
-
exit
-
exit
-
colima stop
-
Remove the existing Colima VM and container data.
colima delete
-
Clean up residual Lima virtualization resources and unused disk artifacts.
limactl prune
-
Uninstall the Docker CLI and associated binaries.
brew uninstall docker
-
Uninstall the Colima CLI and remove local configuration binaries.
brew uninstall Colima
Cleanup in Microsoft Windows:
Port information
The following table describes the list of ports available on the SDK.
Table 3-1: Port information
|
Default Port |
Type |
Encryption Info |
Description |
|---|---|---|---|
|
80 |
TCP |
There is no encryption. |
This port redirects to port 443. |
|
3002 |
TCP |
Encryption provided by TLS. Strong ciphers are supported. |
This port provides an HTTPS interface to the web application. |
|
443 |
TCP |
Encryption provided by TLS. Strong ciphers are supported. |
This port provides an HTTPS interface to the web application. |
|
22 |
TCP |
Dynamic encryption is used. The cipher suite and strength as per RFC 4253. |
This port provides remote access through the SSH/SCP/SFTP protocols. |
|
8101 |
TCP |
Dynamic encryption is used. The cipher suite and strength as per RFC 4253. |
This port provides remote access through the SSH/SCP/SFTP protocols. |
|
8181 |
TCP |
There is no encryption. |
This is a Web console port. |
|
5005 |
TCP |
There is no encryption. |
This port is for Java debugging. |
|
162 |
UDP |
When SNMPv3 is configured, static encryption is used. The cipher suite and strength are dependent on the network element. |
This server port receives SNMP traps from network elements by default. |
|
8282 |
TCP |
Encryption provided by TLS. Strong ciphers are supported. |
This port provides an HTTPS interface to the web application. |