我了解我可以通过添加到/etc/wpa_supplicant/wpa_supplicant.conf中来设置多个WiFi(如通过命令行设置WiFi中所述)。

假设我注册了两个WiFi:wifi_Awifi_B

当我拔下路由器wifi_A并重新启动树莓派到命令行时,它会自动连接到wifi_B。当我拔掉路由器wifi_B并重新启动树莓派到命令行时,它会自动连接到wifi_A。到目前为止一切都很好。

但是,假设两个路由器都可用,如何设置优先级?例如。我希望我的Raspberry重启后连接到wifi_B吗?

我的第二个问题是:假设我处于命令行模式,并且当前已连接到wifi_B。我该如何连接到wifi_A

评论

除非您列出配置文件,否则您只会得到很多猜测(充其量)。

#1 楼


例如我希望我的树莓在重启后连接到wifi_B吗?


priority=2添加到wifi_B块中,并将priority=1添加到wifi_A文件中的/etc/wpa_supplicant/wpa_supplicant.conf块中。


假设我处于命令行模式,并且当前已连接到wifi_B。我该如何连接到wifi_A


您可以为每个SSID创建一个单独的配置文件,并明确指定它:

wpa_supplicant -B -Dwext -iwlan0 -c</path/to/config_for_wifi_A>
sudo dhclient wlan0


评论


使用您的方法,我只能从一个WiFi网络切换到另一个WiFi网络,无法切换回来(例如,也不能切换到另一个WiFi_C)。在使用wpa_supplicant命令执行第一开关后,再次使用它,我得到一条消息ctrl-iface存在并且似乎正在使用-无法覆盖它\ n如果没有,请手动删除'/ var / run / wpa_supplicant / wlan0'再用了等等...并在sudo dhclient wlan0之后被告知RTMETLINK答案:文件存在。这是期望吗?

–花龙
18年1月31日,2:09

您需要先使用wpa_cli终止连接,然后再使用wpa_supplicant连接到另一个连接,还有一种更复杂的方法,无需在此处将其关闭

– Z-WolF
18年2月1日在19:42

#2 楼


但是,假设两个路由器都可用,如何设置优先级?


您可以按以下步骤设置网络的优先级:

network={
    ssid="wifi_A"
    psk="passwordOfA"
    priority=1
}
network={
   ssid="wifi_B"
   psk="passwordOfB"
   priority=2
}


默认情况下,所有网络的优先级都为0,请根据需要将更高的优先级设置为优先级。


假设我处于命令行模式,而我当前已连接到wifi_B。我该如何连接到wifi_A?


为此,请使用以下命令:

wpa_cli select_network 0


要从wifi_A转换为wifi_B,请使用:

wpa_cli select_network 1


评论


要检查在wpa_cli select_network#中使用哪个号码,请首先运行wpa_cli list_networks。

– Z-WolF
18年2月1日在19:47

对于使用Stretch 3的Pi 3+,这对我不起作用。运行wpa_cli list_networks并获取网络号,然后运行wpa_cli select_network2。系统响应OK,但iwconfig显示它仍连接到原始网络。

– lonstar
18/09/17在15:11

为了清楚起见,请注意:优先级值应用为更高的值,意味着更高的优先级。即未按数字/计数顺序(先为零)选择网络。

–尼古拉斯(Nicolas)
18/12/18在21:09

在Buster上,有一个接口“ p2p-dev-wlan0”,我发现默认情况下已选中该接口。因此,以上命令需要包含-i wlan0。例如:wpa_cli -i wlan0 select_network0。这有效并且非常适合我的应用程序,因为它不需要sudo

– ThatsRightJack
20年5月11日在23:28

非常感谢您对优先级进行描述,这是非常必要的。

–itsraghz
20-09-26在7:28

#3 楼

因此,在此处详细说明完整的解决方案:
network={
    ssid="wifi_A"
    psk="passwordOfA"
    priority=1 #lower priority
}
network={
   ssid="wifi_B"
   psk="passwordOfB"
   priority=2 #higher priority
}

然后在初次重启后主动切换网络(无需二次重启):
sudo wpa_cli list_networks #show them!
sudo wpa_cli -i wlan0 select_network 0 #0, 1, etc.  Note: Networks are NOT the same number as your priority in the wpa_supplicant 


评论


感谢您在示例中的评论!在自然数序列中还有更高的优先级是非常违反直觉的……我花了很多时间试图弄清楚为什么忽略了“第一”优先级而倾向于“第二”优先级。

–俄罗斯
20年8月8日14:09