Como conectar-se ao WiFi sem reiniciar?


17

Acabei de colocar um cartão recém-lançado (com 2017-09-07-raspbian-stretch-lite) em um Raspberry Pi Zero W.

Então eu adicionei estas linhas:

network={
    ssid="myWifiSsid"
    psk="myWifiPassword"
}

para /etc/wpa_supplicant/wpa_supplicant.conf.

Os dados inseridos estavam 100% corretos. Esperei 10 minutos e verifiquei: ele não se conectou automaticamente.

Depois voltei às instruções oficiais e corri sudo wpa_cli reconfigureconforme sugerido. Mesmo resultado: não foi conectado.

Então eu tentei reiniciar manualmente o wlan0:

sudo ifconfig wlan0 down
sudo ifconfig wlan0 up

Ainda é o mesmo: Is não se conecta.

Então eu fiz uma reinicialização e ele instantaneamente se conectou automaticamente.

É muito frustrante. Parece que as instruções oficiais não foram testadas.

Então, o que está faltando aqui, como isso pode ser feito sem uma reinicialização?


1
Eu também notei isso. Muito frustrante!
Quintin Balsdon

Respostas:


19

Eu também vi esse problema com meu RaspberryPi Zero W usando 2017-09-07-raspbian-stretch-lite.

Atualizando o wpa_supplicant.confarquivo ,, sudo wpa_cli reconfiguree sudo systemctl restart wpa_supplicantnão funcionou. Meu Pi não conseguiu um IP wlan0.

Percebi que isso wpa_supplicanté gerado como um filho do dhcpcdserviço.

$ sudo systemctl status

└─dhcpcd.service
  ├─890 wpa_supplicant -B -c/etc/wpa_supplicant/wpa_supplicant.conf -iwlan0
  └─912 /sbin/dhcpcd -q -w

Eu descobri que usar o daemon-reload e reiniciar a dhcpcd.serviceunidade funcionou para mim.

sudo systemctl daemon-reload
sudo systemctl restart dhcpcd

Ele parece que você deve primeiro executar sudo systemcl daemon-reloadantes de reiniciar dhcpcd. Não sei bem por que, mas parece que o daemon-reloadserviço de alerta alertará as unidades de serviço sobre as alterações no arquivo de configuração.

Se reiniciei dhcpcdsem executar daemon-reload, recebi este aviso. Warning: dhcpcd.service changed on disk. Run 'systemctl daemon-reload' to reload units., mas reiniciou muito bem com ou sem daemon-reload. Portanto, não acho que seja vital, mas provavelmente uma boa prática.



4

Após adicionar uma rede no wpa_supplicant.conf:

Execute o cli
(3 comandos são usados ​​aqui: interface, reconfigurar e sair)

root@raspberrypi:~# wpa_cli
wpa_cli v2.4
Copyright (c) 2004-2015, Jouni Malinen <j@w1.fi> and contributors

This software may be distributed under the terms of the BSD license.
See README for more details.


Selected interface 'p2p-dev-wlan0'

Interactive mode

<3>CTRL-EVENT-SCAN-RESULTS
> interface wlan0
Connected to interface 'wlan0.
> reconfigure
OK
<3>CTRL-EVENT-SCAN-STARTED
<3>CTRL-EVENT-SCAN-RESULTS
<3>WPS-AP-AVAILABLE
<3>Trying to associate with XX:Xa:aX:Xa:XX:Xa (SSID='wifissid' freq=2437 MHz)
<3>Associated with XX:Xa:aX:Xa:XX:Xa
<3>WPA: Key negotiation completed with XX:Xa:aX:Xa:XX:Xa [PTK=CCMP GTK=CCMP]
<3>CTRL-EVENT-CONNECTED - Connection to XX:Xa:aX:Xa:XX:Xa completed [id=0 id_str=]
> quit

Em seguida, verifique se você tem um endereço IP.

root@raspberrypi:~# ifconfig wlan0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.10.XX.XXX  netmask 255.255.255.0  broadcast 10.10.XX.XXX
        inet6 fe80::aab2:d96e:d3ef:836d  prefixlen 64  scopeid 0x20<link>
        ether bX:XX:Xb:XX:Xe:aX  txqueuelen 1000  (Ethernet)
        RX packets 162  bytes 31128 (30.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 75  bytes 11385 (11.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

3

Estou usando um Raspberry Pi 3 2018-03-13-raspbian-stretche meu problema é ligeiramente diferente, mas achei uma solução, então acho que isso também pode ajudá-lo.

Inicializo o RPi com a /etc/wpa_supplicant/wpa_supplicant.confconfiguração para ter um SSID e senha definidos e o RPi se conecta automaticamente ao SSID configurado na inicialização. Além disso, eu queria mudar /etc/wpa_supplicant/wpa_supplicant.conf usando algum script de processamento de texto automatizado e recarregar as configurações de wifi .

Depois de procurar um pouco, encontrei este post nos fóruns oficiais do Raspberry Pi e encontrei esse conjunto de comandos internos que funcionaram para mim pelo menos:

sudo dhclient -r wlan0
sudo ifdown wlan0
sudo ifup wlan0
sudo dhclient -v wlan0

Eu não sei como ou por que eles funcionam, então não há garantias ...


Esta é a única resposta que funcionou para mim, também no Pi3 com extensão raspian - obrigado!
smörkex 29/05

2

Você deve executar esta linha de comando para reiniciar a rede

/etc/init.d/networking restart


3
Não esticar!
MatsK

6
Idealmente, também não em Jessie, pois também é baseado em systemd (não em SysV); esse comando é anacrônico e, na melhor das hipóteses, é suportado para compatibilidade com versões anteriores.
goldilocks

Não, não funciona. Você deve reconfigurar o suplicante do wpa e reiniciar o dhcpcd
Hola Soy Edu Feliz Navidad

0

Você pode usar a ferramenta NetworkManager, que usa nmclicomandos para configurar um perfil de conexão.

Instale-o usando o apt:

sudo apt-get install network-manager

Comentar wlane fazer Ethernetinterface /etc/network/interfaces.

Reinicie o dispositivo.

Então use:

sudo nmcli device wifi con "SSID" password "PSK" 

para se conectar a uma rede Wi-Fi.


Por favor, não aconselhe misturar outra ferramenta de rede com as três já existentes (dhcpcd, Debian networking ifupdown, systemd-networkd). O gerenciador de rede não é suportado pelo Raspbian, então você precisa configurá-lo manualmente. Primeiro, ele entra em conflito com dhcpcde ifupdown. Você não a respeita na sua resposta. Então, no Raspbian Stretch não há entradas, /etc/network/interfacesportanto não há nada a comentar.
Ingo

Sim, você está certo amigo, eles entram em conflito com a rede com outros dhcpcd e ifupdown. Mas o NetworkManager parece ser a única maneira de fazer isso, depois de seguir os conselhos acima. As versões raspbian lite do Raspberry pi não têm outra opção além do nmcli. Eu não tentei no Stretch, mas, durante a instalação, o próprio gerenciador de rede emitirá o aviso de conflito. Se você tem uma solução, estou sempre pronto para aprender esse método.
Rituraj Rautela

Apenas com sudo systemctl stop wpa_supplicant@wlan0.servicee sudo systemctl start wpa_supplicant@wlan0.servicevocê pode parar e iniciar uma conexão WiFi da maneira que desejar. Como fazer isso, você pode ver Configurando um Raspberry Pi como um ponto de acesso - a maneira mais fácil ou Ponto de acesso como repetidor de WiFi, opcional com ponte ou Alternar entre o cliente wifi e o ponto de acesso sem precisar reiniciar ou outras soluções semelhantes.
Ingo

0

Eu tive um problema semelhante com o Raspbian GNU / Linux 10 (buster). Fiz alterações no wpa_supplicant.conf e executei

# wpa_cli -i wlan0 reconfigure

Mas não funcionou todo o caminho.

# dhclient -v

fez funcionar.

Encontrei informações em https://kb.isc.org/docs/isc-dhcp-44-manual-pages-dhclient

Saída de

$ sudo dhclient -v
Internet Systems Consortium DHCP Client 4.4.1
Copyright 2004-2018 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/wlan0/a0:f3:c1:26:04:9c
Sending on   LPF/wlan0/a0:f3:c1:26:04:9c
Listening on LPF/eth0/b8:27:eb:1f:ab:6e
Sending on   LPF/eth0/b8:27:eb:1f:ab:6e
Sending on   Socket/fallback
DHCPREQUEST for 192.168.7.28 on wlan0 to 255.255.255.255 port 67
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
DHCPACK of 192.168.7.28 from 192.168.7.1
RTNETLINK answers: File exists
bound to 192.168.7.28 -- renewal in 1717 seconds.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.