What does BACnet 'Write Access Denied' mean, and how do I fix it?
Updated 18 September 2026
“Write Access Denied” is BACnet telling you the property you aimed at cannot be written the way you tried — it is a permission answer from the device, not a network error. The usual reasons: the property is read-only (you cannot write an input's Present_Value directly), the object is not commandable so it has no priority array to write into, the point is locked by Out_Of_Service or the controller's own program, or you wrote the right thing to the wrong property. The device is healthy; it is declining this particular write.
What the error actually is
It is a BACnet error class property, error code write-access-denied, returned by the device in response to your WriteProperty. That means communication worked end to end — the device received the request, understood it, and refused it on rules. So this is never a wiring or subnet problem; it is about what you tried to write.
The common reasons, and the fix
1. The property is read-only
You cannot write the Present_Value of an Analog Input or Binary Input — those reflect a physical sensor and are read-only by definition. If you need to force a value for testing, that is what Out_Of_Service plus the manual override is for, not a direct write. Writing to an output or value object is the writable case.
2. The object is not commandable
Only commandable objects (typically outputs, and value objects the vendor made commandable) have the 16-slot priority array you write into. Write to a non-commandable object and you get access denied. Check the object type — see BACnet object types explained.
3. You wrote the value instead of a priority
On a commandable point you write Present_Value at a priority (1–16). Some controllers reject a write that does not specify a priority, or reject writes at priorities they reserve. Choose a priority — 8 is the usual manual-operator slot — and write there. See BACnet priority and stuck overrides.
4. The controller's program owns it
Some devices lock points that their internal logic controls, or require the point to be out of service before an external write is allowed. This is a device policy; the vendor's manual will say so, and forcing past it is not something to do on live equipment without understanding what the program expects.
5. Genuinely protected
Configuration properties, and some vendors' whole objects, are simply not writable over BACnet by design. If the manual says read-only, it is read-only.
How to work out which
- Look at the object type. Input? It is read-only — you want an output or value object.
- Check whether it is commandable (does it have a priority array?). If not, there is nothing to write.
- Write Present_Value at priority 8 rather than as a plain value.
- Read the vendor manual for points the program locks or that need Out_Of_Service first.
Easy BACnet only offers a write where the object is commandable, defaults to a sensible priority, and reads the priority array back so you can see whether the write took — which turns “access denied” from a mystery into an obvious “that point is not writable.” See how to write to a BACnet point.