7,023 questions
There is no native function for that but you can use scripts like this
import time
import pywifi
def connect_to_network(ssid, password):
wifi = pywifi.PyWiFi()
iface = wifi.interfaces()[0]
profile = pywifi.Profile()
profile.ssid = ssid
profile.auth = pywifi.const.AUTH_ALG_OPEN
profile.akm.append(pywifi.const.AKM_TYPE_WPA2PSK)
profile.cipher = pywifi.const.CIPHER_TYPE_CCMP
profile.key = password
iface.remove_all_network_profiles()
tmp_profile = iface.add_network_profile(profile)
iface.connect(tmp_profile)
def main():
preferred_ssid = "YourPreferredSSID"
preferred_password = "YourPreferredPassword"
while True:
wifi = pywifi.PyWiFi()
iface = wifi.interfaces()[0]
networks = iface.scan_results()
for network in networks:
ssid = network.ssid
band = "2.4GHz" if network.freq < 5000 else "5GHz"
if ssid == preferred_ssid:
print(f"Connecting to preferred network: {ssid} ({band})")
connect_to_network(ssid, preferred_password)
return
print("Preferred network not found. Retrying in 10 seconds...")
time.sleep(10)
if __name__ == "__main__":
main()