Found this script
#!/bin/sh /etc/rc.common
START=99
STOP=10
USE_PROCD=1
generate_random_mac() {
local prefix="02:$(openssl rand -hex 1):$(openssl rand -hex 1)"
local rest=$(openssl rand -hex 3)
echo "${prefix}:$(echo "$rest" | sed 's/$..$/\1:/g' | sed 's/:$//')"
}
change_bssid() {
local interface_name="\$1"
local wifi_device_config_section
if [ -z "$interface_name" ]; then
logger "Error: Interface name is not specified."
return 1
fi
wifi_device_config_section=$(uci show wireless | grep "wireless.@wifi-device$$.*].ifname='${interface_name}'" | cut -d= -f1 | cut -d. -f2)
if [ -z "$wifi_device_config_section" ]; then
logger "Error: Could not find wifi-device configuration section for interface '$interface_name'."
return 1
fi
local new_bssid=$(generate_random_mac)
local current_bssid
current_bssid=$(uci get wireless."$wifi_device_config_section".macaddr)
logger "Changing BSSID for interface '$interface_name' from '$current_bssid' to '$new_bssid'"
uci set wireless."$wifi_device_config_section".macaddr="$new_bssid"
uci commit wireless
logger "BSSID changed for '$interface_name'. Reloading WiFi..."
}
boot() {
logger "Starting BSSID change for all radios..."
uci show wireless | grep "^wireless.@wifi-device\[[0-9]+$$=" | while read wifi_device_config_line; do
local wifi_device_section=$(echo "$wifi_device_config_line" | cut -d= -f1 | cut -d. -f2)
local interface_name=$(uci get wireless."$wifi_device_section".ifname)
if [ -n "$interface_name" ]; then
change_bssid "$interface_name"
else
logger "Warning: 'ifname' not defined for wifi-device section '$wifi_device_section'. Skipping."
fi
done
logger "Reloading WiFi service to apply all BSSID changes..."
wifi reload
logger "BSSID changes for all radios completed."
}
start() {
boot
}
stop() {
:
}
Maybe someone need it