Home / Learn / Network layer

Device Instance vs MAC Address vs Network Number: Three Addresses, Three Different Jobs

Every BACnet device carries three different addresses, and each one has to be unique in a different place. Most “flickering device” calls come down to somebody mixing up which is which.

Scott Draper · Senior Building Automation Specialist, Niagara N4 Certified

Ask five technicians what a BACnet device's “address” is and you'll get three different answers, all correct. There's the device instance. There's the MAC address. And there's the network number. They look similar in a configuration screen — they're all just numbers — but they do completely different jobs, and they have to be unique in completely different places.

Get that straight and a whole category of intermittent, maddening faults stops being mysterious.

The short version

AddressWhat it identifiesMust be uniqueRange
Device instanceThe device itself, as the front end knows itAcross the entire BACnet internetwork — every network, every building that can reach each other0–4194302
MAC addressWhere the device sits on its own local networkWithin one BACnet network (one MS/TP trunk, one BACnet/IP network)MS/TP: masters 0–127, slaves 128–254. BACnet/IP: IP address + UDP port
Network numberA whole BACnet network (trunk or IP network)Across the internetwork — one number per BACnet network1–65534

Think of it like mail. The network number is the street. The MAC is the house number on that street. The device instance is the person's name — and in BACnet, that name has to be unique across the whole city, not just the street.

Device instance: the name the front end uses

The device instance is the number in the device object's identifier — the one your front end shows as “Device 12045” or similar. When the front end wants to read a point, it thinks in terms of the device instance. It finds the device by instance (a Who-Is for that instance, answered by an I-Am), learns where that device lives on the network, and then talks to it there.

That's why it has to be unique everywhere. The front end has no way to tell two devices with the same instance apart. It asks “who is 12045?” and two different boxes answer.

What a duplicate instance looks like

  • A device that appears and disappears, or “moves” between networks in the device list.
  • Points that show one controller's values some of the time and another's the rest.
  • Writes landing on the wrong box — which is the dangerous one. You command a setpoint on what you think is AHU-2 and a controller in another building changes.
  • Question marks and object errors after a swap, because the front end's database was built from one device's object list and it's now reading another.

Duplicates usually come from two places: a replacement controller loaded with a backup of the device it replaced while the old one is still on the network somewhere, or two contractors numbering their devices from the same starting point on a site that later got joined together. The second is common on campuses. Each building was fine on its own; the day someone connects them, every duplicate surfaces at once.

A numbering scheme saves you. Many sites build the instance from the network number and MAC — network 1200, MAC 45 becomes device 120045, for example. It's not a BACnet rule, just a convention, but it makes duplicates nearly impossible and tells you where a device lives from its name. Whatever scheme a site uses, write it down.

MAC address: the house number on one network

The MAC is the device's address on its own local network. On MS/TP, it's the one-byte station address you set with DIP switches or in the configuration — masters 0–127, slaves 128–254. On BACnet/IP, the “MAC” is effectively the device's IP address and UDP port together.

It only has to be unique within one BACnet network. MAC 12 on trunk 1 and MAC 12 on trunk 2 are perfectly fine — they're on different streets. The router keeps them apart by network number.

What a duplicate MAC looks like

On MS/TP, two devices with the same MAC both think they're the same station. Both answer the token. Both reply to the same Poll For Master. Their transmissions collide on the wire, frames get corrupted, and the token ring stumbles. The classic symptom is two devices that flash on and off in turn — first one is online, then the other, sometimes neither. You'll often see framing or CRC errors in the router's MS/TP diagnostics climb at the same time. It's easy to mistake for a wiring fault, which is why I check addresses right after the meter checks in the MS/TP wiring sequence.

On BACnet/IP, a duplicate IP address is an IP problem first — the switch and every device's ARP table get confused, and one device or the other stops receiving its traffic. A duplicate IP:port pair means BACnet can't tell them apart either.

MS/TP adds one more MAC rule: every master's address has to be at or below Max Master, or it's never polled into the token ring. The Max Master article explains why that fails so quietly.

Network number: the street name routers use

A BACnet network is everything that shares one local medium: one MS/TP trunk, or one BACnet/IP network (which can span several IP subnets joined by BBMDs). Each BACnet network gets a network number, and every network number in the internetwork must be different.

BACnet routers are what use them. A router has a port on each network it connects — say BACnet/IP on network 1 and an MS/TP trunk on network 1200 — and it keeps a routing table of which network numbers are reachable through which port. When the front end sends a message to device 120045, the message carries a destination network number and MAC: network 1200, MAC 45. The router sees 1200, knows that's its MS/TP port, and delivers it to station 45 on that trunk. Routers announce the networks they reach with I-Am-Router-To-Network messages, which is how other routers and front ends learn the map.

What a duplicate network number looks like

Now picture two routers, each with an MS/TP trunk, both configured as network 1200 — usually because the second router was added years after the first and someone copied its configuration. Both announce “I can reach 1200.” The front end, or another router, now has two paths to one network number and no way to know they're different trunks. Messages for network 1200 go to whichever router it learned most recently. Devices on both trunks flicker, discovery returns different results each time you run it, and a device that answered a minute ago now times out.

A related mistake: the router's IP port uses one network number and another router's IP port on the same BACnet/IP network uses a different one. Both are on the same street but calling it by different names. Every router port attached to the same BACnet network must agree on its number — and an IP network and an MS/TP trunk must never share one.

MAC numbers are reused on purpose; network numbers never are. It's normal and fine for every trunk to have a MAC 1. It is never fine for two trunks to share network 1. If you remember one thing from this article, remember that.

Which one broke? A quick triage

SymptomSuspect first
Two devices on the same trunk take turns being online; framing errors climbingDuplicate MAC on that trunk
One device seems to be in two places, or reads the wrong values; writes land on the wrong boxDuplicate device instance somewhere on the internetwork
Whole groups of devices behind different routers flicker together; discovery inconsistentDuplicate network number
New device never joins, wiring is cleanMAC above Max Master, or baud rate mismatch
Front end can't see anything behind a new routerRouter's network numbers not configured, or conflicting with an existing network

Check the whole site before it bites

You can find all of these by staring at spreadsheets. It's slow, and duplicates hide well in a list of three hundred devices. I built a tool for it.

BACnet Config Checker. Paste or type your device list — name, device instance, network number, MAC, IP:port, baud, Max Master, Max Info Frames — and the BACnet Config Checker flags duplicate device instances site-wide, duplicate MACs per network, MACs above Max Master, baud mismatches, network numbers used by two routers or shared between IP and MS/TP, instances out of range and more. It runs entirely in your browser; nothing leaves the page.

Where do you get the list? Export the front end's device list, or run a discovery with a free tool like YABE and copy the results. Do it before you join two sites together, before you add a router, and any time a device starts behaving like it's in two places at once.

  • Device instance: unique across everything that can talk to everything else. Plan a scheme.
  • MAC: unique on its own trunk or IP network. Reuse across trunks is fine.
  • Network number: one per BACnet network, unique across the internetwork, agreed on by every router port attached to it.
  • Write all three down on the riser diagram. The next tech needs them more than you do.

Go deeper

BACnet addressing, routing and discovery, chapter by chapter

Device objects, MS/TP and BACnet/IP addressing, routers and network numbers, BBMDs and the capture filters that prove each one. BAS Communication is the protocol layer underneath this article, written for the tech holding the laptop.

Get BAS Communication — A Field Reference

Found a wrong number or a broken link? Tell me and I’ll fix it.