I ran into the same issue... This might be a fix...
A udev script assigns an Ethernet address derived from the UUID of the root partition.
So, each machine's WiFi should be unique and unchanging -- until its root partition is reformatted.
Note that that ‘42’ argument in macaddr.rules should be unique to each network interface whose Ethernet address is being assigned this way.
Further, this prefix less 2 should be exactly divisible by 4
/etc/udev/rules.d/05-wlan0-macaddr.rules:
KERNEL==“wlan0”, ACTION==“add” RUN+=“fixEtherAddr %k 42”
/lib/udev/fixEtherAddr:
#!/bin/sh
#Assign specified interface a fixed, unique Ethernet MAC address constructed
#as given prefix byte followed by 1st five bytes of the root partition’s UUID.
#Ethernet prefix byte value less 2 should be exactly divisible by 4
#e.g. (prefix - 2) % 4 == 0
[ “$2” ] || {
echo “Specify network interface and first Ethernet address byte in hex” >&2
exit 1
}
ethaddr() {
echo -n “$1”
/bin/lsblk -no UUID /bin/findmnt -no SOURCE / |
/bin/tr -d ‘-’ | /bin/fold -b2 |
for byte in 1 2 3 4 5; do read hex; echo -n “:$hex”; done
}
/usr/sbin/ifconfig $1 hw ether ethaddr $2
This file must be made executable (chmod +x /lib/udev/fixEtherAddr)
reboot and you should see the wlan0 interface's Ethernet address like this:
brent@pebble:/etc/udev/rules.d$ /sbin/ifconfig wlan0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
...
ether 42:bb:a9:cc:8a:e9 txqueuelen 1000 (Ethernet)
brent@pebble:/etc/udev/rules.d$ /sbin/blkid
/dev/mmcblk0p1: UUID="bba9cc8a-e9bb-499a-a089-e5394b7a4fde"
until