Skip to content

ZeroTrace AirLeak

Settings Reference

Every persistent firmware setting, its default, and its effect

This page documents every persistent setting in the AirLeak firmware. All settings survive reboot, firmware updates, and power loss — only airleak-factory-reset clears them.

Most settings can be changed from the desktop's AirLeak → Settings → Settings tab. The full set is reachable via the CLI.


Capture mode

PropertyValue
CLIairleak-mode
Typeenum
Valuessetup, monitor
Defaultsetup
Persistedyes

Determines whether the radios are running and whether sessions are recording.

  • setup — radios off, no events flowing. Used when configuring or moving locations.
  • monitor — full sweep. Channel hopper sweeps 1–13, BLE active scan runs, all alert rules armed, session auto-recorded.

After power-cycle, the firmware automatically restores the previous mode before the desktop attaches. A unit last left in Monitor wakes up capturing.

See Capture Modes for the full picture.


Active BLE scan

PropertyValue
CLIairleak-active-scan
Typebool
Valueson, off
Defaulton
Persistedyes

Controls whether the unit transmits SCAN_REQs to elicit SCAN_RSPs from BLE peers.

  • on (default) — captures friendly device names, full Service UUID lists, richer manufacturer data
  • off — passive only, smaller RF footprint, but ~80 % of devices appear nameless

Most BLE devices put their friendly name in the scan response, not the legacy advertisement. Without active scan you'd see all the AirTags and AirPods, but the laptop named DESKTOP-II1L6R8, the TV named [TV] Samsung 5 Series, and the watch named Galaxy Watch5 (VBNY) would all be unnamed.

The single SCAN_REQ packet per peer is a 30-byte burst once per scan window. It is not decoded as anything other than a scan request by surrounding equipment, but technically the unit is transmitting. Set off for fully passive mode.


BLE scan window

PropertyValue
CLIairleak-scan-window
Typeinteger
Unitmilliseconds
Range20–10240
Default75
Constraint≤ scan-interval
Persistedyes

How long the radio listens within each scan period. With the default 75 ms window inside a 100 ms interval, the BLE radio is receiving 75 % of the time.

  • Larger window → more frames captured per period
  • Smaller window → more time for WiFi capture to use the radio

The default is tuned for typical environments (≥10 BLE peers). In a dense public space (50+ peers), increasing to 100 ms matched with a 100 ms interval (100 % duty cycle on BLE) catches more advertisements but starves the WiFi side. The right choice depends on whether BLE or WiFi is your priority.


BLE scan interval

PropertyValue
CLIairleak-scan-interval
Typeinteger
Unitmilliseconds
Range20–10240
Default100
Constraint≥ scan-window
Persistedyes

The total period of one scan cycle (window + gap). Default 100 ms gives a fast scan rate.

A (window=75, interval=100) setup is the sweet spot we ship by default — high BLE duty cycle with enough gap for WiFi to interleave.


Event throttle window

PropertyValue
CLIairleak-throttle
Typeinteger
Unitmilliseconds
Range0–60000
Default1000
Persistedyes

The minimum gap between consecutive same-type events from the same MAC, on the USB stream. Events arriving sooner are aggregated into the device record but suppressed from the wire.

SettingBehavior
0Firehose. Every event streamed. ~500 events/s peak. Use for debugging or short focused captures.
500Aggressive — see updates twice per second per device.
1000 (default)Balanced — most updates per device once per second.
2000Conservative — useful in dense environments to reduce stream pressure.
5000+Very conservative — for headless logging where you only need periodic state.

Important: the throttle only affects the USB stream, not the aggregator or the alert engine. Every captured event still updates last_seen, RSSI, classification, and runs through alert rules. You're choosing how often the desktop sees updates — not how fast the firmware works.

See the Throttle page for capacity numbers.


WiFi channel list

PropertyValue
CLIairleak-channels
Typecomma-separated integer list
Range1–13
Default1,2,3,4,5,6,7,8,9,10,11,12,13
Persistedyes

Which 2.4 GHz channels the channel hopper visits.

Common alternatives:

SettingUse
1,6,11The non-overlapping channels — covers most APs faster, dwells more time per channel
1,11Edges only
6Single channel — useful for focused capture of one AP / room
defaultFull 1–13 sweep

Note: regulatory channels in some regions are limited (e.g. US allows 1–11). The unit doesn't enforce regulatory limits on capture (passive listening is generally allowed) but be aware of local rules.


Per-channel dwell time

PropertyValue
CLIairleak-dwell
Typeinteger
Unitmilliseconds
Range50–2000
Default150
Persistedyes

How long the WiFi radio stays on each channel before hopping.

DwellFull-sweep time (13 channels)Beacon catch rate
50 ms0.65 smisses some
100 ms1.3 smost catches
150 ms2.0 sall catches
250 ms3.3 sall + multiple per AP
500 ms6.5 ssluggish but very thorough

A typical AP beacons every ~102 ms. Dwelling at least 150 ms guarantees catching one beacon per visit, even when the channel-hop timing is unlucky.


Alert-rule enabled state

PropertyValue
CLIairleak-alert-enable / airleak-alert-disable / airleak-alert-list
Typeper-rule boolean
Defaultmost enabled (see below)
Persistedyes

Each alert rule has an enabled flag. Disabled rules don't fire and don't consume cycles.

Default enabled state per rule:

RuleDefault
airdrop_discoverableenabled
findmy_separatedenabled
multi_hour_followerenabled
pii_ssid_in_probeenabled
corp_ssid_in_probeenabled
airport_ssid_in_probeenabled
hotel_ssid_in_probeenabled
cafe_ssid_in_probedisabled (often noisy)
open_network_nearenabled
wep_network_nearenabled
wpa_personal_onlyenabled
wps_enabledenabled
mfp_required_offenabled
deauth_burstenabled
tile_trackerenabled
samsung_smarttag_nearenabled
unknown_tracker_nearenabled
random_mac_no_namedisabled (info-only)
mac_rotation_detectedenabled

See Alert Rules for what each rule does.


Internal counters (read-only)

These survive reboot but you can't write them:

FieldDescription
boot_countNumber of successful boots since factory reset
last_firmware_versionTracks updates — used to detect newly applied firmware
total_uptime_hoursCumulative uptime across all boots
factory_reset_at_msTimestamp of last factory reset

These are surfaced via airleak-info.


Default-restoring

Two ways to return to defaults:

  1. Per-setting — pass default to most commands:

    airleak-channels default
    airleak-throttle default
    airleak-scan-window default
    
  2. All settingsairleak-factory-reset wipes the NVS partition entirely.


Settings & sessions

Setting changes don't break recording sessions. If you change the throttle mid-session, the session continues uninterrupted — only the post-change events are subject to the new throttle. Mode changes (Setup ↔ Monitor) do finalize the active session.

Command Palette

Search for a command to run...