I just got a pi zero W and I'm trying to run it on my home wifi which has two access points (EAP245). However, for some reason, the 0W insists on connecting to the AP with the lowest signal, not the strongest. It connects to the one with almost -70dBm although it obviously sees the other AP with -30dBm (which is also placed right next to the zero right now as a test).

First I thought it was a problem with channel selection, so I swapped channels on the APs, but it didn't matter. Now I'm suspecting that it is choosing the AP with the lowest BSSID, which seems like a very odd choice.

It does seem to do some sort of roaming though, because if I reboot the AP it is connected to, it would swap over to the other one temporarily and I don't seem to loose my SSH session when that happens.

This is my wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev


am I missing some obvious configuration? Just for reference, all my 30+ devices roams correctly on this network, so the wifi setup should be correct. Roaming is a driver responsibility, so question is if the driver for BCM43430 is broken.

I get this in dmesg output:

[   16.623259] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1
[   16.623731] usbcore: registered new interface driver brcmfmac
[   16.654559] brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43430-sdio.raspberrypi,model-zero-w.txt failed with error -2
[   16.939143] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1
[   16.939372] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available
[   16.940589] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM43430/1 wl0: Oct 22 2019 01:59:28 version (r723000 CY) FWID 01-3b33decd

I'm running latest buster lite, and just ran apt update/upgrade, but not a firmware update, so still on kernel 5.4.83+ #1379

EDIT: For everyone that think that wifi-roaming refers to switching SSID, that is not the case for "true" roaming (wpa-roam is something different). For more info, read this: https://www.smallnetbuilder.com/basics/wireless-basics/33180-how-to-fix-wi-fi-roaming. As stated, this works fine and dandy for every other device (as should), so something is off with the pi zero W.

  • What frequency bands the access points use, 2.4 GHz and/or 5 GHz?
    – Ingo
    Commented Jan 8, 2021 at 18:19
  • @Ingo it is dual band, but the Zero W only has 2.4 band on it's wifi card.
    – jishi
    Commented Jan 8, 2021 at 21:07

2 Answers 2


Reading the documentation for wpa_supplicant there is the bgscan option

for example (taken from the documentation above)


This is described in the docs as

scan every 30 seconds when the signal is weak (below -70), and every 3600 seconds otherwise. bgscan can be specified either in specific network blocks or globally for all networks.

without the bgscan option:

The default configuration of wpa_supplicant has relatively timid roaming: it will rescan only when the association to the current access point is lost. This means that, if a client moves far away from its current access point, but not far enough to completely lose signal, the client will keep using the weak signal instead of roaming to a closer access point.

Not sure if this explains why on boot you attach to the weaker signal though

  • Interesting, although I'm surprised that it claims that wpa_supplicant is responsible for roaming, this is normally a driver responsibility. I guess this requires that ap_scan=1 as well, which isn't the default? Since ap_scan=0 delegates scanning to the driver?
    – jishi
    Commented Jan 10, 2021 at 12:04
  • The documentation is unclear @jishi - and that's all I can go by - I haven't tested this, while I do have to AP's with the same SSID, I don't have a "portable" enough pi to test it with Commented Jan 11, 2021 at 4:14

Your choice of access point is configured in wpa_supplicant.conf. It is the AP that you have named ssid="Bertoni". Do you have the second AP named ssid="Bertoni" as well? In such case you are having a conflict in your network. Maybe the term "conflict" is not the most proper one but i am not referring to specifications but to problems in general. For example you might have to choose different channels for each router.

  • Yes, I have a second AP with the same SSID and passphrase, per standard for a multi AP network with roaming.
    – jishi
    Commented Jan 8, 2021 at 11:52
  • Having two access points with the same SSID does not make a conflict on a network. It is a supported option.
    – Ingo
    Commented Jan 8, 2021 at 18:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.