

Each virtual MAC is unique to each saved Wi-Fi SSD on the device, meaning if you have multiple SSIDs on your network, you’ll create multiple MAC addresses for a single device if it needs to remember all of them. If either of these conditions is met, Android will generate a new virtual MAC for that SSID on the next connection.

This behavior ensures that, instead of the hardware MAC address of the device reporting to the network, a virtual address generated on the first connection to a Wi-Fi SSID is reported. On Android, a MAC address isn’t always the right MAC address to track – you also have virtual MACs.Īs part of Android 10, Google introduced MAC address randomization to Android. This hardware MAC is the one that never changes, but it’s not Android’s only MAC address, and it’s not the one your network is likely to report. As of Android 10, this hardware MAC address can only be accessed at the fleet level if you have a device owner set on the device, and if you have a tool like Esper’s console to manage your fleet, you can pull that ID in and apply policies and deploy software appropriately.


Like any device with a network stack, Android can report an immutable hardware MAC address - one that will survive factory resets, network changes, and anything else (short of replacing the physical system on a chip). Hardware MAC vs virtual MAC: What’s the difference?
