GSoC 2019 – OpenWrt Firmware Wizard

The OpenWrt project is a Linux operating system targeting wireless routers. Instead of trying to create a single, static firmware, OpenWrt provides a fully writable filesystem with package management. This frees you from the application selection and configuration provided by the vendor and allows you to customize the device through the use of packages to suit any application. For developers, OpenWrt is the framework to build an application without having to build a complete firmware around it; for users this means the ability for full customization, to use the device in ways never envisioned.

Project Overview

Currently, in order to install OpenWrt on a device, the user has to go through a very confusing process. Later, upgrading to the newer version of OpenWrt is another hassle. And often the end users are not that technically literate to carry out the process smoothly.
The aim of this project is to simplify this whole process by carrying out a number of changes to the OpenWrt buildroot, web based firmware wizard, and a plugin for upgrading the system automatically.

The Project has 3 sub-parts (in order of implementation) which are described as:

  1. Creating meta-data for each target
    To get the data for the sub-parts that follow, the following are required:
    1. Modification of buildroot makefiles to output JSON file for each target device
    2. Add additional metadata of target devices to makefiles
    3. Writing a script to consolidate JSONs for the entire build into a single file to be read buy the Firmware Selector
  2. Initial Firmware Retrieval
    A webapp that helps to select the correct image and how to apply them will help the adoption of OpenWrt.
    Writing a webapp with the following set of features:
    1. Display device manufacturer / model name / hardware version / OpenWrt release / link to images
    2. Display a help for how to apply the image depending on its type (factory/sysupgrade image, rootfs/kernel image)
    3. Select model/images by typing in part of the device model name
    4. Create images with custom package selection
  3. Firmware Upgrades
    Creating a router web interface package for LuCI to check and apply new images.
    Required Features:
    1. Search for updates
    2. Apply update

Progress made till now

Till now, a variety of things have been accomplished such as:

  • Know-how of the OpenWrt build system
  • Know-how of the LuCI plugin development
  • Finalization of JSON schema
  • Project road map for the next phase

Next Phase

As we will be moving toward the next phase of the program, new progress will be made.

The deliverable at the end of the next phase will be:

Generation of JSON that can be accessed as a data source

1. Generation of JSON for each target device along with images
2. Addition of device specific metadata for a sample set
3. Creation of a consolidated JSON file from numerous target JSON files.

About Me

I’m a 20 years old undergrad student from Delhi Technological University, New Delhi, India majoring in Computer Engineering. I have interests in computer programming and design.
I have been a student with Drupal in GSoC ‘17 and my project was to port the Vote Up/Down Module to the latest version of Drupal’s Core.
I am really excited and overwhelmed to be working with my awesome mentors Moritz Warning and Paul Spooren for the summer. Upon finishing this project, I plan to be a consistent member of the community.