Table of Contents

OpenWRT 19.07.x for RouterBOARD 750Gr3

Introduction

Prepare the system

sudo apt-get update
sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl unzip mercurial

Create the location for the SDK

# Create the working directory 
mkdir 19.07.6
# Change to our working directory 
cd 19.07.6

Checkout the SDK

git clone https://git.openwrt.org/openwrt/openwrt.git
#We may first need to change our directory to the openwrt directory
cd openwrt
git branch -a
#Also to see the tags 
git tag -l
git checkout v19.07.6
git branch
./scripts/feeds update

Install the required packages

./scripts/feeds install coova-chilli
./scripts/feeds install luci
./scripts/feeds install luci-theme-material

Tweak CoovaChilli to include support for JSON

Config.in
# CoovaChilli advanced configuration
 
if PACKAGE_coova-chilli
 
config COOVACHILLI_PROXY
	bool "Enable support for chilli proxy. Required for AAA Proxy through http"
	default n
 
config COOVACHILLI_REDIR
	bool "Enable support for redir server. Required for uamregex"
	default n
 
config COOVACHILLI_MINIPORTAL
	bool "Enable support Coova miniportal"
	default n
 
config COOVACHILLI_USERAGENT
	bool "Enable recording user-agent"
	default n
 
config COOVACHILLI_UAMDOMAINFILE
	bool "Enable loading of mass uamdomains from file"
	default n
 
config COOVACHILLI_LARGELIMITS
	bool "Enable larger limits for use with non-embedded systems"
	default n
 
config COOVACHILLI_JSONINTERFACE
	bool "Enable the JSON interface for the CoovaChilli Controller"
	default n
 
choice
	prompt "SSL library"
	default COOVACHILLI_NOSSL
 
config COOVACHILLI_NOSSL
	bool "No SSL support"
 
config COOVACHILLI_WOLFSSL
	bool "wolfSSL"
 
config COOVACHILLI_OPENSSL
	bool "OpenSSL"
 
endchoice
 
endif
Makefile
#
# Copyright (C) 2007-2018 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
 
include $(TOPDIR)/rules.mk
 
PKG_NAME:=coova-chilli
PKG_VERSION:=1.4
PKG_RELEASE:=10
 
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/coova/coova-chilli/tar.gz/$(PKG_VERSION)?
PKG_HASH:=987647a4c8efe7b1e2d7108d56068e3bd7830d326680f0eaa2c705e4c59c46d9
 
PKG_MAINTAINER:=Jaehoon You <teslamint@gmail.com>
PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=COPYING
 
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=0
 
PKG_CONFIG_DEPENDS:= \
  COOVACHILLI_JSONINTERFACE \
  COOVACHILLI_LARGELIMITS \
  COOVACHILLI_MINIPORTAL \
  COOVACHILLI_NOSSL \
  COOVACHILLI_OPENSSL \
  COOVACHILLI_PROXY \
  COOVACHILLI_REDIR \
  COOVACHILLI_UAMDOMAINFILE \
  COOVACHILLI_USERAGENT \
  COOVACHILLI_WOLFSSL \
  IPV6
 
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/kernel.mk
 
define Package/coova-chilli
  SUBMENU:=Captive Portals
  SECTION:=net
  CATEGORY:=Network
  DEPENDS:=+kmod-tun +librt +COOVACHILLI_MINIPORTAL:haserl \
  +COOVACHILLI_WOLFSSL:libwolfssl +COOVACHILLI_OPENSSL:libopenssl \
  +COOVACHILLI_JSONINTERFACE:libjson-c
  TITLE:=Wireless LAN HotSpot controller (Coova Chilli Version)
  URL:=https://coova.github.io/
  MENU:=1
endef
 
define Package/coova-chilli/description
	CoovaChilli is an open source access controller for wireless LAN
	access points and is based on ChilliSpot. It is used for authenticating
	users of a wireless (or wired) LAN. It supports web based login (UAM)
	which is today's standard for public HotSpots and it supports Wireless
	Protected Access (WPA) which is the standard of the future.
	Authentication,	authorization and accounting (AAA) is handled by your
	favorite radius server.
endef
 
define Package/coova-chilli/config
  source "$(SOURCE)/Config.in"
endef
 
define KernelPackage/ipt-coova
  URL:=http://www.coova.org/CoovaChilli
  SUBMENU:=Netfilter Extensions
  DEPENDS:=coova-chilli +kmod-ipt-core +libxtables
  TITLE:=Coova netfilter module
  FILES:=$(PKG_BUILD_DIR)/src/linux/xt_*.$(LINUX_KMOD_SUFFIX)
  AUTOLOAD:=$(call AutoProbe,xt_coova)
endef
 
define KernelPackage/ipt-coova/description
	Netfilter kernel module for CoovaChilli
	Includes:
	- coova
endef
 
DISABLE_NLS=
 
TARGET_CFLAGS += $(FPIC) -Wno-error
 
CONFIGURE_VARS += \
       ARCH="$(LINUX_KARCH)" \
       KERNEL_DIR="$(LINUX_DIR)"
 
MAKE_FLAGS += \
       ARCH="$(LINUX_KARCH)" \
       KERNEL_DIR="$(LINUX_DIR)"
 
MAKE_INSTALL_FLAGS += \
       ARCH="$(LINUX_KARCH)" \
       KERNEL_DIR="$(LINUX_DIR)" \
       INSTALL_MOD_PATH="$(PKG_INSTALL_DIR)"
 
define Build/Prepare
$(call Build/Prepare/Default)
	( cd $(PKG_BUILD_DIR) ; \
		[ -f ./configure ] || { \
			./bootstrap ; \
		} \
	)
endef
 
define Build/Configure
	$(call Build/Configure/Default, \
	$(if $(CONFIG_COOVACHILLI_PROXY),--enable,--disable)-chilliproxy \
	$(if $(CONFIG_COOVACHILLI_REDIR),--enable,--disable)-chilliredir \
	$(if $(CONFIG_COOVACHILLI_MINIPORTAL),--enable,--disable)-miniportal \
	$(if $(CONFIG_COOVACHILLI_USERAGENT),--enable,--disable)-useragent \
	$(if $(CONFIG_COOVACHILLI_LARGELIMITS),--enable,--disable)-largelimits \
	$(if $(CONFIG_COOVACHILLI_JSONINTERFACE),--enable,--disable)-libjson \
	$(if $(CONFIG_COOVACHILLI_JSONINTERFACE),--enable,--disable)-json \
	$(if $(CONFIG_COOVACHILLI_UAMDOMAINFILE),--enable,--disable)-uamdomainfile \
	$(if $(CONFIG_IPV6),--with,--without)-ipv6 \
	$(if $(CONFIG_COOVACHILLI_WOLFSSL),--with,--without)-cyassl \
	$(if $(CONFIG_COOVACHILLI_OPENSSL),--with,--without)-openssl \
	$(if $(CONFIG_PACKAGE_kmod-ipt-coova),--with-nfcoova) \
	)
endef
 
define Package/coova-chilli/conffiles
/etc/config/chilli
endef
 
define Package/coova-chilli/install
	$(INSTALL_DIR) $(1)/etc
	$(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/chilli.conf $(1)/etc/
	$(INSTALL_DIR) $(1)/etc/chilli
	$(CP) $(PKG_INSTALL_DIR)/etc/chilli/* $(1)/etc/chilli/
	$(INSTALL_DIR) $(1)/etc/hotplug.d/iface
	$(INSTALL_DATA) ./files/chilli.hotplug $(1)/etc/hotplug.d/iface/30-chilli
	$(INSTALL_DIR) $(1)/usr/sbin
	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/chilli* $(1)/usr/sbin/
	$(INSTALL_DIR) $(1)/usr/lib/
	$(CP) $(PKG_INSTALL_DIR)/usr/lib/lib*.so.* $(1)/usr/lib/
	$(if $(CONFIG_PACKAGE_kmod-ipt-coova), \
		$(INSTALL_DIR) $(1)/usr/lib/iptables; \
		$(CP) $(PKG_INSTALL_DIR)/usr/lib/iptables/lib*.so $(1)/usr/lib/iptables/ \
	)
	$(INSTALL_DIR) $(1)/etc/init.d
	$(INSTALL_BIN) files/chilli.init $(1)/etc/init.d/chilli
	$(INSTALL_DIR) $(1)/etc/config
	$(INSTALL_DATA) files/chilli.config $(1)/etc/config/chilli
endef
 
$(eval $(call BuildPackage,coova-chilli))
$(eval $(call KernelPackage,ipt-coova))

Select target system and model

make menuconfig

Next we will select the packages to include

Select required packages

Package Location Comment
coova-chilli Network → Captive Portals Select Enable the JSON interface for the CoovaChilli Controller, Enable support Coova miniportal and OpenSSL as SSL Library
luci Luci → Collections Required for web management
luci-theme-material Luci → Themes Modern theme as a nice-to-have

Kick off the built

make
ls -l bin/targets/ramips/mt7621/
total 9412
-rw-r--r-- 1 system system    1590 Feb 16 15:39 config.buildinfo
-rw-r--r-- 1 system system     343 Feb 16 15:39 feeds.buildinfo
-rw-r--r-- 1 system system    3196 Feb 16 15:41 openwrt-ramips-mt7621-device-mikrotik-rb750gr3.manifest
-rwxr-xr-x 1 system system 4692436 Feb 16 15:41 openwrt-ramips-mt7621-mikrotik_rb750gr3-initramfs-kernel.bin
-rw-r--r-- 1 system system 4915980 Feb 16 15:41 openwrt-ramips-mt7621-mikrotik_rb750gr3-squashfs-sysupgrade.bin
drwxr-xr-x 2 system system    4096 Feb 16 15:40 packages
-rw-r--r-- 1 system system     628 Feb 16 15:41 sha256sums
-rw-r--r-- 1 system system      18 Feb 16 15:39 version.buildinfo