Difference between revisions of "Template:Networking rutos software development kit software development kit instructions"

From Teltonika Networks Wiki
(4 intermediate revisions by one other user not shown)
Line 1: Line 1:
 
A <b>software development kit</b> (<b>SDK</b>) is a set of software development tools that provides the possibility to create applications for a certain software package, software framework, computer system or similar development platform.
 
A <b>software development kit</b> (<b>SDK</b>) is a set of software development tools that provides the possibility to create applications for a certain software package, software framework, computer system or similar development platform.
 +
 +
<b>Note:</b> The information in this page is in accordance to using SDK version <b>R_00.07.01</b>. You may read the README file for additional information if using a different SDK version.
  
 
__TOC__
 
__TOC__
Line 7: Line 9:
  
 
<ul>
 
<ul>
     <li>A [[RUTX11]] router</li>
+
     <li>A RUTOS supported router</li>
     <li>[http://releases.ubuntu.com/ Ubuntu 16.04 OS]</li>
+
     <li>[http://releases.ubuntu.com/ Ubuntu 18.04 OS]</li>
     <li>SDK version RUTX_R_00.02.01.1</li>
+
     <li>SDK version <b>R_00.07.01</b></li>
 
</ul>
 
</ul>
  
However, the examples apply to other routers, SDK versions and operating systems. In most cases the difference will only be that of a visual nature.
+
The examples apply to various RUTOS routers, SDK versions and operating systems. In most cases the difference will only be that of a visual nature.
  
 
Most examples provided in this page are independent from each other. But it is highly recommended to acquaint yourself with the basics by reading the "[[#Prerequisites|Prerequisites]]" and "[[#Compiling_a_standard_firmware|Compiling a standard firmware]]" sections first as they contain information that will be necessary in order to understand some aspects of the other examples.
 
Most examples provided in this page are independent from each other. But it is highly recommended to acquaint yourself with the basics by reading the "[[#Prerequisites|Prerequisites]]" and "[[#Compiling_a_standard_firmware|Compiling a standard firmware]]" sections first as they contain information that will be necessary in order to understand some aspects of the other examples.
Line 23: Line 25:
  
 
<ul>
 
<ul>
     <li>A PC, laptop or virtual machine running Linux OS (We recommend using Ubuntu 16.04 LTS)</li>
+
     <li>A PC, laptop or virtual machine running Linux OS (We recommend using Ubuntu 18.04 LTS)</li>
     <li>A RUTX series router RUTX08, RUTX09, RUTX10 or RUTX11</li>
+
     <li>A RUTOS supported router (version R_00.07.00 and up)</li>
 
     <li>An SDK intended for your router, which can be downloaded here: <b>[[Software Development Kit]]</b></li>
 
     <li>An SDK intended for your router, which can be downloaded here: <b>[[Software Development Kit]]</b></li>
 
</ul>
 
</ul>
Line 34: Line 36:
 
  sudo apt update
 
  sudo apt update
  
  sudo apt install -y binutils binutils-gold build-essential bzip2 curl device-tree-compiler devscripts file flex fuse g++ gawk gcc gcc-multilib gengetopt gettext git groff libc6-dev libncurses5-dev libpcre3-dev libssl-dev libxml-parser-perl make ocaml ocaml-findlib ocaml-nox patch pkg-config python2.7 python-dev python-yaml sharutils subversion u-boot-tools unzip vim-common wget zlib1g-dev
+
  sudo apt install -y build-essential ccache ecj fastjar file g++ gawk gettext git java-propose-classpath libelf-dev libncurses5-dev libncursesw5-dev libssl1.0-dev python python2.7-dev python3 unzip wget python3-distutils python3-setuptools rsync subversion swig time libffi-dev libtool xsltproc zlib1g-dev u-boot-tools nodejs nodejs-dev node-gyp npm jq
  
 
Create a new folder (for this example I'll be using a directory called <i>RUTX_R</i> found at my <b>home</b> directory) and extract the SDK archive inside it. You can achieve this with drag and drop or by executing this command via Terminal:
 
Create a new folder (for this example I'll be using a directory called <i>RUTX_R</i> found at my <b>home</b> directory) and extract the SDK archive inside it. You can achieve this with drag and drop or by executing this command via Terminal:
Line 130: Line 132:
 
</li>
 
</li>
 
----
 
----
<li>When the package is selected we need to compile and install him:
+
<li>When the package is selected we need to compile and install it:
 
<ol>
 
<ol>
 
<li>While standing in root directory of the project execute this command in the terminal:
 
<li>While standing in root directory of the project execute this command in the terminal:
Line 147: Line 149:
 
</li>
 
</li>
 
<b>Note:</b> If the package that you want to compile isn't selected in the <b>Kconfig</b>, the install file of the package will not be created
 
<b>Note:</b> If the package that you want to compile isn't selected in the <b>Kconfig</b>, the install file of the package will not be created
 +
 +
[[Category:Other Topics]]

Revision as of 09:40, 16 December 2021

Main Page > FAQ > Other Topics > Template:Networking rutos software development kit software development kit instructions

A software development kit (SDK) is a set of software development tools that provides the possibility to create applications for a certain software package, software framework, computer system or similar development platform.

Note: The information in this page is in accordance to using SDK version R_00.07.01. You may read the README file for additional information if using a different SDK version.

Introduction

This article contains instructions on how to utilize Teltonika SDK packages for RUTx series routers. The resources used in the provided examples are:

The examples apply to various RUTOS routers, SDK versions and operating systems. In most cases the difference will only be that of a visual nature.

Most examples provided in this page are independent from each other. But it is highly recommended to acquaint yourself with the basics by reading the "Prerequisites" and "Compiling a standard firmware" sections first as they contain information that will be necessary in order to understand some aspects of the other examples.

It should also be noted early that the first time you compile a firmware it may take about two hours to complete. On later attempts the duration is considerably lower.

Prerequisites

You will need:

  • A PC, laptop or virtual machine running Linux OS (We recommend using Ubuntu 18.04 LTS)
  • A RUTOS supported router (version R_00.07.00 and up)
  • An SDK intended for your router, which can be downloaded here: Software Development Kit

Compiling a standard firmware

First, you must install the packages required for the SDK to work. Open the Terminal application (Ctrl + ALT + T) and execute the following commands:

sudo apt update
sudo apt install -y build-essential ccache ecj fastjar file g++ gawk gettext git java-propose-classpath libelf-dev libncurses5-dev libncursesw5-dev libssl1.0-dev python python2.7-dev python3 unzip wget python3-distutils python3-setuptools rsync subversion swig time libffi-dev libtool xsltproc zlib1g-dev u-boot-tools nodejs nodejs-dev node-gyp npm jq

Create a new folder (for this example I'll be using a directory called RUTX_R found at my home directory) and extract the SDK archive inside it. You can achieve this with drag and drop or by executing this command via Terminal:

tar -xf ~/Downloads/RUTX_R_GPL_00.XX.YY.Y.tar.gz -C ~/RUTX_R

Note: don't forget to replace the file name and path in accordance with your own circumstances

Open a Terminal inside the SDK directory. You can change the directory in your current terminal (cd ~/RUTX_R/openwrt-gpl-ipq40xx.Linux-x86_64).

Once you open the Terminal, update the feeds:

./scripts/feeds update -a

Now you can compile a standard firmware by executing this command in the terminal:

make

If all is in order, the output should look something like this: Make without jobs v1.gif

Note: the first time you compile a firmware file it may take up to two hours before it is complete. Don't close the Terminal window up until then. Once it is finished, you will find the firmware in the ./bin/targets/ipq40xx/generic directory. It should contain a file openwrt-ipq40xx-qcom-ipq4018-rutx-squashfs-apps.bin, it can be used to upgrade your router's firmware via its web interface.


You can speed up this process by passing an extra argument -j. This argument then compiles the necessary packages in parallel. To know how much jobs you can pass to the compiling process execute this command in the terminal:

 nproc

This commands output should be a number. This number tells how much processing units are available to the current process. Now execute this command in the terminal:

 make -j<nproc_output>

Make with jobs v1.gif

Changing default settings

To create a firmware with different default settings, you must change the default in the config files, which are contained in /openwrt-gpl-ipq40xx.Linux-x86_64/package/. However, there is no unifying system regarding where one should look for config files related to specific services. Therefore, it is very important to acquaint yourself with the UCI system (RutOS configuration file system) in order to successfully navigate through the files:

  • Click here for information on the configuration hierarchy
  • Click here to find what configs are related to which services

In many cases you will find that service names as they are displayed in the router's WebUI are similar to the names of the programs responsible for these services. For instance, Firewall settings can be changed in the /openwrt-gpl-ipq40xx.Linux-x86_64/package/network/config/firewall/files directory. However, if you open the aforementioned directory, you will find that it contains four files:

Networking rutx sdk instructions 3.png

As you can see from the image above, only one of the files holds the Firewall configuration, while other files contain scripts related to the service. This will be different for each case. For example, among Mobile Utilities files, which can be found in /openwrt-gpl-ipq40xx.Linux-x86_64/package/mobutils/src/, you will find even more items, including different config files which serve a different purpose:

Networking rutx sdk instructions 4.png

Selecting packages

To select which packages should be compiled into the firmware is through a special menu called Kconfig. To enter the Kconfig, standing in your projects root directory execute this command in the terminal:

make menuconfig

After executing this command you should see a view like in the picture below. Menuconfig main page v1.png

To move around in the Kconfig use the arrows on the keyboard, space bar to select or to unselect the package, and enter key to enter sub directories of packages.

Note: Do not unselect any package if you do not know what you are doing.


  • Packages have three markings:
    1. <*> - this symbol says that the package will be compiled an added to the firmware
    2. <M> - this symbol says that the package will be compiled but will not be added to the firmware
    3. < > - this symbols says that the package will not be compiled and will not be added to the firmware
    Menuconfig package marking v1.png

  • By default all packages that were marked as to be compiled in the process, can be found separately from the firmware. Packages can be found in directory ~/RUT_X/openwrt-gpl-ipq40xx.Linux-x86_64/bin/packages/arm_cortex-a7_neon-vfpv4.

    This directory also has five sub directories. Packages are categorized in these directories by there type.

    Compiling a single package

    If you ever need to compile a single package you do not need to compile the whole firmware. As an example we will try to compile a text editor called Nano.


  • Now we need to do this steps:
    1. Open the Kconfig by executing this command in the terminal:
      make menuconfig
    2. Navigate to the menu section of Nano text editor. It can be found under “Utilities→Editors”
    3. Select nano package
    4. Three times press the “Exit” entry
    5. Selecting nano package v1.png
    6. Save the configuration by selecting “Yes” in the prompted window
    7. Saving menuconfig v1.png

  • When the package is selected we need to compile and install it:
    1. While standing in root directory of the project execute this command in the terminal:
      make package/nano/compile
    2. Nano compile.gif

    3. The compiled package can be found in the directory ~/RUT_X/openwrt-gpl-ipq40xx.Linux-x86_64/bin/packages/arm_cortex-a7_neon-vfpv4/packages. Upload the nano install file into the router by executing this command in the terminal:
      scp bin/packages/arm_cortex-a7_neon-vfpv4/packages/nano_4.3-1_arm_cortex-a7_neon-vfpv4.ipk root@<router_ip_addr>:/tmp
    4. Connect to your routers command line interface by executing this command in the therminal:
      ssh root@<router_ip_addr>
    5. Change your directory to /tmp directory
    6. Install the nano text editor by executing this command in the terminal:
      opkg install nano_4.3-1_arm_cortex-a7_neon-vfpv4.ipk
    7. Try out the nano text editor by executing this command:
      nano example
    Nano install v1.gif
  • Note: If the package that you want to compile isn't selected in the Kconfig, the install file of the package will not be created