How to Fix BACnet MS/TP Address Conflicts

BACnetMS/TPtroubleshootingRS-485address conflict
April 2, 2026|8 min read

A BACnet MSTP address conflict occurs when two or more devices on the same MS/TP trunk share the same MAC address (0–127), causing token-passing collisions, CRC errors, and intermittent communication failures. To fix it, physically isolate trunk segments to identify the duplicate, reassign one device to a unique MAC address, and verify that the Max Master parameter on every device is set to equal or exceed the highest MAC address on the trunk.

Understanding BACnet MSTP Address Conflicts

BACnet MS/TP (Master-Slave/Token-Passing) networks rely on unique MAC addresses to manage communication across an RS-485 daisy-chain. Each master device on a trunk holds a MAC address between 0 and 127, and slave devices occupy 128 through 254. Address 255 is reserved for broadcast. When two master devices share the same MAC address, both interpret themselves as the rightful token holder. The result: simultaneous transmissions, electrical collisions on the RS-485 bus, and a network that degrades from unreliable to unusable.

The challenge with a BACnet MSTP address conflict is that symptoms are often intermittent and easy to misattribute. A technician may see a controller drop off the network for a few minutes, reappear, then drop again. The front-end may show stale data from a VAV box or AHU controller. CRC error counters climb. The natural instinct is to suspect wiring or a bad port—and those are valid checks—but duplicate MAC addresses produce nearly identical symptoms and are far harder to catch without systematic diagnosis.

This problem frequently surfaces during retrofit projects where multiple contractors configure devices independently, during commissioning when default addresses haven't been changed, or after a controller replacement where the new unit ships with the same factory-default MAC as an existing device on the trunk.

Symptoms of a BACnet MSTP Address Conflict

Before diving into the fix, confirm that you're actually dealing with a duplicate MAC address. These are the telltale signs:

How to Fix a BACnet MSTP Address Conflict: Step-by-Step

There is no built-in BACnet mechanism that automatically detects or resolves duplicate MAC addresses on an MS/TP trunk. Detection requires manual or tool-assisted diagnosis. Follow these steps in order:

Step 1: Document the Trunk

Before making changes, record the current state of every device on the affected MS/TP trunk. You need the MAC address, Device Instance (Object Identifier), baud rate, and Max Master setting for each controller.

# Example trunk documentation (maintain this as a spreadsheet or text file)
# ---------------------------------------------------------------
# Trunk 3 - AHU-1 Mechanical Room
# Baud Rate: 38400
# Termination: EOL resistors at Panel A (first) and Panel G (last)
# ---------------------------------------------------------------
# MAC   Device Instance   Controller        Max Master
# 001   310001            Tridium JACE 8000  31
# 002   310002            SE AS-P            31
# 003   310003            JCI FEC            31
# 010   310010            Distech EC-BOS-8   31
# 015   310015            Carrier i-Vu CCN   31
# 022   310022            Honeywell Spyder   31

Step 2: Isolate the Conflict

If your BAS front-end shows a device flickering on and off, note its MAC address. That address likely has a duplicate. To confirm, systematically disconnect devices from the trunk:

  1. Disconnect the daisy-chain at the midpoint of the trunk, creating two smaller segments.
  2. Check if the flickering device stabilizes on one segment. If it does, the duplicate is on the other segment.
  3. Continue bisecting the problem segment until you find two devices responding on the same MAC address.

On smaller trunks (fewer than 10 devices), you can also disconnect devices one at a time from the far end of the chain. When the problem clears after removing a specific device, you've found the duplicate.

Step 3: Use a Protocol Analyzer (If Available)

A protocol analyzer on the MS/TP trunk gives definitive evidence. Tools like the Contemporary Controls BASrouter diagnostic mode, Cimetrics BACnet MS/TP Protocol Analyzer, or Optigo Visual Networks can capture raw MS/TP frames and flag duplicate token holders.

If you use Wireshark, you will need an MS/TP-to-IP capture device (such as a BACnet router with packet capture capability) since Wireshark cannot directly sniff RS-485 traffic. Look for these indicators in the capture:

# Wireshark display filter for MS/TP token and CRC issues
# Filter for Poll For Master frames to a specific MAC:
bacnet.mesgtyp == 0x01 && bacnet.daddr == 15

# Filter for Reply To Poll For Master (multiple replies = conflict):
bacnet.mesgtyp == 0x03 && bacnet.saddr == 15

# Filter for token passes to the suspect MAC address:
bacnet.mesgtyp == 0x00 && bacnet.daddr == 15

# CRC error frames (if your capture device flags them):
bacnet.crc_status == "Bad"

Step 4: Reassign the Duplicate MAC Address

Once you've identified the conflicting device, change its MAC address to an unused value. How you do this depends on the controller platform:

# Example: Setting MAC address on a Tridium Niagara station
# Navigate to: Station > Config > Drivers > BacnetNetwork > MS/TP Port
#
# Properties to verify:
#   Mac Address:      22        (must be unique on this trunk)
#   Baud Rate:        38400     (must match all other devices)
#   Max Master:       31        (must be >= highest MAC on trunk)
#   Max Info Frames:  1         (default; increase only if needed)

Step 5: Set Max Master Correctly on All Devices

The Max Master parameter tells each device the highest MAC address to include in token-passing polls. If Max Master is set too low, devices above that address are excluded from the token ring and cannot communicate. If set too high, the trunk wastes time polling non-existent addresses every 50 token cycles (Poll For Master), adding latency.

Best practice: set Max Master on every device to the highest actual MAC address on the trunk, or one value above it. If your highest MAC is 22, set Max Master to 22 or 23 on all devices.

# Max Master guidance
# ---------------------------------------------------
# Highest MAC on trunk:  22
# Recommended Max Master: 22 (or 23 for one spare)
#
# Impact of incorrect Max Master:
#   Too low (e.g., 15):  Devices at MAC 16+ are invisible
#   Too high (e.g., 127): Each unused address adds ~100ms
#                          polling delay per PFM cycle
#   Just right (22-23):   Minimal overhead, all devices polled

Step 6: Verify Baud Rate Consistency

While you're touching device configurations, confirm that every device on the trunk uses the same baud rate. Mixed baud rates cause symptoms nearly identical to address conflicts—CRC errors, dropped frames, and intermittent communication. Common MS/TP baud rates are 9600, 19200, 38400, 76800, and 115200 bps. Most BAS installations standardize on 38400 or 76800.

Step 7: Verify Wiring and Termination

After resolving the address conflict, do a quick physical-layer check to rule out compounding issues:

Step 8: Confirm Resolution

After making changes, monitor the trunk for at least 30 minutes. Watch for:

Common BACnet MSTP Address Conflict Mistakes

Platform and Version Compatibility

BACnet MS/TP address conflicts are protocol-level issues, not vendor-specific bugs. Any device that implements BACnet MS/TP per ASHRAE Standard 135 is subject to the same addressing rules. The troubleshooting steps above apply across all major BAS platforms:

Platform / ControllerMAC Address Config MethodMax Master SupportNotes
Tridium Niagara (JACE, Niagara 4.x+)Niagara Workbench > MS/TP PortYes (configurable)Default Max Master is often 127; reduce to match trunk
Schneider Electric AS-P / AS-BEcoStruxure Building OperationYes (configurable)Check both primary and backup controller addresses
Johnson Controls FEC / FACMetasys SMP / SCTYes (configurable)FEC series uses software config; older FAC may use DIP switches
Honeywell Spyder / Excel 10CARE / Niagara (Honeywell variant)Yes (configurable)Spyder uses CARE tool; Excel 10 uses DIP switches
Distech Controls EC-BOS / ECBNiagara / Front panel LCDYes (configurable)LCD menu provides quick field access to MAC settings
Carrier i-Vu / CCNi-Vu Pro / CCTYes (configurable)Verify CCN-to-BACnet gateway address if applicable
Reliable Controls MACH-Pro / RC-StudioRC-Studio / RC-ArchiveYes (configurable)Address set during commissioning; lockable via software
Contemporary Controls BASrouterWeb interfaceYes (configurable)Also provides MS/TP diagnostic frame counters

The BACnet MS/TP specification supports MAC addresses 0–127 for master devices and 128–254 for slave devices across all protocol revisions. These addressing rules have remained consistent since BACnet was first standardized in ASHRAE 135-1995 through the current revision.

Sources and Attribution

The technical guidance in this entry is informed by the following sources:

MS/TPtroubleshootingRS-485address conflictMAC address

Was this article helpful?

Related Articles

Need to do this remotely? SiteConduit provides Layer 2 access that preserves BACnet broadcasts — no BBMD needed for remote sessions. Join the waitlist.

SC

SiteConduit Technical Team

Idea Networks Inc.

SiteConduit builds managed remote access for building automation. Our knowledge base is maintained by BAS professionals with hands-on experience deploying and troubleshooting BACnet, Niagara, Modbus, and Facility Explorer systems.