Support Suite
Open-source Python tooling for bulk flashing, configuration, licensing, and OTA updates across your entire drone fleet.
The DLSE Commercial Support Suite is an open-source Python library and set of ready-to-use scripts that automate the most time-consuming parts of managing a large fleet of ESP32s. Instead of configuring, flashing, and licensing each drone one by one, you set up one reference device, export its configuration, and let the suite handle the rest.
What It Can Do
Batch serial flash + configure + activate
batch_install_dlse_allinone.py
Initial setup of a new fleet — plug in ESP32s one by one
Batch OTA firmware update
batch_ota_update_allinone.py
Upgrading all drones in the field over Wi-Fi
Batch OTA license activation
batch_ota_license_activation.py
Licensing a fleet of ESP32s over Wi-Fi in one pass
Scan network for DLSE devices
Library function
Discovery, health checks
Upload / download licenses
Library function
Re-licensing, backup
Get activation key from device
Library function
Programmatic licensing workflows
Remote reset of ESP32
Library function
Automated test pipelines
Change settings over Wi-Fi
Library function
Dynamic reconfiguration without USB
Download flight logs via the ESP32 bridge
Library function
Post-show data collection
Prerequisites
Python 3.10 or higher
A DroneBridge account and secret token (obtained from drone-bridge.com/dlse dashboard) for licensing features
The latest DLSE release binaries downloaded and extracted locally
Installation
Each script contains configuration variables near the top (such as MY_SECRET_TOKEN, ESP_SERIAL_PORT, or subnet addresses). Open the script you intend to use and update these before running.
Batch Serial Flash, Configure & Activate
Overview
batch_install_dlse_allinone.py is the main script for setting up a fresh fleet. You run it once, then plug in your ESP32 modules one by one via USB. For each device it automatically:
Flashes the DLSE firmware over the serial connection
Writes your exported configuration (SSID, IPs, GPIO pins, MAVLink settings, etc.)
Assigns a unique hostname, AP SSID, and static IP based on a sequential index (e.g., drone 55, 56, 57…)
Requests a license from the DroneBridge license server and activates the device
Logs everything to a
/logsfolder
Re-flashing an already-licensed device? The script detects that the ESP32 already has a valid license, pulls it from the device before flashing, and re-applies it after. You will not lose license credits by re-running the script on the same hardware.
Workflow
Configure one reference ESP32
Set up a single ESP32 exactly as you want all drones in your fleet to be configured.
Flash DLSE using the online flasher
Connect to the ESP32's Wi-Fi AP (
DroneBridge for ESP32, passworddronebridge)Open the web interface at
http://192.168.2.1and configure all settings (UART pins, baud rate, Wi-Fi credentials, power management, etc.)Test the configuration with your show drone and flight controller
Activate this reference device manually using your token from drone-bridge.com and the online license generator
Export the settings using the web interface — this produces a
.csvfile you will pass to the batch script
Prepare the suite
Download the latest DLSE release binaries from drone-bridge.com/dlse and extract them into the DLSECommercialSupportSuite folder. The folder name (e.g., DroneBridge_ESP32DLSE_BETA3) is used as the --release-folder argument.
Run the batch script
Arguments:
--token
Your secret token from the drone-bridge.com dashboard
--release-folder
Folder containing the DLSE firmware binaries
--settings-file
The .csv settings file exported from your reference ESP32
--start-index
Starting index for per-drone unique values (AP SSID suffix, hostname, static IP suffix)
The --start-index parameter allows automatic per-device differentiation. With --start-index 55, the first ESP32 you plug in will get a hostname of <your_hostname>55, an AP SSID of <your_ssid>55, and a static IP suffix of 55. The index increments automatically for each subsequent device.
Plug in ESP32s one by one
With the script running, simply connect your ESP32 modules to the computer via USB one at a time. The script detects each new device, flashes it, configures it, and activates it — then waits for the next one. The whole process per device takes under a minute.
All actions are logged to the /logs folder for your records.
Offline activation is also supported. If the license server is unavailable, the script checks the /received_licenses folder for a previously downloaded license file matching the device's activation key, and applies it locally.
Batch OTA Firmware Update
Overview
batch_ota_update_allinone.py scans your Wi-Fi subnet, discovers all DLSE devices, and pushes a new firmware version to each of them over Wi-Fi. No USB cable or physical access needed. Existing settings and licenses are preserved across an OTA update.
Skybrush Live must be shut down before running this script. The script needs to bind to the broadcast port that Skybrush Live also uses for device discovery.
Usage
Update all detected devices:
Update only devices running a specific version (useful when your fleet has mixed versions):
Arguments:
--release-folder
Path to the folder with DLSE firmware binaries
--subnetmask
IP range to scan, e.g. 192.168.1.0/24
--target-version
(Optional) Only update ESP32s running this specific version. Devices on other versions are skipped.
What Happens
The script scans the subnet, lists all discovered DLSE devices with their current firmware versions, and asks for confirmation before proceeding. It then pushes the firmware binary matching each device's chip type (C3, C5, or C6) and reports success or failure per device.
Batch OTA License Activation
Overview
batch_ota_license_activation.py continuously scans the subnet and activates any unlicensed DLSE device it finds — over Wi-Fi, without needing a USB connection. Run it while your drones are powered on and connected to the show network, and it will work through the fleet automatically.
Skybrush Live must be shut down before running this script.
Usage
Arguments:
--token
Your secret token from the drone-bridge.com dashboard
--subnetmask
IP range to scan
--esp32localbrcstport
Must match udp_local_port in each ESP32's configuration
--esp32remotebrcstport
Must match wifi_brcst_port in each ESP32's configuration
The script scans on a loop. As drones are powered on and appear on the network, they are discovered, their activation key is read, a license is requested from the DroneBridge license server, and the license is installed on the device. All licenses are also saved locally to /received_licenses as a backup.
Library Functions & Individual Examples
Beyond the batch scripts, the suite exposes a Python library (DroneBridgeCommercialSupportSuite.py) for building your own automation tools. Individual example scripts are provided for each function:
example_esp32_get_license.py
Request a license file using an activation key
example_params_update_flash.py
Update configuration parameters in the CSV and flash them
example_esp32_ota_update.py
OTA firmware update for all detected devices
example_esp32_download_log.py
Download flight controller logs via the ESP32 bridge
example_esp32_download_log_MAVSDK.py
Same, using MAVSDK
OpenAPI Definition
The suite also ships with an OpenAPI definition (api_definition/openapi_definition.yaml) describing the full DLSE REST API. Use it to generate client code in any language, explore the API in tools like Swagger UI, or build your own tooling on top of the DLSE configuration endpoint.
See the Developers — DLSE API Definition section for more.
Last updated