Nós temos um dispositivo de braço embutido rodando um sistema operacional baseado no Debian 9, rodando o kernel 4.14.67-1.0.6+.
EDIT: Conforme solicitação do @AB, abaixo estão as informações do driver/chipset também para futuros espectadores - eu não sabia como encontrar isso no momento de fazer a pergunta.
filename: /lib/modules/4.14.67-1.0.6+/extra/mlan.ko
license: GPL
version: C605
author: Marvell International Ltd.
description: M-WLAN MLAN Driver
srcversion: 103492D596FC10822F1F391
depends:
name: mlan
vermagic: 4.14.67-1.0.6+ SMP preempt mod_unload modversions ARMv7 p2v8
Conseguimos nos conectar ao WiFi na inicialização, mas quando o sinal é perdido, o dispositivo não está se reconectando automaticamente. Estive revisando os documentos /etc/network/interfaces
várias wpa_supplicant
vezes tentando opções diferentes e, embora tenha feito algum progresso, ainda não está se reconectando corretamente.
Minha configuração é mostrada abaixo. Eu tentei brincar com wpa-conf
vs wpa-roam
com uma configuração manual do iface. Eu tentei usar configurações diferentes autoscan
e ap_scan
para wpa_supplicant. Tentamos usar o NetworkManager no passado, mas isso provou ter alguns problemas com a interface GSM neste dispositivo.
/etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d
auto lo
iface lo inet loopback
allow-hotplug mlan0
iface mlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
/etc/wpa_supplicant/wpa_supplicant.conf
ap_scan=2
# Networks SSIDs
network={
ssid="1+ Benji"
psk="REDACTED"
key_mgmt=WPA-PSK
}
Estou testando isso reiniciando o dispositivo e certificando-me de que ele tenha uma boa conexão, depois desligando e ligando o ponto de acesso WiFi no meu celular. Quando é trazido de volta, o wpa_supplicant agora verifica para tentar se reconectar (o que não era antes), mas a conexão continua falhando apenas dizendo que a estação está saindo.
/var/log/syslog
# Network manually turned off
Feb 11 15:56:08 arm wpa_supplicant[459]: mlan0: CTRL-EVENT-DISCONNECTED bssid=94:65:2d:83:c2:0d reason=3
Feb 11 15:56:08 arm kernel: [ 154.302149] wlan: EVENT: Disassociated (reason 0x3)
Feb 11 15:56:08 arm kernel: [ 154.302166] wlan: REASON: (Deauth) Sending STA is leaving (or has left) IBSS or ESS
Feb 11 15:56:08 arm kernel: [ 154.302339] wlan: Disconnected from 94:XX:XX:XX:c2:0d: Reason code 3
Feb 11 15:56:08 arm wpa_supplicant[459]: mlan0: CTRL-EVENT-REGDOM-CHANGE init=CORE type=WORLD
Feb 11 15:56:08 arm wpa_supplicant[459]: mlan0: Trying to associate with SSID '1+ Benji'
Feb 11 15:56:13 arm wpa_supplicant[459]: mlan0: CTRL-EVENT-ASSOC-REJECT bssid=00:00:00:00:00:00 status_code=1
Feb 11 15:56:13 arm kernel: [ 159.732160] wlan: SCAN COMPLETED: scanned AP count=0
Feb 11 15:56:14 arm wpa_supplicant[459]: mlan0: Trying to associate with SSID '1+ Benji'
Feb 11 15:56:19 arm kernel: [ 165.291259] usb 2-1: USB disconnect, device number 5
Feb 11 15:56:19 arm wpa_supplicant[459]: mlan0: CTRL-EVENT-ASSOC-REJECT bssid=00:00:00:00:00:00 status_code=1
Feb 11 15:56:19 arm kernel: [ 165.572172] wlan: SCAN COMPLETED: scanned AP count=0
Feb 11 15:56:20 arm wpa_supplicant[459]: mlan0: Trying to associate with SSID '1+ Benji'
Feb 11 15:56:26 arm wpa_supplicant[459]: mlan0: CTRL-EVENT-ASSOC-REJECT bssid=00:00:00:00:00:00 status_code=1
Feb 11 15:56:26 arm wpa_supplicant[459]: mlan0: CTRL-EVENT-SSID-TEMP-DISABLED id=0 ssid="1+ Benji" auth_failures=1 duration=10 reason=CONN_FAILED
Feb 11 15:56:26 arm kernel: [ 171.912043] wlan: SCAN COMPLETED: scanned AP count=0
Feb 11 15:56:31 arm wpa_supplicant[459]: mlan0: Trying to associate with SSID '1+ Benji'
Feb 11 15:56:36 arm wpa_supplicant[459]: mlan0: CTRL-EVENT-ASSOC-REJECT bssid=00:00:00:00:00:00 status_code=1
Feb 11 15:56:36 arm wpa_supplicant[459]: mlan0: CTRL-EVENT-SSID-TEMP-DISABLED id=0 ssid="1+ Benji" auth_failures=2 duration=20 reason=CONN_FAILED
Feb 11 15:56:36 arm kernel: [ 182.252181] wlan: SCAN COMPLETED: scanned AP count=0
# Network AP manually turned back on
Feb 11 15:56:46 arm wpa_supplicant[459]: mlan0: Trying to associate with SSID '1+ Benji'
Feb 11 15:56:51 arm kernel: [ 197.512170] wlan: SCAN COMPLETED: scanned AP count=1
Feb 11 15:56:51 arm kernel: [ 197.682452] wlan: Connected to bssid 94:XX:XX:XX:c2:0d successfully
Feb 11 15:56:51 arm kernel: [ 197.685349] wlan: Received disassociation request on mlan0, reason: 3
Feb 11 15:56:51 arm kernel: [ 197.685361] wlan: REASON: (Deauth) Sending STA is leaving (or has left) IBSS or ESS
Feb 11 15:56:53 arm wpa_supplicant[459]: mlan0: CTRL-EVENT-DISCONNECTED bssid=94:65:2d:83:c2:0d reason=3 locally_generated=1
Feb 11 15:56:53 arm wpa_supplicant[459]: mlan0: CTRL-EVENT-REGDOM-CHANGE init=CORE type=WORLD
Feb 11 15:56:53 arm wpa_supplicant[459]: mlan0: Trying to associate with SSID '1+ Benji'
Feb 11 15:56:54 arm kernel: [ 199.872319] wlan: Connected to bssid 94:XX:XX:XX:c2:0d successfully
Feb 11 15:56:54 arm kernel: [ 199.874233] wlan: Received disassociation request on mlan0, reason: 3
Feb 11 15:56:54 arm kernel: [ 199.874247] wlan: REASON: (Deauth) Sending STA is leaving (or has left) IBSS or ESS
Feb 11 15:56:55 arm wpa_supplicant[459]: mlan0: CTRL-EVENT-DISCONNECTED bssid=94:65:2d:83:c2:0d reason=3 locally_generated=1
Feb 11 15:56:55 arm wpa_supplicant[459]: mlan0: CTRL-EVENT-REGDOM-CHANGE init=CORE type=WORLD
Feb 11 15:56:55 arm wpa_supplicant[459]: mlan0: Trying to associate with SSID '1+ Benji'
Feb 11 15:56:55 arm kernel: [ 201.702474] wlan: Connected to bssid 94:XX:XX:XX:c2:0d successfully
Feb 11 15:56:55 arm kernel: [ 201.704140] wlan: Received disassociation request on mlan0, reason: 3
Feb 11 15:56:55 arm kernel: [ 201.704152] wlan: REASON: (Deauth) Sending STA is leaving (or has left) IBSS or ESS
Feb 11 15:56:57 arm wpa_supplicant[459]: mlan0: CTRL-EVENT-DISCONNECTED bssid=94:65:2d:83:c2:0d reason=3 locally_generated=1
Feb 11 15:56:57 arm wpa_supplicant[459]: mlan0: CTRL-EVENT-SSID-TEMP-DISABLED id=0 ssid="1+ Benji" auth_failures=3 duration=30 reason=CONN_FAILED
Feb 11 15:56:57 arm wpa_supplicant[459]: mlan0: CTRL-EVENT-REGDOM-CHANGE init=CORE type=WORLD
Feb 11 15:56:57 arm wpa_supplicant[459]: mlan0: Trying to associate with SSID '1+ Benji'
Feb 11 15:56:58 arm kernel: [ 203.872352] wlan: Connected to bssid 94:XX:XX:XX:c2:0d successfully
Feb 11 15:56:58 arm kernel: [ 203.874052] wlan: Received disassociation request on mlan0, reason: 3
Feb 11 15:56:58 arm kernel: [ 203.874064] wlan: REASON: (Deauth) Sending STA is leaving (or has left) IBSS or ESS
Como você pode ver, depois que eu ligo o AP de rede novamente, o dispositivo continua tentando se reconectar, mas falha com o motivo 3. Procurei esse motivo e não consigo encontrar nada que realmente diga algo significativo e a mensagem "Enviando STA está saindo (ou saiu) do IBSS ou ESS" não é útil.
Se forem necessárias informações adicionais ou logs de saída, informe-me e ficarei feliz em fornecê-los.
Também perguntei ao fabricante do dispositivo se eles tinham alguma sugestão há alguns dias, embora tenham demorado um pouco para responder, a sugestão parece estar funcionando perfeitamente.
O básico
/etc/network/interfaces
que eu tenho é bom, mas havia 1 linha que estava faltando quando estava tentando todas as várias opções em/etc/wpa_supplicant/wpa_supplicant.conf
que édisable_scan_offload=1
... Comap_scan=1
.Configuração final:
De http://w1.fi/wpa_supplicant/devel/ctrl_iface_page.html :
SELECT_NETWORK Selecione uma rede ( desabilite outras ). O ID de rede pode ser recebido da saída do comando LIST_NETWORKS.
ENABLE_NETWORK Habilita uma rede. O ID de rede pode ser recebido da saída do comando LIST_NETWORKS. ID de rede especial all pode ser usado para habilitar toda a rede.
A partir disso, entendi que uma vez que uma rede é selecionada, as outras são desabilitadas (arquivo conf alterado com desabilitado 1 para todas as outras redes). Então eu envio o comando: ENABLE_NETWORK tudo depois de conectar a uma rede específica.
Se por algum motivo a rede à qual o dispositivo está conectado ficar indisponível, o WPA conectará automaticamente o dispositivo a uma das outras redes "conhecidas".
E funciona!!!!
(Eu acrescentaria que qualquer rede com a qual o dispositivo nunca tenha sido conectado anteriormente por causa de senha errada deve ser removida da lista de redes e não apenas deixada como DESATIVADA)