Parece que wpa-supplicant
não está, de fato, mantendo suas configurações, mas está OVERRIDING iwconfig
e o SSID que eu passo para ele.
Quando eu passar um SSID não wpa para iwconfig
, dhcpcd
por padrão invoca wpa-supplicant
para todas as conexões WiFi, então wpa-s
desce a lista ITS das redes wpa que eu configurei para ele e decide que Eu realmente não quero a rede aberta que pedi.
Colocar uma configuração de rede "curinga" no arquivo de configuração do wpa-s faz com que o wpa-s simplesmente escolha a rede aberta mais próxima, não importa qual SSID eu passe para ela.
Remover o "caractere curinga" faz com que wpa-s
cometa erros na primeira rede wpa (fora do intervalo) da lista, ignorando totalmente o SSID.
Isso parece ser uma violação da regra do Linux "fazer uma coisa e fazê-lo bem" - wpa-s
parece estar rastejando para o gerenciamento de rede e fazendo o pior trabalho possível imaginável!
Eu consertei isso adicionando nohook wpa_supplicant
ao meu arquivo dhcpcd
config e alterando meu script "connect" para invocar somente o wpa-suplicante para redes wpa.
sudo iwconfig "$INTERFACE" essid "$SSID" key "$PSK" 2>/dev/null
WPA=$(printf "$TABLE" | grep "$SSID" | cut -s -d $'\t' -f 2- | grep "WPA")
if [[ $WPA ]]; then
sudo wpa_supplicant -B -D wext -i "$INTERFACE" -c "$WPA_SUPPLICANT_CONFIGURATION_FILE"'
fi
sudo dhcpcd "$INTERFACE"