What does BACnet 'Write Access Denied' mean, and how do I fix it?
Updated 11 October 2026
“Write Access Denied” means the device received your write and refused it. Communication is fine. The common reasons: you wrote the Present_Value of an input point that is not Out Of Service; the object or property is read-only on that device (or on the gateway or JACE exposing it); or the vendor has locked the point. Retrying the same write will not help. Write to a different point, or change the device's configuration.
What the error is
It is a BACnet Error reply to your WriteProperty with error class property and error code write-access-denied. Easy BACnet shows it as Write failed: Write access denied. It tells you the network and the device are working, and that the problem is the target of the write, not the value. Other error codes are explained in the BACnet error, reject and abort codes list.
Other codes point elsewhere. invalid-data-type means the value was the wrong kind (a REAL sent to a binary point, for example); value-out-of-range means the number is outside what the point accepts, such as state 5 on a three-state Multi-state Value; unknown-object or unknown-property means you addressed something that is not there.
Why a device refuses
1. It is an input point
The Present_Value of an Analog Input, Binary Input or Multi-state Input comes from the physical input. The standard makes it writable only while Out_Of_Service is true, which disconnects the object from the sensor; otherwise the device refuses the write. Easy BACnet warns you before you try. Some devices also refuse Out_Of_Service writes from the network. If you meant to change a setpoint or command an output, look for the matching Analog Value, Binary Output or Analog Output instead. See BACnet object types explained.
2. The object or property is read-only
Not every Value object is writable; the vendor or the programmer decides. Points exported from a JACE or a protocol gateway are often exposed read-only unless someone set them writable. Configuration properties such as Object_Name, Units and Description are commonly read-only too. If the device or gateway marks it read-only, there is no way round it over BACnet; it has to be changed in the device's configuration.
3. The vendor or the program has locked it
Some controllers lock points that their own logic drives, or only accept writes at certain priorities. Pushing past that on live equipment without knowing what the program expects is a bad idea. Ask the controls contractor which points are meant to be commanded from outside.
What does not cause it
Leaving the priority out does not. A WriteProperty to a commandable Present_Value with no priority is stored at priority 16, the lowest; it is accepted but may be outranked. That is the “I wrote it and nothing changed” case, covered in why doesn't my BACnet value change when I write to it? Easy BACnet always sends a priority (8 by default).
Check it on your own network. Easy BACnet is a free Android app that finds BACnet IP devices and reads their points in a couple of taps.
Get it on Google Play