BACnet discovery

How to diagnose a BACnet scan timeout

First identify where the scan stopped: before any I-Am, while enumerating one device, or during property reads. Then test the network path with the same interface and target, compare broadcast with a directed request, and inspect the exact BACnet error. Increasing the timeout first can hide the real fault.

Reviewed 2026-07-15

Run these checks in order

  • Confirm the selected local interface and BACnet/IP UDP port. A valid IP route on the wrong interface is still the wrong test.
  • Decide whether the scan used local broadcast or a known unicast target. Record the device-instance range and any object cap.
  • If broadcast found nothing, try a known device IP with directed Who-Is and a directed ReadProperty of the Device object.
  • If I-Am arrived, stop treating the problem as device discovery. Check Object_List length, the last index read, maximum APDU, and the first abort, reject, or silence.
  • If several devices work and one stalls, isolate that device. Do not increase the timeout for the entire network.
  • If a scan fails only while polling or COV is active, check local driver contention and notification volume, then repeat with the competing work stopped.

What the symptom usually narrows

Observed resultLikely boundaryNext check
No I-Am from any deviceInterface, bind port, broadcast domain, firewall, or driver startupVerify interface and capture the outbound Who-Is
Broadcast empty, directed read worksBroadcast or routed-discovery behaviorCheck BBMD or foreign-device needs; keep the known target
I-Am arrives, then scan stallsObject enumeration or metadata readsInspect Object_List index progress and APDU errors
One device is slowDevice-specific load, firmware, routing, or object inventoryRun a device-only target and record the last successful operation
Scan fails only with active COVShared datalink contention or notification pressurePause COV for comparison and inspect driver logs
Scan ends at the same wall timeClient or server deadlineRead the terminal scan error and confirm the configured deadline

Sondwave timeout behavior

A Sondwave BACnet Who-Is probe waits two seconds for I-Am responses. A complete API discovery sweep has a 15-minute end-to-end deadline. Recent scan records show running, completed, failed, or cancelled status with counts and an error. The activity console and system-log view expose scan events and daemon logs.

For a known target, a silent directed Who-Is can fall back to directed ReadProperty discovery. A broadcast-only sweep does not use that fallback.

Discovery, reads, and COV traffic share serialized access to the BACnet datalink. The driver yields between COV pump windows to reduce contention. If a scan slows under heavy notification traffic, compare it with COV stopped and inspect the driver logs.

Record enough evidence to reproduce the timeout

scan mode: broadcast | targeted
local interface: <name>
target or subnet: <redacted>
Who-Is response count: <n>
last device and operation: <device instance, Object_List index, property>
first protocol error: <timeout, reject, abort, bind failure>
scan deadline and elapsed time: <duration>
COV or polling active: yes | no
packet capture available: yes | no

References