include make/cleantargets.mk
 include make/ffmpeg.mk
 
+PARALLEL_JOBS := $(shell echo $$((1 + `getconf _NPROCESSORS_ONLN 2>/dev/null || echo 1`)))
+override MAKE = make $(if $(findstring j,$(filter-out --%,$(MAKEFLAGS))),,-j$(PARALLEL_JOBS)) $(SILENT_OPT)
+
 ############################################################################
 #  a print out of environment variables
 #
        @echo ""
 
 wittinobi-neutrino:
-       $(MAKE) neutrino applications multimedia plugins skeleton rootfs
+       $(MAKE) neutrino system-tools applications multimedia plugins skeleton rootfs
        @echo ""
        @echo ' ============================================================================== '
        @echo -e "    \033[32mmake wittinobi-neutrino done\033[0m"
 coolstream-flashimage:
        $(MAKE) flash flash-check flash-finalize
 
-wittinobi-neutrino-flash: $(MAKE) neutrino applications multimedia plugins skeleton rootfs flash-prepare $(BOXTYPE)-flashimage
+wittinobi-neutrino-flash: $(MAKE) neutrino system-tools applications multimedia plugins skeleton rootfs flash-prepare $(BOXTYPE)-flashimage
        @echo ""
        @echo ' ============================================================================== '
        @echo -e "    \033[32mmake wittinobi-neutrino-flash done\033[0m"
        @echo ""
 
 wittinobi-all:
-       $(MAKE) neutrino applications multimedia plugins skeleton bootloader kernel drivers rootfs flash-prepare flash flash-full flash-check flash-finalize
+       $(MAKE) neutrino system-tools applications multimedia plugins skeleton bootloader kernel drivers rootfs flash-prepare flash flash-full flash-check flash-finalize
        @echo ""
        @echo ' ============================================================================== '
        @echo -e "    \033[32mmake wittinobi-all done\033[0m"
 
 # applications.mk
 applications:
-       $(MAKE) $(D)/procps $(D)/busybox $(D)/e2fsprogs $(D)/fbshot $(D)/vsftpd $(D)/mtd-utils $(D)/ntp $(D)/timezone
        if [ $(WIFI) = "yes" ]; then \
                $(MAKE) $(D)/wpa_supplicant; \
        else \
 PHONY += bootstrap includes-and-libs modules
 PHONY += neutrino
 PHONY += neutrino-libs
+PHONY += system-tools
 PHONY += applications
 PHONY += multimedia
 PHONY += plugins
 
        $(REMOVE)/portmap_$(PORTMAP_VER)
        $(TOUCH)
 
+#
+# ofgwrite
+#
+$(D)/ofgwrite: $(ARCHIVE)/ofgwrite-git-$(OFGWRITE_VER).tar.bz2 | $(TARGETPREFIX)
+       $(START_BUILD)
+       $(REMOVE)/ofgwrite-git-$(OFGWRITE_VER)
+       $(UNTAR)/ofgwrite-git-$(OFGWRITE_VER).tar.bz2
+       set -e; cd $(BUILD_TMP)/ofgwrite-git-$(OFGWRITE_VER); \
+               $(BUILDENV); \
+               $(MAKE); \
+       install -m 755 $(BUILD_TMP)/ofgwrite-git-$(OFGWRITE_VER)/ofgwrite_bin $(TARGETPREFIX)/bin
+       install -m 755 $(BUILD_TMP)/ofgwrite-git-$(OFGWRITE_VER)/ofgwrite_tgz $(TARGETPREFIX)/bin
+       install -m 755 $(BUILD_TMP)/ofgwrite-git-$(OFGWRITE_VER)/ofgwrite $(TARGETPREFIX)/bin
+       $(REMOVE)/ofgwrite-git-$(OFGWRITE_VER)
+       $(TOUCH)
+
+#
+# ethtool
+#
+$(D)/ethtool: $(ARCHIVE)/ethtool-$(ETHTOOL_VER).tar.xz | $(TARGETPREFIX)
+       $(START_BUILD)
+       $(REMOVE)/ethtool-$(ETHTOOL_VER)
+       $(UNTAR)/ethtool-$(ETHTOOL_VER).tar.xz
+       set -e; cd $(BUILD_TMP)/ethtool-$(ETHTOOL_VER); \
+               $(CONFIGURE) \
+                       --prefix=/ \
+                       --mandir=/.remove \
+                       --libdir=$(TARGETPREFIX)/lib \
+               ; \
+               $(MAKE); \
+               $(MAKE) install DESTDIR=$(TARGETPREFIX)
+       $(REMOVE)/ethtool-$(ETHTOOL_VER)
+       $(TOUCH)
+
 $(D)/unfsd: $(D)/libflex $(D)/portmap $(ARCHIVE)/unfs3-$(UNFS3_VER).tar.gz
        $(START_BUILD)
        $(UNTAR)/unfs3-$(UNFS3_VER).tar.gz
 
 $(ARCHIVE)/flac-1.3.0.tar.gz:
        $(WGET) http://www.fhloston-paradise.de/flac-1.3.0.tar.gz
 
+$(ARCHIVE)/ethtool-$(ETHTOOL_VER).tar.xz:
+       $(WGET) https://www.kernel.org/pub/software/network/ethtool/ethtool-$(ETHTOOL_VER).tar.xz
+
 $(ARCHIVE)/expat-$(EXPAT_VER).tar.bz2:
        $(WGET) http://downloads.sourceforge.net/expat/expat-$(EXPAT_VER).tar.bz2
 
 $(ARCHIVE)/tzdata$(TZ_VER).tar.gz:
        $(WGET) ftp://ftp.iana.org/tz/releases/tzdata$(TZ_VER).tar.gz
 
+$(ARCHIVE)/ofgwrite-git-$(OFGWRITE_VER).tar.bz2:
+       get-git-archive.sh https://github.com/Duckbox-Developers/ofgwrite-ddt.git $(OFGWRITE_VER) $(notdir $@) $(ARCHIVE)
+
 $(ARCHIVE)/u-boot-$(U-BOOT_VER).tar.bz2:
        $(WGET) ftp://ftp.denx.de/pub/u-boot/u-boot-$(U-BOOT_VER).tar.bz2
 
 
 
 bootstrap: $(BOOTSTRAP)
 
+SYSTEM_TOOLS  = $(D)/busybox
+SYSTEM_TOOLS += $(D)/zlib
+SYSTEM_TOOLS += $(D)/e2fsprogs
+SYSTEM_TOOLS += $(D)/fbshot
+SYSTEM_TOOLS += $(D)/vsftpd
+SYSTEM_TOOLS += $(D)/mtd-utils
+SYSTEM_TOOLS += $(D)/procps
+SYSTEM_TOOLS += $(D)/ntp
+SYSTEM_TOOLS += $(D)/timezone
+ifeq ($(BOXTYPE), armbox)
+SYSTEM_TOOLS += $(D)/ofgwrite
+SYSTEM_TOOLS += $(D)/ethtool
+endif
+
+system-tools: $(SYSTEM_TOOLS)
 
 targetprefix:
        mkdir -p $(TARGETPREFIX)
        fi
 
 $(TARGETPREFIX)/lib/modules: | $(TARGETPREFIX)
-       mkdir -p $@
+       mkdir -p $@/$(KVERSION_FULL)
        if test -e $(SOURCE_DIR)/git/DRIVERS; then \
-               cp -a $(SOURCE_DIR)/git/DRIVERS/$(DRIVER_DIR)/drivers/$(KVERSION_FULL)/* $@/; \
+               cp -a $(SOURCE_DIR)/git/DRIVERS/$(DRIVER_DIR)/drivers/$(KVERSION_FULL)/* $@/$(KVERSION_FULL)/; \
        fi
 
 $(TARGETPREFIX)/lib/libc.so.6: | $(TARGETPREFIX)
 
 
 GCC = $(shell gcc -dumpversion | cut -c 1-3)
 
-SILENT_OPT   := >/dev/null 2>&1
-SILENT       := @
+# default platform...
+MAKEFLAGS             = --no-print-directory
+# If VERBOSE equals 0 then the above command will be hidden.
+# If VERBOSE equals 1 then the above command is displayed.
+ifeq ($(VERBOSE),1)
+SILENT_PATCH          =
+SILENT_OPT            =
+SILENT                =
+WGET_SILENT_OPT       =
+else
+SILENT_PATCH          = -s
+SILENT_OPT           := >/dev/null 2>&1
+SILENT                = @
+WGET_SILENT_OPT       = -o /dev/null
+MAKEFLAGS            += --silent
+endif
 
 ifeq ($(BOXMODEL), $(filter $(BOXMODEL), zee2 link))
   BOXTYPE                = coolstream
   DRIVER_DIR            ?= $(PLATFORM)
   KERNEL_VER             = 4.10.12
   KERNEL_VERSION_FULL    = $(KERNEL_VER)
+  KVERSION_FULL          = $(KERNEL_VER)
   KERNEL_DATE            = 20171103
   KERNEL_TYPE            = hd51
   KERNEL_SRC             = linux-$(KERNEL_VER)-arm.tar.gz
 
 CT_NG_VER_HD2 = a0d58f4
 CT_NG_VER_ARM = 1dbb06f2
 
+ETHTOOL_VER = 4.15
+
 # Linaro GCC Versions
 GCC_VER_HD1 = linaro-4.9-2017.01
 GCC_VER_HD2 = linaro-5.2-2015.11-2
 # ntp; synchronize system clock over a network
 NTP_VER=4.2.8p6
 
+# ofgwrite from Betacentauri: Based upon: mtd-utils-native-1.5.1 and busybox 1.24.1
+OFGWRITE_VER = b7808ce
+
 # openssl; toolkit for the SSL v2/v3 and TLS v1 protocol
 OPENSSL_VER=1.0.2
 OPENSSL_SUBVER=n