top of page

BACnet Max Master: If You Don’t Know, Now You Know

  • Writer: Alex Khachaturian
    Alex Khachaturian
  • Nov 10
  • 7 min read
Two BACnet devices connected by a glowing line labeled 'Token' in a tech setting. A blurred figure is in the green-lit background.

Promise: One tiny setting decides whether your MS/TP loop feels crisp or clogged. Dial Max Master correctly and the segment snaps to attention.


TL;DR

  • Set Max Master = highest active master + small buffer (~+2). Stop roll-calling ghost MACs every lap.

  • Verify with data. Router counters and a short capture expose token delays and Poll For Master (PFM) spam.

  • Measure the lift. Shorter token rotation → faster commands, fewer drops, calmer tenants.


Key Takeaways

  • What it is: In BACnet MS/TP (Master-Slave/Token-Passing), Max Master caps the highest MAC address a device treats as a potential master.

  • Why it exists: To bound discovery and token passing so you don’t waste time polling empty addresses.

  • Why it’s usually wrong: Vendors ship 127 by default. Real segments often top out in the 20–60 range.

  • How to see the waste: In router stats, PFM counts and token rotation time; in captures, chains of PFM frames to unused MACs.

  • Pairing that matters: Proper Max Info Frames, good RS-485 bias/termination, and a current MAC map make the gains durable.


Quick Links


Next Read



Why Any Of This Matters To You

A surgical wing kept feeling “laggy.” Operator writes took half a second to bite; trending looked like it had a cold. MS/TP at 38.4 kbps, ~28 VAVs and a router. Two old devices had been demoed months ago, but their MAC slots were never reused. Every master was still at Max Master = 127. That meant each token lap wasted time calling out to seats 30…127, an empty stadium.


We set Max Master = 32 across the segment (highest live MAC = 29). Token rotation fell from ~650 ms to ~140 ms. PFMs collapsed. Tenants stopped noticing “slow air.” We didn’t touch a wire.


What BACnet Max Master Actually Does (and why the word “Master” stuck)

MS/TP = Master-Slave/Token-Passing over RS-485. Only masters can initiate talking; slaves only respond. The token passes in ascending MAC order (0–127). Stations use Poll For Master (PFM) frames to discover which MACs are active, but only up to their own Max Master.

  • Max Master = the highest address a station will consider a potential master.

  • Too high → each token holder polls empty space every rotation.

  • Too low → real high-MAC devices never join the ring.


Why “Master”?

Early serial buses needed a clear initiator to avoid collisions on a shared wire. The initiator was called the master, responders slaves. BACnet retained this at the MS/TP layer. Many teams now prefer controller/agent or primary/secondary to avoid loaded terms, but the spec and countless vendor UIs still use MS/TP by name. The core idea remains: who’s allowed to initiate vs who only responds, and Max Master bounds the set of initiators.


MS/TP in One Metaphor:

Numbered Chairs & a Talking Stick

Picture 128 numbered chairs (0–127) around a table. Only people in master chairs may speak when they hold a talking stick (the token). Everyone else observe.

  • The stick moves in ascending seat order.

  • When there’s an empty stretch, the speaker calls roll fast, “30? 31? 32?”, that’s PFM.

  • Max Master is the highest chair anyone will even check.

    • If your last occupied seat is 29, leaving Max Master = 127 forces a long roll-call (30…127) every lap.

    • Tighten to 31/32 and the roll-call ends almost immediately.


  • Max Info Frames = how many sentences a speaker may say before passing the stick.


That’s MS/TP: one stick, numbered chairs, optional roll-call, and a cap on the last chair worth checking.


Quick Win (5 minutes)

  1. Find the highest active master MAC on the segment (router/supervisor list).

  2. Set Max Master = highest active MAC + 2 (e.g., highest 29 → set 31 or 32).

  3. Push to all masters on that segment (router, supervisory controllers, master-capable VAVs).

  4. Reboot if required, then verify: token rotation shortens; PFMs drop; commands feel snappier.


Recommended Gear


Wireshark: See the Token & the Wasted PFM's

Router stats (fastest):

Most BACnet routers expose MS/TP port counters: Token passes/sec, PFM, Retries, CRC/Overrun. Before you touch settings, record a one-minute baseline. After you tighten Max Master, PFMs and token rotation time should drop.


Direct MS/TP capture (deeper):

  • Tap the bus with an isolated RS-485 adapter (RX-only if possible).

  • In Wireshark, enable the BACnet MS/TP dissector (Analyze → Enabled Protocols).

  • If your capture tool is vendor-specific, export to pcap and open in Wireshark.

  • Add a column for MS/TP Frame Type.

  • Use filters: bacnet (broad), or isolate Token / Poll For Master frames.

  • What you’ll see:

    • Token frames = the talking stick changing hands.

    • PFM frames = roll-calls through empty seats.

    • NPDU/APDU = actual reads/writes/COVs (the payload you care about).


Before/After you change Max Master, take equivalent captures (e.g., 2–5 minutes) at the same time of day. You should see:

  • PFM counts fall (shorter or fewer roll-calls),

  • Token rotation tightens (more payload, less dead air),

  • Retries drop if electrical issues aren’t dominating.


Step-by-Step Playbook

1) Map the Segment (Know your ceiling)

Outcome: You know the highest active master MAC and device count.

  • Pull the device list from the supervisor or router; confirm against an as-built MAC map.

  • Mark master-capable devices vs responders.

  • Note baud rate and segment length; higher baud exaggerates noise sensitivity.


2) Baseline the Bus (Numbers before tweaks)

Outcome: Solid pre-change evidence.

  • Record PFM, token/sec, retries, CRC counters (PRE).

  • Optional: Record a 2–5 minute pcap (PRE) with a short note: “No writes issued.”


3) Choose the Value (No heroics, just math)

Outcome: A tight, safe Max Master bound.

  • Formula: Max Master = Highest Active Master + 2

  • If known adds are coming above that value, plan the new bound now and apply once hardware lands.


4) Push Consistently (Every master)

Outcome: No stragglers undo your gain.

  • Update every master-capable device on the segment (router, head controllers, master VAVs).

  • Vendors bury this setting in different spots (Network, Advanced, BACnet setup). Find them all.


5) Re-measure Immediately (Prove it)

Outcome: Verified improvement or quick rollback.

  • Re-read counters; repeat your 2–5 minute capture (POST).

  • Expect PFM ↓, token rotation ↓, command latency ↓.


6) Tune Max Info Frames (Payload vs fairness)

Outcome: Balanced throughput.

  • Start 1–4 on VAVs; higher on routers/heads if appropriate; test.

  • Too high → a loud talker hogs the stick; too low → excessive token passing with limited payload.


7) Lock It In (Make it durable)

Outcome: Your fix survives the next retrofit.

  • Update the MAC map, segment sheet, and commissioning checklist: “Set Max Master = X for all masters.”

  • Store PRE/POST screenshots and pcaps in the job folder.

  • Add a weekly or monthly router-stats trend (PFM, token/sec, retries) so drift or new devices are obvious.


Cross-check: If results underwhelm, run the RS-485 Line Bias & Termination Health Check and, if needed, clip a PicoScope. Electrical faults regularly masquerade as “protocol slowness.”


Troubleshooting (Symptom → Cause → Fix)

Symptom: Token takes ~1 s to come back; commands lag.

Cause: Max Master left at 127; highest live ≈ 25–40 → excessive PFM roll-calls.

Fix: Set Max Master = highest live + 2 on all masters; verify PFM and rotation drop.


Symptom: New device at MAC 61 never joins.

Cause: Some stations capped at 60.

Fix: Raise Max Master above the highest live (e.g., 63); confirm token includes 61.


Symptom: “Traffic is heavy,” trends jitter even after tightening.

Cause: Max Info Frames too low on talkers → too much token passing, not enough payload.

Fix: Bump Max Info Frames modestly (e.g., 1 → 4) on key masters; retest.


Symptom: Intermittent drops remain.

Cause: Electrical issues (missing EOL, multiple bias sources, noise).

Fix: Run the RS-485 health check; correct EOL/bias; confirm single-point shield bond.


Symptom: Comm storms on schedule changes.

Cause: Many devices + loose Max Master + Who-Is floods at peak.

Fix: Tighten Max Master, stagger writes, consider proxy caching at router/supervisor.


Symptom: Duplicate MAC alarm after a retrofit.

Cause: Two devices shipped with the same factory MAC.

Fix: Assign unique MACs; re-validate the ring.


Symptom: One wing stays slow, others are fine.

Cause: Daisy-chained segments across floors; one noisy spur drags all.

Fix: Split the segment or add a router; re-bias and retune per new segment.


FAQ

Should Max Master equal the highest live MAC or sit slightly higher?

Use highest live + ~2 so a near-term add doesn’t break the ring.


Do all masters need the same bound?

Yes. One straggler at 127 still scans to 127 whenever it holds the token.


How is Max Master different from Max Info Frames?

Max Master limits who may initiate (upper bound on masters). Max Info Frames limits how much each master may say per turn.


Does baud rate change the recommendation?

No. The logic stands. The impact magnitude scales with baud: at 9.6/19.2 kbps you feel waste more; at 76.8 kbps you still feel it, just less.


What if I don’t know the true highest MAC?

Build the MAC map once. Until then, pick a conservative bound (e.g., 63) for small loops, then refine.


Will tightening make discovery harder?

No. So long as all real masters are ≤ Max Master. Devices above that bound won’t join (by design).


Field Checklist

  • List devices; mark MAC and role (master/slave).

  • Note baud and run length.

  • Record PFM, token/sec, retries, CRC (PRE).

  • Optional: 2–5 min pcap (PRE).

  • Set Max Master = highest MAC + 2 on all masters.

  • Re-read counters; confirm PFM ↓, rotation ↓ (POST).

  • Tune Max Info Frames if needed.

  • If unstable: fix EOL/bias/shield.

  • Update the MAC map and store evidence.


Results & ROI

Rule-of-thumb math (38.4 kbps):

  • Highest live MAC = 29, but devices keep Max Master = 127.

  • Empty gap = 98 addresses.

  • Effective per-address overhead (PFM + turnarounds) ≈ ~2–5 ms.

  • Per rotation: ~98 × 3 ms ≈ 294 ms burned on nothing.

  • If the ring otherwise needed ~200 ms, you’re at ~500 ms, > 2× slower.

  • Tighten to 32 → empty scan ≈ 3 addresses → reclaim ~>250 ms every cycle. Over a busy hour, that’s thousands of wasted polls gone, cleaner trends and visibly faster writes.


At 9.6 kbps: The pain is ~4× worse.

At 76.8 kbps: The pain is ~½, but still real across thousands of rotations.


Show this math with your PRE/POST screenshots. Nobody argues with fewer PFMs and faster token cadence.


Wrap-Up

If MS/TP feels sluggish, don’t start with firmware or baud. Start with Max Master. Bound the ring to active MACs + a tiny buffer, push it to every master, and verify PFMs ↓ and token rotation ↓. Pair with sane Max Info Frames and solid RS-485 hygiene for durable speed.


One action: Today, pull the MAC list for your worst segment and set Max Master = highest live + 2 on all master-capable devices. Screenshot router counters pre/post and archive them.


Personal note: Tightening Max Master is the fastest reliability win in controls, I’ve seen “sticky” loops snap to instant without touching a wire. Ship it, document it, make it your default.

Comments


bottom of page