APEX: Automated Parameter Exploration for Low-Power Wireless Protocols (Software)

Archival snapshot of the APEX framework, version 1.0, as used for the experiments in:

M. H. M. Hydher, M. Schuß, O. Saukh, K. Römer, C. A. Boano: "APEX: Automated Parameter Exploration for Low-Power Wireless Protocols", ACM Transactions on Sensor Networks 21(6), Article 59, 2025. DOI: 10.1145/3770918

DOI of this software record: 10.3217/ckwaw-z8h92 Companion dataset record (testbed traces and evaluation results, CC BY 4.0): 10.3217/3dhx0-2k125 Development repository: http://iti.tugraz.at/APEX

Funding: This research was funded in whole, or in part, by the Austrian Science Fund (FWF) [10.55776/DFH5].

License: MIT (see LICENSE inside the archive).

Contents

APEX-framework-v1.0.zip contains:

  • APEX/: the framework itself. Test environments (D-Cube and recorded-trace replay), Gaussian process and linear regression model fitting, the next-test-point selection algorithms GP-LCB, EI, GEL, GER, GUC, RL-Step and RL-Any, result storage, and the confidence metrics α and β. The RL-GP and SVM baselines of the article were run with separate harness code and are not part of this snapshot; their results are in the companion dataset record.
  • Binaries/: firmware used on the D-Cube testbed. Crystal (baloo-crystal-sky.ihex) and RPL (node.hex), each with the D-Cube patch descriptor (custom.xml).
  • config/: configuration files defining the protocol, parameter space, application requirement, model, selection algorithm and termination criteria. crystal_config.yaml and RPL_config.yaml are the configurations used in the article.
  • requirements.txt: Python dependencies.
  • README.md, LICENSE: original project documentation and MIT license.

Note on credentials: running against the live D-Cube testbed requires a personal API key. The archive ships config/dcubeKey.yaml.example as a template; no real key is included. Replaying against recorded traces requires no key.

Reproducing the article's results

  1. Install dependencies: pip install -r requirements.txt
  2. Obtain the recorded traces from the companion dataset record and place Crystal_results.json or RPL_results.json where recordedTestEnvironment.inputPath in the config points.
  3. Set testEnvironment: 'RecordedTestEnvironment', choose the model and nextPointAlgo, and define the application requirement in the config.
  4. From inside the APEX folder, run python Main.py (the configuration paths are relative to that folder).