Installation
Supported Systems
As of now, ElCap does not support Windows 10 or older, as well as Intel-based Macs. If you would like more systems to be supported, please let us know at support@tridentiot.com.
Windows
- Download the latest elcap-vX.X.X-windows.msi file from the releases page.
- Double click on downloaded file to run the installer.
- Follow the steps in the installer UI.
Linux
- Download the latest elcap-vX.X.X-linux.tar.gz file from the releases page.
- Extract elcap using:
tar -xzf elcap-vX.X.X-linux.tar.gz
- Copy the extracted
elcap
binary to your local binary directory: sudo cp elcap /usr/local/bin/
Alternatively, you can add the /path/to/elcap to your .bashrc file by appending export PATH="/path/to/elcap:$PATH"
if you want to avoid using sudo
.
MacOS
- Download the latest elcap-vX.X.X-macos.zip file from the releases page.
- Extract elcap using:
unzip elcap-vX.X.X-macos.zip
- Copy the extracted
elcap
binary to your local binary directory: sudo cp elcap /usr/local/bin/
Alternatively, you can add the /path/to/elcap to your .zshrc file by appending export PATH="/path/to/elcap:$PATH"
if you want to avoid using sudo
.
First Run
Note: Once a version of the SDK is installed you can create projects from it even if you're not connected to the Internet. You'll need to be online the first time you build a project with that version of the SDK, however, as the Docker image needs to be built. Once the Docker image is built, all subsequent edit/build/flash can happen without an Internet connection.
Once ElCap is in your PATH, go ahead and run it. You will be presented with a prompt to accept the license agreement. On the first run, ElCap will look like this:
$ elcap
Downloading v0.3.24 [###############################################] 18.33 MiB/18.33 MiB (0s)
Usage: elcap [OPTIONS] COMMAND[ARGS]...
ElCap CLI v0.3.24
Note that you can get help on individual subcommands by appending the
help option:
$ elcap tokens --help
$ elcap tokens write --help
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --verbose -v Enable verbose output │
│ --force-engine [podman|docker] Container Engine [default: None] │
│ --accept-license Accept Our Software License Agreement│
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────╮
│ version See version info │
│ doctor Check your environment │
│ flash Flash the specified file or the current project │
│ build Build the current project │
│ clean Delete the current project's build artifacts │
│ new Create a new project │
│ config See or modify elcap's configuration │
│ sdk Install and manage SDK Versions │
│ image Manipulate an existing image │
│ device Interact with a connected device │
│ tokens Configure or modify device tokens │
│ project Configure an existing project │
│ self Manage your ElCap installation │
╰──────────────────────────────────────────────────────────────────────────────╯
Please read the Trident IoT Master Software License Agreement at https://tridentiot.com/master-software-license-agreement/
Do you accept the license? [y/n] (n): y
Check-in With The Doctor
Next, you can run elcap doctor
to check your setup. If you don't already have Docker installed it will let you know.
$ elcap doctor
✅ elcap config should exist
❌ A container engine should be installed and in your PATH
🛠 Install Podman (recommended) or Docker
🛠 Confirm Podman or Docker is available in your PATH
✅ JLink v8.40 or newer must be installed
❌ J-Link drivers/rules must be installed
🛠 Run `elcap doctor --setup-jlink` to see available options
✋ Fix the above issues and try again
If you see this, you should install and set up either Docker Desktop or Podman on your system and make sure it's added to your PATH. Once that's set up correctly, the doctor will let you know. From there, ElCap will automatically use Docker or Podman to build your projects. Don't worry, you can have both installed, ElCap will default to Docker if it's available. However, you can use a --force-engine
option with the build
command to force the use of one or the other. See the build
section below for more details.
$ elcap doctor
Checking your environment...
✅ elcap config should exist
✅ Docker should be installed and in your PATH
✅ The docker daemon should be running
✅ JLink v8.40 or newer must be installed
❌ J-Link drivers/rules must be installed
🛠 Run `elcap doctor --setup-jlink` to see available options
✋ Fix the above issues and try again
It's unlikely that the JLinkTools check will fail, because ElCap handles installing it for you. But if you see ❌ JLink v8.40 or newer must be installed
, you can manually install it, and then set the path to it using elcap config set tools.jlink_path /path/to/jlink_tools
Last, but not least, Windows and Linux users will need to set up the drivers or rules for JLink. You can do that by running elcap doctor --setup-jlink
and following the instructions.
Windows Example
$ elcap doctor --setup-jlink
J-Link USB drivers are needed for device communication.
Choose how you'd like to proceed:
1. Install automatically (recommended)
- Will request administrator permission
- Installs drivers seamlessly
2. Get manual installation instructions
- You handle the installation yourself
- No admin prompt from this application
3. Skip for now
- Continue without drivers
- J-Link functionality will be limited
Enter your choice [1/2/3] (1): 1
⠧ Installing drivers...
SEGGER driver installer completed successfully
Linux Example
elcap-dev doctor --setup-jlink
udev rules are required for USB access to J-Link devices.
Choose how to proceed:
1. Move automatically (recommended)
- Invokes sudo to move /home/remotetesting/.config/elcap/deps/jlink/x86_64/99-jlink.rules to
/etc/udev/rules.d/99-jlink.rules
- Reloads rules
2. Show manual commands
- You will copy and reload rules yourself
3. Skip for now
- USB permissions may be insufficient until installed
Enter your choice [1/2/3] (1): 1
Copied 99-jlink.rules and reloaded udev rules
Now the doctor should be happy.
$ elcap doctor
Checking your environment...
✅ elcap config should exist
✅ Docker should be installed and in your PATH
✅ The docker daemon should be running
✅ JLink v8.10k or newer must be installed
👍 Looks good!
Creating Your First Project
Our New Project Wizard can walk you through creating a new project with elcap new
.
$ elcap new
Creating a new project...
SDK Releases:
1. v2025.10.00-ga
2. v2025.07.00-beta00
3. v2025.05.00-beta00
4. v2025.03.00-beta00
Select SDK Version (v2025.10.00-ga): 1
Project Name: My Awesome Project
Project Path (my_awesome_project):
1. T32CZ20B
2. T32CM11C
Input target (T32CZ20B): 2
1. bootloader
2. zigbee
Input category (bootloader): 2
1. Door Lock SZED: Sleepy end device door lock application
2. Empty ZED: Blank slate project with no preconfigured ZCL profile
3. On/Off Bulb ZED: Non-sleepy end device on/off bulb application
4. On/Off Switch SZED: Sleepy end device on/off switch application
5. Zigbee RF Test App: TIS TRP Zigbee RF test application
6. Zigbee Sniffer: Application to turn any board into a Zigbee packet sniffer
Input template (door_lock_szed): 3
******
[project]
name = "My Awesome Project"
category = "zigbee"
target = "T32CM11C"
template = "zigbee\\on_off_bulb_zed"
default_hex = "-dkncm11-signed-combined.hex"
[sdk]
version = "v2025.10.00-ga"
******
Do you confirm generation? [y/n] (y): y
This will create a directory called my_awesome_project
in your current directory which will have all the code and information needed to build your project. Take a look at the generated trident.toml
file.
$ cat my_awesome_project/trident.toml
[project]
name = "My Awesome Project"
category = "zigbee"
target = "T32CM11C"
template = "zigbee\\on_off_bulb_zed"
default_hex = "-dkncm11-signed-combined.hex"
[sdk]
version = "v2025.10.00-ga"
This directory will have everything elcap needs to build your project, so you can check it into source control and share it with other developers on your team.
Building Your First Project
Make sure you're in the project directory.
Now run the build
subcommand.
$ elcap build
...
[100%] Built target my_awesome_project-neptune-combined_hex
[100%] Built target my_awesome_project-custom-combined_hex
NOTE: You can also use the --force-engine
option to specify which container engine to use. So, the command could look like elcap build --force-engine podman
That's all there is to it!
Flashing Your First Project
Flashing is (almost) just as easy! First connect your device to your USB port and run:
With only one device connected, the flash command will run automatically for that device. However, if more than one device is connected, you may see something like:
$ elcap flash
Select a device:
1. Trident IoT Device (USB, Serial: 900040424, COM: COM4)
2. Trident IoT Device (USB, Serial: 900039517, COM: COM3)
3. Trident IoT Device (USB, Serial: 900039517, COM: COM5)
Select device (default: 900040424):
Simply select the device you would like to flash to.
What's Next?
Now that you can create, build and flash your project you'll probably want to make it do something interesting. Check out our SDK docs for more information on how to do that.
Need Help?
First, keep in mind that elcap
has extensive help menus with more information. For example, try running --help
on the flash
subcommand.
$ elcap flash --help
Usage: elcap flash [OPTIONS]
Flash the specified file or the current project
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --usb INTEGER USB serial number of the JLink device (cannot be used with --ip) [default: None]│
│ --ip TEXT IP address of the JLink device (cannot be used with --usb) [default: None] │
│ --alias TEXT Alias for the JLink device (cannot be used with --usb or --ip) [default: None] │
│ --target TEXT flash target │
│ --file PATH file to flash [default: None] │
│ --interface TEXT programming interface [default: SWD] │
│ --speed INTEGER programming speed [default: 4000] │
│ --help Show this message and exit. │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
This will give you details on the available commands and their options.
You can also reach out to us at support@tridentiot.com.