I frequently work in a convention center where it is common to have many hundreds of BSSIDs broadcasting (many routers each broadcasting on multiple networks). In this situation, I often can not see or connect to other networks like my phone hotspot or other nearby hotspots. I believe that the network manager UI and certain command line tools are limited in the number of available BSSIDs that they will display.
For example, if I run nmcli dev wifi list | wc -l, I get a maximum of 201 - the header plus 200 results. If an SSID does not appear on that list, it cannot be connected to using the Network Manager system tray entry, and commands like nmcli dev wifi connect $MY_SSID bssid 18:ee:86:3b:d7:02 password $MY_PASSWORD do not work, saying no network with that SSID was found.
However, I know that my computer can see those networks. If I run iw dev wlp0s20f3 scan, my hotspot is listed along with a total of over 300 networks.
This appears to be wpa_supplicant and the config option bss_max_count. The issue was resolved with sudo wpa_cli set bss_max_count 500, though that is ephemeral. I tried to write bss_max_count=500 to /etc/wpa_supplicant/wpa_supplicant.conf, but after sudo systemctl restart wpa_supplicant, sudo wpa_cli get bss_max_count is still at 200. I’m not sure if there’s a way to change this permanently?
It looks like Ubuntu now builds in a default of 1000, see their bug 2117180
If you mean the filter in the Network Manager GUI, that does not work, as the missing APs are being culled by wpa_supplicant rather than Network Manager - filtering in the GUI does not reveal them.
If you mean a lower level filter, I don’t know about that feature.
To summarize for anyone who may find this on Google - if you can’t see a Wi-Fi network that you know is there and have been able to connect to before, it may be because the default wifi system, wpa_supplicant, only returns 200 stations by default (which can represent many fewer actual wi-fi networks if you are in a place with a high density of access points like an airport, hotel, or convention center).
You can fix this by raising the limit with sudo wpa_cli set bss_max_count 500 (or some other large number). This will reset when your computer (or wpa_supplicant) is restarted.
You could potentially fix it more permanently with a drop-in for wpa_supplicant that executes that same command, or by finding the right place to put it in a config file, but setting bss_max_count=500 in /etc/wpa_supplicant/wpa_supplicant.conf did not work.
Switching to the alternate “iwd” instead of wpa_supplicant also worked for me, which I did essentially as follows:
sudo pacman -S iwd
# Edit /etc/NetworkManager/conf.d/wifi_backend.conf as follows:
[device]
wifi.backend=iwd
# And save
sudo systemctl stop NetworkManager
sudo systemctl stop wpa_supplicant.service
sudo systemctl disable wpa_supplicant.service
sudo systemctl enable --now iwd.service
sudo systemctl start NetworkManager
nmcli radio wifi on
I’m happy for this thread to be marked as solved, though raising the default limit in Manjaro might be a good idea, I’m not sure where to propose/request that.