BACnet Error Code Decoder BACnet

Turn the numbers a device sends back when it refuses a request into what actually went wrong — error class and code, reject reason, or abort reason.
When a BACnet request fails, the device answers with one of three things: a BACnet-Error (an error class plus an error code), a BACnet-Reject (a reject reason — the message was malformed), or a BACnet-Abort (an abort reason — the transaction was torn down). Pick the kind you got, type the number(s), and read the meaning; or filter the full reference tables below.

The inputs are seeded with an example — edit them to your numbers.

Which kind of failure did the device return?

An Error is a class + code pair — the service ran and the device refused it.

Error code
Error class

Enter a value to decode it.

Every error class, error code, reject reason, and abort reason, filterable across all four at once. Click a value to copy it.

CodeNameWhat it means
0otherCatch-all the device returns when no specific code fits; the real cause is vendor-defined, so check the device's own log or manual.
1authentication-failed
2configuration-in-progressDevice is mid-download or commissioning and can't service the request; retry once the config or program load finishes.
3device-busyDevice is temporarily overloaded, often mid-backup, restore, or program load; back off and retry in a few seconds.
4dynamic-creation-not-supported
5file-access-deniedFile-object read or write refused; usually a permissions issue or the file is locked open by a backup or restore.
6incompatible-security-levels
7inconsistent-parametersService arguments conflict with each other, like a mismatched array size or bad option combo; fix the request the tool built.
8inconsistent-selection-criterion
9invalid-data-typeWritten value's datatype doesn't match the property, such as a real into an enum or integer; correct the datatype in the write.
10invalid-file-access-method
11invalid-file-start-position
12invalid-operator-name
13invalid-parameter-data-type
14invalid-time-stamp
15key-generation-error
16missing-required-parameterThe request PDU left out a mandatory field; a malformed client request, so check the tool or driver encoding.
17no-objects-of-specified-type
18no-space-for-objectDevice's object database is full, so CreateObject fails; delete unused objects or you've hit the device's object limit.
19no-space-to-add-list-element
20no-space-to-write-propertyProperty storage is full, often when adding to a list like a schedule or group; free space or trim existing entries.
21no-vt-sessions-available
22property-is-not-a-listAddListElement or RemoveListElement was used on a property that isn't a list; wrong service for that property.
23object-deletion-not-permittedObject can't be deleted because it's built-in, like the Device object or a fixed I/O point; only dynamic objects delete.
24object-identifier-already-existsCreateObject asked for an instance number already in use; pick an unused instance for that object type.
25operational-problemDevice has an internal fault blocking the operation; check its health and alarms, and it may need a reboot.
26password-failure
27read-access-deniedThe property exists but reading it is blocked; you lack the rights or security level to read that property.
28security-not-supported
29service-request-deniedThe target device refused the service on its own policy, state, or security grounds; the request was well-formed, so check that device, not the network.
30timeoutNo reply within the APDU timeout; a comms problem like wrong MAC or network number, a dead device, or MS/TP token loss.
31unknown-objectThe referenced object doesn't exist on the device; wrong object type or instance, or it was deleted — a rename won't do it, references are by id.
32unknown-propertyThe object doesn't support that property id; wrong property or a proprietary one this device doesn't implement.
34unknown-vt-class
35unknown-vt-session
36unsupported-object-typeCreateObject asked for an object type the device doesn't implement; check the PICS for supported types.
37value-out-of-rangeWritten value is outside the property's allowed range, like a bad priority, COV increment, or setpoint; clamp it to range.
38vt-session-already-closed
39vt-session-termination-failure
40write-access-deniedProperty is read-only or not writable now, such as an input's Present_Value or a command-priority conflict.
41character-set-not-supported
42invalid-array-indexArray index is past the property's size, or index 0 misused; read the array length before indexing into it.
43cov-subscription-failedDevice couldn't set up the COV subscription, usually its subscription table is full; free a slot or fall back to polling.
44not-cov-propertySubscribed change-of-value on a property that doesn't support it; only ones like Present_Value or Status_Flags qualify.
45optional-functionality-not-supportedDevice doesn't implement that optional service or feature; check its BIBBs or PICS before relying on it.
46invalid-configuration-data
47datatype-not-supportedThe datatype used isn't one the device accepts for that property or operation; re-encode with a supported type.
48duplicate-nameThe Object_Name is already taken on this device; names must be unique per device, so choose another.
49duplicate-object-idThe object-identifier collides with an existing object; that instance is already assigned on the device.
50property-is-not-an-arrayAn array index was used on a scalar property; drop the index and read or write the value whole.
51abort-buffer-overflow
52abort-invalid-apdu-in-this-state
53abort-preempted-by-higher-priority-task
54abort-segmentation-not-supported
56abort-other
57invalid-tag
58network-down
59reject-buffer-overflow
60reject-inconsistent-parameters
61reject-invalid-parameter-data-type
62reject-invalid-tag
63reject-missing-required-parameter
64reject-parameter-out-of-range
65reject-too-many-arguments
66reject-undefined-enumeration
67reject-unrecognized-service
69reject-other
70unknown-deviceA responding gateway or proxy doesn't recognize the referenced device instance; a true dead route instead shows up as a network Reject or a timeout, not this.
71unknown-route
72value-not-initializedProperty holds no value yet, typically an empty priority-array slot or a point that was never written.
73invalid-event-state
74no-alarm-configured
75log-buffer-full
76logged-value-purged
77no-property-specified
78not-configured-for-triggered-logging
79unknown-subscriptionReferenced a COV subscription that no longer exists; it expired or was never created, so resubscribe.
80parameter-out-of-range
81list-element-not-found
82busyDevice can't service the request at the moment; wait briefly and retry.
83communication-disabledDeviceCommunicationControl has silenced the device's traffic; send a DCC enable or wait out its timer to restore comms.
84successNo error; the positive result code confirming the operation completed.
85access-deniedRequest refused on authorization grounds; you lack the rights, common with BACnet/SC or key-based security.
86bad-destination-address
87bad-destination-device-id
88bad-signature
89bad-source-address
90bad-timestamp
91cannot-use-key
92cannot-verify-message-id
93correct-key-revision
94destination-device-id-required
95duplicate-message
96encryption-not-configured
97encryption-required
98incorrect-key
99invalid-key-data
100key-update-in-progress
101malformed-message
102not-key-server
103security-not-configured
104source-security-required
105too-many-keys
106unknown-authentication-type
107unknown-key
108unknown-key-revision
109unknown-source-message
110not-router-to-dnet
111router-busy
112unknown-network-message
113message-too-long
114security-error
115addressing-error
116write-bdt-failed
117read-bdt-failed
118register-foreign-device-failed
119read-fdt-failed
120delete-fdt-entry-failed
121distribute-broadcast-failed
122unknown-file-size
123abort-apdu-too-long
124abort-application-exceeded-reply-time
125abort-out-of-resources
126abort-tsm-timeout
127abort-window-size-out-of-range
128file-full
129inconsistent-configuration
130inconsistent-object-type
131internal-error
132not-configured
133out-of-memory
134value-too-long
135abort-insufficient-security
136abort-security-error
137duplicate-entry
138invalid-value-in-this-state
139invalid-operation-in-this-state
140list-item-not-numbered
141list-item-not-timestamped
142invalid-data-encoding
143bvlc-function-unknown
145header-encoding-error
146header-not-understood
147message-incomplete
148not-a-bacnet-sc-hub
149payload-expected
150unexpected-data
151node-duplicate-vmac
152http-unexpected-response-code
153http-no-upgrade
154http-resource-not-local
155http-proxy-authentication-failed
156http-response-timeout
157http-response-syntax-error
158http-response-value-error
159http-response-missing-header
160http-websocket-header-error
161http-upgrade-required
162http-upgrade-error
163http-temporary-unavailable
164http-not-a-server
165http-error
166websocket-scheme-not-supported
167websocket-unknown-control-message
168websocket-close-error
169websocket-closed-by-peer
170websocket-endpoint-leaves
171websocket-protocol-error
172websocket-data-not-accepted
173websocket-closed-abnormally
174websocket-data-inconsistent
175websocket-data-against-policy
176websocket-frame-too-long
177websocket-extension-missing
178websocket-request-unavailable
179websocket-error
180tls-client-certificate-error
181tls-server-certificate-error
182tls-client-authentication-failed
183tls-server-authentication-failed
184tls-client-certificate-expired
185tls-server-certificate-expired
186tls-client-certificate-revoked
187tls-server-certificate-revoked
188tls-error
189dns-unavailable
190dns-name-resolution-failed
191dns-resolver-failure
192dns-error
193tcp-connect-timeout
194tcp-connection-refused
195tcp-closed-by-local
196tcp-closed-other
197tcp-error
198ip-address-not-reachable
199ip-error
200certificate-expired
201certificate-invalid
202certificate-malformed
203certificate-revoked
204unknown-security-key
205referenced-port-in-error
206not-enabled
207adjust-scope-required
208auth-scope-required
209bind-scope-required
210config-scope-required
211control-scope-required
212extended-scope-required
213incorrect-client
214install-scope-required
215insufficient-scope
217no-policy
218revoked-token
219override-scope-required
220inactive-token
221unknown-audience
222unknown-client
223unknown-scope
224view-scope-required
225incorrect-audience
226incorrect-client-origin
227invalid-array-size
228incorrect-issuer
229invalid-token
ClassNameWhat it means
0deviceDevice-level refusal: it's busy, mid-configuration, or has an operational problem and cannot service the request; usually transient, so retry.
1objectThe target object is the problem: unknown-object (wrong instance number), wrong type, or a create or delete the device forbids; verify the object-id.
2propertyThe addressed property is at fault: unknown-property, write-access-denied (read-only), value-out-of-range, or a wrong datatype or array index.
3resourcesDevice is out of memory or space: no room to create the object, add a list element, or store the value; often a full points or objects table.
4securitySecurity check failed: bad password, authentication failure, incompatible security levels, or a key or encryption error blocked the request.
5servicesThe service request is malformed: missing or inconsistent parameters, invalid tag encoding, or a parameter out of range; usually a client or stack bug.
6vtVirtual Terminal session errors: unknown VT class or session, none available, or already closed; a legacy text-terminal feature you'll rarely see.
7communicationMessage-transport problems: comms disabled by DCC, a duplicate or incomplete message, or an unknown network or route; check DCC state and routing.
ReasonNameWhat it means
0otherCatch-all reject for a parse-level rejection that fits none of the defined codes; grab the raw APDU with a sniffer to see what tripped it.
1buffer-overflowRequest exceeded the receiver's decode buffer, so it couldn't be fully decoded and was rejected; usually an oversized APDU to a device with a small Max-APDU.
2inconsistent-parametersEach argument decoded fine but they contradict one another, so the request can't be honored; a combination the service won't accept together.
3invalid-parameter-data-typeAn argument's encoded type isn't what the service expects, like a Real where an Unsigned belongs; usually an encoder bug on the sender.
4invalid-tagA context or application tag is wrong or misplaced, so the decoder lost the byte stream; classic hand-rolled or buggy encoder symptom.
5missing-required-parameterA mandatory argument for the service wasn't present; the sender omitted a required field the decoder needs to proceed.
6parameter-out-of-rangeAn argument decoded but its value sits outside the range that field allows, such as an index or choice beyond the service's limits.
7too-many-argumentsThe request carried more arguments than the service defines; extra trailing parameters the decoder didn't expect to find.
8undefined-enumerationAn enumerated argument held a value not defined for that enum; often a newer or proprietary code the receiver can't map.
9unrecognized-serviceThe PDU parsed but the device doesn't implement that service choice; the requested service simply isn't supported here.
10invalid-data-encodingThe bytes decode but do not form a legal encoding for their datatype — malformed at the datatype level, not just a bad tag. A later-edition reason older stacks will not send.
ReasonNameWhat it means
0otherCatch-all when no listed reason fits; the device tore down the transaction without saying why, so a packet capture is your only lead.
1buffer-overflowReceiver ran out of buffer space mid-transaction, usually a segmented message too big for a small device to reassemble; cut APDU size or segment count.
2invalid-apdu-in-this-stateA segment or ACK the state machine wasn't expecting — often a stale duplicate retransmit, or a client reusing an invoke ID before its prior transaction closed.
3preempted-by-higher-priority-taskDevice intentionally abandoned this lower-priority transaction for more urgent internal work like reinitialization; uncommon, and not a load or slot issue.
4segmentation-not-supportedThe reply won't fit one APDU and this device can't segment; ask for less — smaller ReadPropertyMultiple or ReadRange chunks.
5security-errorA BACnet network-security check failed — bad signature, key mismatch, or replayed message; verify keys and time sync across the secured devices.
6insufficient-securityMessage came in below the security level this operation requires; the peer must sign or encrypt to the policy minimum before the device will proceed.
7window-size-out-of-rangeThe proposed segmentation window size fell outside the legal 1 to 127, or beyond what this device accepts — a botched segment-ACK negotiation.
8application-exceeded-reply-timeThe application layer took too long to build the response and the transaction was torn down; slow backend, blocked point, or an overloaded controller.
9out-of-resourcesDevice has no free state-machine slots, memory, or handles left to continue; common on small controllers under heavy polling — throttle or stagger polls.
10tsm-timeoutTransaction state machine timed out waiting for the next segment or ACK; usually a dropped packet, an offline peer, or MS/TP token loss.
11apdu-too-longThe APDU exceeds the receiver's Max APDU Length Accepted and can't be segmented; shrink the request or response, or enable segmentation.

Enumerations imported from bacnet-stack's error enums (the de-facto machine-readable form of the ASHRAE 135 error tables, which are paywalled) — retrieved 2026-07-12: 8 classes, 225 error codes, 11 reject reasons, 12 abort reasons. Descriptions cover the field-common values; the long tail (BACnet/SC transport, HTTP / TLS / DNS, OAuth-scope codes added in later editions) is listed name-only. Verify exact normative wording against the standard.

All three are a "no," but they fail at different points, and the difference tells you where to look. A BACnet-Error means your request was well-formed and the service ran — the device understood exactly what you asked and refused it, so it hands back an error class (the category) and an error code (the specific reason). This is the common one: unknown-property, write-access-denied, value-out-of-range.

A BACnet-Reject means the request never got that far — the APDU was malformed, mis-encoded, or used a service the device does not implement, so it was thrown out at the protocol layer before the service ran. A BACnet-Abort means a transaction that had already started was torn down mid-flight — almost always segmentation, a TSM timeout, or the device running out of buffer or resources. Reject points at the message; Abort points at the transport or the device's capacity.

A BACnet-Error always carries the pair. The class buckets the problem — device, object, property, resources, security, services, vt, or communication — and the code is the specific message inside that bucket. In practice the code is what you act on; the class just tells you which subsystem raised it. The same code number can legitimately appear under more than one class, so decode both.

Classes 0–63 and the standard code range are ASHRAE's; a class 64 or above is a vendor-proprietary error, and its meaning lives in that manufacturer's documentation — the Vendor ID lookup tells you whose. The Object Reference covers the object types and properties these errors refer to.

What is the difference between a BACnet Error, Reject, and Abort?

All three say a request failed, but at different stages. An Error means the service ran and the device refused it — it returns an error class plus an error code (unknown-property, write-access-denied). A Reject means the request could not be serviced at the protocol layer — malformed, mis-encoded, or asking for a service the device does not implement — thrown out before the service ran, and it returns a reject reason. An Abort tears down a transaction already in progress, usually over segmentation, a timeout, or resources — it returns an abort reason.

What does BACnet error class 2 code 32 mean?

Error class 2 is property and code 32 is unknown-property — you asked for a property the object does not have. Check the property identifier; a common cause is reading an optional property a given device or object does not implement.

What is a BACnet abort with reason APDU-too-long?

The response would not fit in one APDU and the device cannot segment it (or segmentation was not negotiated). It shows up on a big ReadPropertyMultiple or an Object_List read — split the request into smaller reads, or enable segmentation on both ends.

Why do I get write-access-denied writing a BACnet point?

Error code 40, write-access-denied, means the property is read-only or write-protected to you — for example an input's Present_Value, or a property the device simply will not let you write. On a commandable object, writing Present_Value directly can be refused because its value is owned by the program or the priority array — write at a priority instead, or write the object that actually drives it.

Where do I see the raw BACnet error class and code?

A workstation usually shows the decoded text, but a discovery log, an integration error dialog, or a Wireshark decode of the BACnet-Error / Reject / Abort APDU shows the bare numbers. That is when you paste them here.
← All tools