You built a presence-based automation two years ago: when your phone connects to home Wi-Fi, the lights turn on and the thermostat wakes from Away mode. It worked reliably. Then Apple pushed iOS 15’s “Private Wi-Fi Address” and Android matched with “Randomized MAC,” and slowly your automation stopped triggering. The phone still connects to Wi-Fi. The router still sees it. But your smart home controller is looking for a MAC address the phone no longer uses on this network. This guide covers what MAC randomization actually does, how to identify whether it broke your automations, and the two categories of fix.
What MAC randomization does and why
Historically, every network device announced a permanent MAC address to every network it joined. This made devices identifiable across networks: coffee shops, airports, and your neighbor’s Wi-Fi could all see that your device MAC XX:XX:XX:XX:XX:XX had been on their network. Third parties bought and sold this data to build cross-location movement profiles.
iOS 14 (2020) introduced Private Wi-Fi Address, which uses a different randomized MAC per network. Android 10 introduced Randomized MAC with the same behavior. Both defaulted to on for new networks. The randomized MAC is stable per SSID (your phone uses the same random MAC for your home Wi-Fi every time), but different networks see different MACs, and the MAC your phone shows now is not the MAC it showed before you enabled the feature.
How to know MAC randomization broke your automation
The symptom pattern:
- The automation used to trigger on “device joins network” or “device present at IP.”
- It stopped triggering around the time you upgraded your phone OS or replaced your phone.
- The phone still connects to Wi-Fi normally.
- The router’s admin panel shows the phone as connected, but with a MAC that starts with a locally-administered bit (the second character is 2, 6, A, or E in hex).
- Your smart home controller’s device list shows the old MAC as “offline” or “unknown.”
The two categories of fix
Category one: teach the automation the new MAC.
Simplest, least invasive. Log into your router, find the phone’s current MAC (in the connected-clients list), and update the automation to reference that MAC instead of the old one. This works until:
- You reset your phone or change SSID name, which regenerates the random MAC.
- The phone’s OS rotates the MAC (some OS versions do this every 24 hours; most keep it stable per SSID).
Category two: switch the automation off MAC-based presence entirely.
More robust. Use one of the alternatives below.
Alternatives to MAC-based presence detection
| Method | Reliability | Setup effort | Battery cost on phone |
|---|---|---|---|
| App-based geofence (Home Assistant Companion, Alexa app, Google Home) | High | Install app, grant location, define home zone | Low, uses OS’s built-in geofence |
| Bluetooth beacon in the home | Medium (Bluetooth range is short) | Buy beacon ($15-30), configure app | Medium, requires active Bluetooth scanning |
| Router-side presence (via UniFi, Asus, or third-party firmware) | High for family members with distinct MACs; unreliable with randomization | Configure router webhook or MQTT integration | None on phone |
| Manual toggle via widget or NFC tag | High but requires user action | Buy NFC tag ($3), configure | None |
| Static IP reservation on phone plus ping-based detection | Medium, breaks if phone is asleep | Router DHCP reservation | Low |
The recommended migration for most households
Install the ecosystem’s own app on each family member’s phone: Home Assistant Companion, Alexa app, Google Home, or Apple Home. Enable location permission “Always” (or “While using the app plus background” if Always feels intrusive). Define your home as a geofence zone in the app’s settings. Then rebuild the automation to trigger on “Person arrives at home” or “Person leaves home.”
This has three real advantages over MAC-based presence:
- It works even when your phone is not connected to home Wi-Fi (e.g. cellular on the driveway).
- It survives MAC rotation because it does not use MAC.
- It identifies WHICH person is present, not just that some device is present.
The trade-off is battery cost. Each ecosystem’s app claims 1-3% of daily battery for geofence duty. Most households find this acceptable.
The specific case: family of four with mixed phones
Household with two iPhones and two Android phones. Original setup: router-side detection with each family member’s MAC hardcoded into a Home Assistant automation. After iOS 16 and Android 13 upgrades, three of four phones started randomizing on the home SSID. Two lost presence entirely, one had a stable-but-changed MAC.
Migration path:
- Install Home Assistant Companion on all four phones.
- Create four Person entities in Home Assistant, each linked to the Companion app’s device tracker.
- Rebuild the arrival and departure automations to trigger on the Person entity’s state change rather than a specific MAC.
- Retire the router-webhook integration entirely.
Result: presence detection accurate to about 30 seconds of arrival, no MAC dependencies, and per-person granularity that was not possible before.
The specific case: iOS “Rotate Address” setting
iOS 18 added an optional stronger privacy mode: “Rotate Address” within the Private Wi-Fi Address setting. When enabled, the phone rotates its randomized MAC every few hours even on the same network. If you have this on, even the “update the automation to the new MAC” fix will only last a few hours.
To check: Settings, Wi-Fi, tap the i next to your home network. Private Wi-Fi Address should be on. If you see “Rotate address” as a sub-setting, it may be on. Consider either turning off Rotate Address on the home network specifically (per-network setting), or switching to geofence-based presence permanently.
Frequently asked questions
Can I turn off MAC randomization on my home network only? Yes. On iOS, Settings, Wi-Fi, tap i next to home SSID, toggle Private Wi-Fi Address off. On Android, long-press the network name, Modify Network, Privacy, Use device MAC. Both settings are per-network.
Does turning off randomization for my home Wi-Fi reduce my privacy on other networks? No. Per-network setting means other networks still get a random MAC.
Do smart plugs, cameras, and other IoT devices use MAC randomization? Almost none do. MAC randomization is currently limited to consumer smartphones, tablets, and some laptops.
Can I combine MAC-based and geofence-based presence for redundancy? Yes. Trigger the automation if EITHER source reports present. The trade-off is occasional false positives (automation fires when your phone rejoins Wi-Fi from sleep even though you never left).
Will the router see a phone’s real MAC ever? No, not with randomization on. The router only sees the randomized MAC. There is no way to recover the phone’s physical MAC without turning the feature off on the phone.