Bringing Routers and Modems together in style

Build Your own Firmware

custom firmware

Build Your own ROOter Firmware

If you have the need it is possible to build your own custom ROOter firmware using the same scripts and packages as the latest GoldenOrb release. You can customize it even more by adding your own selection of packages to the existing ROOter features.

Linux Distro

In order to build a custom image you need to have a copy of Linux running on a computer or in a Virtual Machine. To operate correctly the Linux system requires at least 80GB of disk space and 2GB of RAM. While it is possible to create a build system on almost any Linux distro, Ubuntu is used here since that is known to work.

Virtual Machine on Windows

If you have a computer running Windows then you have a choice of two different Virtual Machines that can be used to run a Linux distro. These are VirtualBox and VMWare Player. Download and install the Virtual Machine of your choice from these links.

While you can use almost any version (distro) of Linux as your build system it is recommended you use Ubuntu as the examples shown here will be from that distro. It is recommended that you create a new Virtual Machine of Ubuntu using an ISO file available from Ubuntu Downloads.

A guide to creating a VMWare VM using an ISO is Create VMWare VM while a guide to creating a VirtualBox VM using an ISO is Create VirtualBox VM.

You will find that, by default, the display size of the Virtual Machine is 800x600 and is too small to see the windows correctly. To change this click on the Activities button in the upper left corner of the Desktop. In the Search box that appears type display.

Click on the Resolution button.

Select a larger screen size and then close the box.

Click on the Apply button to change the screen resolution. In the smaller screen size you may need to move the dialog window over to see this button.

Create the Build System

Be aware that you must do much of your work in building images is using the Commandline Terminal and by editing files with a text editor.

The first step in creating an Lede build system is to download the ROOter Build package for either Lede Snapshot or Lede 17.01.4. Leave this package in the Zip file for now.

Start your Linux Virtual Machine or go to your Linux computer. Remember that Ubuntu will be used for these examples. If you use other Linux distros then you'll have to adjust accordingly.

Click on the Files icon to open the File Manager.

Right click on an empty area and select New Folder. Create a folder named Lede.

Double click on this folder to open it.

Copy the ROOter Build package into the Lede folder. This can be done via Drag and Drop from Windows if the proper Addons or Tools have been installed. Otherwise you will have to copy it over your Network.

Right click on the Zip file and select Open with Archive Manager.

Click on the Extract button and then on the Extract button in the following dialog. This will extract the files to the Lede folder. After this is completed, close the Archive Manager.

Linux Prerequisites

Before you can start building images you must ensure that Linux has all the programs installed that are needed by the Lede build system. The Lede Build Install page has more information on the requirements needed for the various Linux distros.

Right click on an empty space and select Open in Terminal.

If you are using Ubuntu then type ./prereq in the Terminal window and press Enter. You will be asked for your password before the programs are installed. If you are using a different distro then you'll have to enter the list of commands from the Lede Build Install page.

This will take a while to complete and Linux may go to sleep in the mean time. Click on the Desktop and press Enter to wake it up. Close the Terminal program when this is complete.

Preliminary Work

Before starting to build an image you must create the configuration file for your router and modify certain scripts. The PDF file router-list.pdf conatins information about all the routers supported by ROOter. By using this information you can set up an automated build of the desired image.

The following is an explaination of the information contained in router-list.pdf.

9. mkxiaomi
Target System Mediatek Ralink MIPS
Subtarget MT7620
Target Profile Xiaomi MiWifi Mini
Directory /configfiles/Xiaomi
Xiaomi Mini

The first line is the name of the script file used to create the image, in this case mkxiaomi.

The next three lines (two in some cases) are the information needed when creating a configuration file for the Xiaomi router. That is followed by the ROOter package name that will be used by this router, ext-rooter8.

This is followed by the name we give to the configuration file that we create, .config_xiaomi. Note that this file name starts with a period ( . ).

Next are the names of the folders that contain files to be included in the image package that will be created by the mkxiaomi script. This is followed by the name of the router, Xiaomi Mini.

With this information we can now create an image for our router.

Double click on the source folder to open it and view the contents.

This folder contains all the configuration files and scripts used to build ROOter images.

Create a Configuration File

If you wish to add extra packages to the image that are not contained in the normal ROOter build then you must modify the router's configuration file. Otherwise you can skip this section and go directly to building the image.

Go to the configfiles folder and copy the configuration file for your router to the source directory. In this example it is .config_xiaomi. If you find that the files in this folder do not appear you may have to enable the viewing of hidden files first.

After the configuration file has been copied to the source folder you must rename it.

If there is already a file named .config in the folder it must be deleted by right clicking and selecting Delete. Then rename the other configuration file to .config by right clicking on it and selecting Rename.

Now right click on an empty space and type Ctrl-Alt-T to open the Linux Terminal program.

Type make menuconfig on the commandline and press Enter.