Table of Contents

OpenWRT 23.05.x with MESHdesk packages

Follow these instructions to include the MESHdesk package on devices capable of running OpenWRT version 23.05.x

Minimum Hardware Requirements

Steps In Adding New Hardware

Explaining our modus operandi (MO)

Initial Development Firmware

These steps are ONCE ONLY when introducing new hardware.

  1. Build OpenWRT with MESHdesk package (MESHdesk disabled).
  2. Flash your device.
  3. Prepare the wan_network file for specific device.
  4. Prepare meshdesk config file for specific device.
  5. Prepare captive_config.json file for specific device.

To structure the documentation better we have dedicated pages to discuss these files including their function and how to tweak them for your specific device.

This is a once only process so after you have made the tweaks to the files you can skip this step in future and simply use those device specific files when you need to build new firmware for the same hardware.

Production Firmware

  1. Build OpenWRT firmware with the MESHdesk package that contains the device specific files for
    1. wan_network
    2. captive_config.json
    3. meshdesk
  2. Flash your device with the production firmware.

Checkout the MESHdesk code

#Do this in the working directory e.g. cd 23.05.2 (on the same level as the openwrt directory)
git clone https://github.com/RADIUSdesk/openwrt-meshdesk.git openwrt-meshdesk

Copying the three components

#cd to the working directory
cp -R ./openwrt-meshdesk/MESHdesk ./openwrt/package 
#cd to the working directory
cp -R ./openwrt-meshdesk/files ./openwrt
#cd to the working directory
cp -R ./openwrt-meshdesk/luci-app-meshdesk ./openwrt/feeds/luci/applications

Updating the available packages

#cd to the working directory
cd ./openwrt
scripts/feeds update -i
#Install the package to make it visible 
scripts/feeds install luci-app-meshdesk

Select Packages To Include With Firmware

#cd to the working directory
cd openwrt
make menuconfig
Location Package Comment
Base system MESHdesk
Kernel Modules → Network Support kmod-batman-adv Keep the default options
Kernel Modules → Netfilter Extensions kmod-nft-bridge Include if you want to block or speed limit users
Languages → Lua lua-mosquitto
Languages → Lua libiwinfo-lua
Languages → Lua luasocket
Libraries libuci-lua
Luci → Collections luci
Luci → Modules luci-compat Needs this modules for our package VERY IMPORTANT
Luci → Applications luci-app-meshdesk Luci App to enable and disable central management
Luci → Themes luci-theme-material Modern theme that is easy to customize
Luci → Libraries luci-lib-httpclient
Luci → Libraries luci-lib-httpprotoutils
Luci → Libraries luci-lib-json
Luci → Libraries luci-lib-jsonc
Network → Captive Portals coova-chilli Select OpenSSL as SSL Library. Also select Enable the JSON interface.. and ..Coova miniportal…
Network → File Transfer curl
Network → Firewall iptables-nft Very important for backward compatibly of iptables
Network → Routing and Redirection relayd
Network → WirelessAPD wpad IEEE 802.1x Auth/Supplicant (built-in full) Un-select wpad-basic also required for Hotspot 2.0
Network batctl-full Un-select batctl-default
Network mosquitto-client-ssl Note the CLIENT package
Network iw-full Required for Hotspot 2.0

Note on Warnings

WARNING: Makefile 'package/utils/busybox/Makefile' has a dependency on 'libpam', which does not exist
WARNING: Makefile 'package/utils/busybox/Makefile' has a dependency on 'libpam', which does not exist
WARNING: Makefile 'package/utils/busybox/Makefile' has a build dependency on 'libpam', which does not exist
WARNING: Makefile 'package/network/services/lldpd/Makefile' has a dependency on 'libnetsnmp', which does not exist
WARNING: Makefile 'package/utils/policycoreutils/Makefile' has a dependency on 'libpam', which does not exist
WARNING: Makefile 'package/utils/policycoreutils/Makefile' has a dependency on 'libpam', which does not exist
WARNING: Makefile 'package/utils/policycoreutils/Makefile' has a build dependency on 'libpam', which does not exist
make[2]: Entering directory '/home/system/Documents/fw_sdk/23.05.2/openwrt/scripts/config'
make[2]: 'conf' is up to date.
make[2]: Leaving directory '/home/system/Documents/fw_sdk/23.05.2/openwrt/scripts/config'
make[1] world
make[2] target/compile
make[3] -C target/linux compile

Files to tweak

Use ssh to gain access to the device in order to tweak these files.

The Production Built

On Device On SDK
/etc/MESHdesk/configs/wan_network openwrt/package/MESHdesk/files/MESHdesk/configs/
/etc/config/meshdesk openwrt/package/MESHdesk/files/MESHdesk/
/etc/MESHdesk/configs/captive_config.json openwrt/package/MESHdesk/files/MESHdesk/configs/
/etc/MESHdesk/reporting/report_to_server.lua openwrt/package/MESHdesk/files/MESHdesk/reporting