Issue
Product Line
EcoStruxure Building Operation, Andover Continuum, TAC IA Series
Environment
- EBO Error Log Tool
- Continuum bCX4040 (BACnet)
- Continuum b3s
- Building Operation Multi-purpose Controller (MPC/V)
- Building Operation Room Controller (RPC/V)
- Building Operation IP-IO
- EBO Trace and System logs
Cause
BACnet error messages in logs use a combined 32‑bit value that includes:
- BACnetErrorClass (BEC) in the high 16 bits
- BACnetErrorCode (BE) in the low 16 bits
Values often appear with 0x800 prefix indicating hexadecimal formatting. Without decoding, the error meaning is unclear.
Example:0x8001001F
- 0x10000 → Error Class = Object
- 0x001F → Error Code = Unknown Object
Resolution
Understanding the Error Structure
A BACnet error value is formed as:
0x8 0 0 [ErrorClassHex] [ErrorCodeHex]
High 16 bits Low 16 bits
- Remove the
0x800prefix, if present. - Convert high 16 bits to identify Error Class.
- Convert low 16 bits to identify Error Code.
Common Interpretation Example
Error: 0x8001001F
- Error Class: 1 → Object
- Error Code: 1F (31 decimal) → Unknown Object
Meaning: Device does not recognize the object.
Possible reasons include: - Expected program/database not loaded
- Object deleted or missing
- b3 device memory wiped after power failure
Error Classes (High 16 Bits)
(From BACnet Specification Clause 18)
May not include 0x8000. (Example: could be 0x5002B instead of 0x8005002B for COV subscription failed)
|
Error Class |
Hex(0x800) |
Dec |
Notes |
|
device |
0 |
0 |
|
|
object |
1 |
1 |
|
|
property |
2 |
2 |
|
|
resources |
3 |
3 |
|
|
security |
4 |
4 |
|
|
services |
5 |
5 |
|
|
vt |
6 |
6 |
|
|
proprietary |
|
|
64 is the first available code for proprietary error classes |
|
client |
7FFD |
|
0x7FFD0000 |
|
Reject |
7FFE |
|
0x7FFE0000 (error code is BACnetReject) |
|
Abort |
7FFF |
|
0x7FFF0000 (error code is BACnetAbort) |
Error Codes (Low 16 Bits)
A subset of codes from BACnet Clause 18:
|
Error Code |
Hex (0x) |
Dec |
|
other |
0 |
0 |
|
authentication_failed |
1 |
1 |
|
configuration_in_progress |
2 |
2 |
|
device_busy |
3 |
3 |
|
dynamic_creation_not_supported |
4 |
4 |
|
file_access_denied |
5 |
5 |
|
incompatible_security_levels |
6 |
6 |
|
inconsistent_parameters |
7 |
7 |
|
inconsistent_selection_criterion |
8 |
8 |
|
invalid_data_type |
9 |
9 |
|
invalid_file_access_method |
A |
10 |
|
invalid_file_start_position |
B |
11 |
|
invalid_operator_name |
C |
12 |
|
invalid_parameter_data_type |
D |
13 |
|
invalid_time_stamp |
E |
14 |
|
key_generation_error |
F |
15 |
|
missing_required_parameter |
10 |
16 |
|
no_objects_of_specified_type |
11 |
17 |
|
no_space_for_object |
12 |
18 |
|
no_space_to_add_list_element |
13 |
19 |
|
no_space_to_write_property |
14 |
20 |
|
no_vt_sessions_available |
15 |
21 |
|
property_is_not_a_list |
16 |
22 |
|
object_deletion_not_permitted |
17 |
23 |
|
object_identifier_already_exists |
18 |
24 |
|
operational_problem |
19 |
25 |
|
password_failure |
1A |
26 |
|
read_access_denied |
1B |
27 |
|
security_not_supported |
1C |
28 |
|
service_request_denied |
1D |
29 |
|
timeout |
1E |
30 |
|
unknown_object |
1F |
31 |
|
unknown_property |
20 |
32 |
|
removed |
21 |
33 |
|
unknown_vt_class |
22 |
34 |
|
unknown_vt_session |
23 |
35 |
|
unsupported_object_type |
24 |
36 |
|
value_out_of_range |
25 |
37 |
|
vt_session_already_closed |
26 |
38 |
|
vt_session_termination_failure |
27 |
39 |
|
write_access_denied |
28 |
40 |
|
character_set_not_supported |
29 |
41 |
|
invalid_array_index |
2A |
42 |
|
cov_subscription_failed |
2B |
43 |
|
not_cov_property |
2C |
44 |
|
optional_functionality_not_supported |
2D |
45 |
|
invalid_configuration_data |
2E |
46 |
|
datatype_not_supported |
2F |
47 |
|
duplicate_name |
30 |
48 |
|
duplicate_object_id |
31 |
49 |
|
property_is_not_an_array |
32 |
50 |
Frequently Encountered Errors
| Hex Value | Decoded Meaning | Notes |
|---|---|---|
| 0x8000001E | Device + timeout | Device offline or non‑responsive |
| 0x8001001F | Object + unknown object | b3/AS memory wipe, missing database |
| 0x80020020 | Property + unknown property | Invalid property reference |
| 0x80020025** | Property + value out of range | Writing 0 to multi‑state object |
| 0x80020028 | Property + write access denied | Permission issue |
| 0x8002002C | Property + not COV property | Subscription attempted on non‑COV property |
| 0x8002002E | Property + invalid configuration data | Often caused by invalid COV alarm config |
| 0x80030000 | Resources + out of memory | Device resource exhaustion |
| 0x80050007 | Services + inconsistent parameters | Parameter mismatch |
| 0x80050019 | Services + operational problem | General service failure |
| 0x8005001D | Services + service request denied | Device rejected request |
| 0x8005002B / 0x5002B | Services + COV subscription failed | May appear without 0x800 prefix |
**Note: This error is not limited to writing an out-of-range value to a BACnet object. It may also occur when a configuration object is incomplete or incorrectly bound. For example, a Floating Limit Alarm with no Setpoint Reference bound may repeatedly generate BACnet error 0x80020025 ("Property + value out of range"). If this error is recurring, review alarm configurations, bindings, and referenced objects in addition to checking for illegal BACnet writes.
Wireshark Tip
Use the filter:
bacapp.type == 5
This displays APDU error packets with decoded Class and Error fields in decimal. In this example, the BACnet device returns an error for Device (0) and operational problem (25) when responding to a readPropertyMultiple.