我只是将一张新刷过的卡(带有2017-09-07-raspbian-stretch-lite)放入Raspberry Pi ZeroW。

然后我添加了以下几行:

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


/etc/wpa_supplicant/wpa_supplicant.conf

输入的数据正确100%。我等待了10分钟,然后检查:它没有自动连接。

然后我回到了官方说明,并按建议运行了sudo wpa_cli reconfigure。相同的结果:没有连接。

然后我尝试手动重新启动wlan0:

sudo ifconfig wlan0 down
sudo ifconfig wlan0 up


仍然相同:未连接。

然后我重新启动,并立即自动连接。

太令人沮丧了。感觉官方说明根本没有经过测试。

那么,这里缺少的是什么,而无需重新启动怎么办呢?

评论

我也注意到了这一点。很沮丧!

#1 楼

我也使用2017-09-07-raspbian-stretch-lite在RaspberryPi Zero W上看到了这个问题。

无法更新wpa_supplicant.conf文件sudo wpa_cli reconfiguresudo systemctl restart wpa_supplicant。我的Pi在wlan0上无法获得IP。

我注意到wpa_supplicantdhcpcd服务的子代。

$ sudo systemctl status

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


我发现使用daemon-reload并重新启动dhcpcd.service单元对我有用。

sudo systemctl daemon-reload
sudo systemctl restart dhcpcd


看来您应该首先运行sudo systemcl daemon-reload,然后重新启动dhcpcd。我不完全确定为什么,但是daemon-reload似乎会提醒服务单元更改配置文件。

如果在不运行dhcpcd的情况下重新启动daemon-reload,则会收到此警告。 Warning: dhcpcd.service changed on disk. Run 'systemctl daemon-reload' to reload units.,但是无论有没有daemon-reload,它都能正常重启。因此,我认为这不是至关重要的,但可能是一种很好的做法。

评论


这有效并且是正确的解决方案。但是,对于任何想要进行双模wifi的人(例如,承载热点并充当基站的Raspberry pi),请注意这将不起作用。如果要设置双模wifi,请在此处遵循此指南:raspberrypi.stackexchange.com/questions/89803/…。假设您已按照本指南进行了配置,并且希望不重新启动就可以运行;只需运行sudo systemctl restart wpa_supplicant@wlan0.service,然后执行sudo systemctl daemon-reload

–webjackal
20-2-24在5:34



由于未修改systemd单位文件,因此可能不需要daemon-reload。如果有人尝试执行此过程而没有重新加载守护进程,请发布结果

–布拉德·海因(Brad Hein)
20年8月14日在15:21

#2 楼

截至2018年,以前的答案不再起作用,您需要运行以下命令:

sudo wpa_cli -i wlan0 reconfigure


来源:https://www.raspberrypi.org/ forums / viewtopic.php?t = 198274#p1238023

评论


在Pi4上像魔术一样工作!谢谢!

–麦克
20-4-2在3:19



可以在带有wifi到wifi桥的Pi3上完美运行(在Raspbian GNU / Linux 10(破坏者)上)

–糟糕
20年6月26日在8:54

#3 楼

我正在使用带有2018-03-13-raspbian-stretch的Raspberry Pi 3,但我的问题略有不同,但是我找到了解决方案,所以我认为这也可以为您提供帮助。

我通过设置/etc/wpa_supplicant/wpa_supplicant.conf来启动RPi,以便我设置了一个SSID和密码,并且RPi在启动时自动连接到已配置的SSID。此外,我想使用一些自动文本处理脚本来更改/etc/wpa_supplicant/wpa_supplicant.conf,然后重新加载wifi设置。

经过一番搜索,我在Raspberry Pi官方论坛上找到了这篇文章,并找到了这套其中的至少对我有用的命令:

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


我不知道它们如何或为什么起作用,所以不能保证...

评论


这是唯一对我有用的答案,也适用于带有树突拉伸的Pi3-谢谢!

–smörkex
19年5月29日下午5:20

#4 楼

在wpa_supplicant.conf中添加网络后:

运行cli
(这里使用了3个命令:接口,重新配置并退出)

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


然后确认您具有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


#5 楼

您应该运行此命令行来重新启动网络


/etc/init.d/networking restart


评论


不能拉伸!

– MatsK
17-10-14在14:14

理想情况下也不是在jessie中,因为它也是基于systemd的(不是SysV)。该命令是不合时宜的,并且为了向后兼容,最多只能提供支持。

–金锁♦
17-10-14在14:16

不,它不起作用。您必须重新配置wpa请求者并重新启动dhcpcd

– Hola Soy Edu Feliz Navidad
19-09-30在17:48

#6 楼

我对Raspbian GNU / Linux 10(失败者)也有类似的问题。我在wpa_supplicant.conf中进行了更改,然后运行

# wpa_cli -i wlan0 reconfigure


,但是它并没有完全起作用。

# dhclient -v


起作用。

我在https://kb.isc.org/docs/isc-dhcp-44找到了信息-manual-pages-dhclient



的输出
$ 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.


#7 楼

您可以使用NetworkManager工具,该工具使用nmcli命令来设置连接配置文件。

使用apt:

sudo apt-get install network-manager


注释掉wlan中的Ethernet/etc/network/interfaces接口。

重新启动设备。

然后使用:

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

连接到Wi-Fi网络。

评论


请不要建议将另一个网络工具与已经存在的三个工具(dhcpcd,Debian网络ifupdown,systemd-networkd)混合使用。 Raspbian不支持网络管理器,因此您必须手动进行配置。首先,它与dhcpcd和ifupdown冲突。您在回答中不尊重它。然后在Raspbian Stretch中,/ etc / network / interfaces中没有条目,因此没有注释掉。

– Ingo
19年2月10日在13:28

是的,您是对的伙伴,它们与其他dhcpcd和ifupdown网络冲突。但是遵循上述建议后,NetworkManager似乎是实现此目的的唯一方法。 Raspberry pi的raspbian lite版本除了nmcli外没有其他选择。我没有在Stretch上尝试过它,但是在安装过程中,网络管理器本身会发出冲突警告。如果您有解决方案,我将随时准备学习该方法。

– Rituraj Rautela
19年2月11日在8:53

只需使用sudo systemctl stop wpa_supplicant@wlan0.service和sudo systemctl start wpa_supplicant@wlan0.service,您就可以根据需要停止和启动WiFi连接。如何做,您可以查看将Raspberry Pi设置为接入点-简单的方法或将接入点设置为WiFi中继器,可选带桥接器或在wifi客户端和接入点之间切换,而无需重启或其他类似解决方案。

– Ingo
19年2月11日在18:44



@Ingo的一个非常有效的观点。只是要添加-如果您使用的是Node.js,并且想使用npm包来做事情,请彻底检查文档。大多数npm软件包在后台使用nmcli,这在Raspberry pi上不起作用。它甚至没有安装。因此,请谨慎操作。

–webjackal
20-2-24在7:08

在Raspbian上确实可以使用网络管理器(或与此有关的wicd或任何其他网络工具)。但是,如果您描述了如何设置它们,将很有用。

–德米特里·格里戈里耶夫(Dmitry Grigoryev)
20-2-24在7:28



#8 楼

编辑1:

我将Raspberry pi Zero W配置为双模式wifi,从而获得了这个答案,我想通过共享它们来更改wifi凭据(wlan0必须连接到的wifi路由器)具有移动应用程序的ap0接口(托管了REST API)。

我假设接受的答案或任何其他答案对我而言都是有效的。但是事实并非如此。

因此,对于像我这样登陆的任何人,请按照此处提到的设置步骤进行操作。

然后,更改wifi连接而无需重新启动,我目前正在用2种方法进行测试:


wpa_cli -i wlan0重新配置

测试已经完成,我将在这里进行更新。

评论


我目前正在测试事物。将保持此更新。

–webjackal
20-2-24在7:09