Table of Contents


OpenWRT 24.10.x with MESHdesk packages

Minimum hardware requirements

Steps when adding new hardware

Explanation of our modus operandi (MO)

  • To introduce a new device we will:
    1. We create an initial firmware image for development that contains all the required packages and files, but with centralized management disabled.
    2. Then we flash a device with this image and make the device-specific adjustments so that the device works as expected with central management.
    3. We can then use these optimized files to create a production image for the device that contains the device-specific files.
  • This approach allows us to:
    • Minimize the risk of bricking the device (a factory reset resets the device to a normal running OpenWrt)
    • Allow fine tuning of the device without having to create and flash a new firmware image every time we make a change.

First development firmware

These steps are performed ONLY ONCE when you introduce new hardware.

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

This is a one-time process. Once you have customized the files, you can skip this step in the future and simply use the device-specific files if you need to create new firmware for the same hardware.


Production Firmware

  1. Create OpenWRT firmware with the MESHdesk package, which 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 24.10.1 (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

Package selection

Location Package Comment
Base system MESHdesk
Base system sqm-scripts
Kernel Modules → Netfilter Extensions kmod-nft-bridge Include if you want to block or speed limit users
Kernel Modules → Network Devices kmod-dummy Include for internal VLAN (Dynamic RADIUS based VLANs on AP)
Kernel Modules → Network Support kmod-batman-adv Keep the default options
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 → Applications luci-app-sqm
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

Advanced Package selection

Location Package Comment
Kernel modules → USB Support kmod-usb-net-cdc-mbim
Kernel modules → USB Support kmod-usb-net-qmi-wwan
Kernel modules → USB Support kmod-usb-serial-option optional - for AT commands
Kernel modules → USB Support kmod-usb-serial-qualcomm
Kernel modules → USB Support kmod-usb-serial-sierrawireless
Kernel modules → USB Support kmod-usb-wdm
Network → WWAN uqmi
Utilities usb-modeswitch Used with LTE USB dongles
Utilities → Terminal minicom

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/24.10.1/openwrt/scripts/config'
make[2]: 'conf' is up to date.
make[2]: Leaving directory '/home/system/Documents/fw_sdk/24.10.1/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 to modify these files.

The Production Built

Files

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