因为我家的墙很厚,无线信号容易衰减,所以我在家里的不同地方设置了两个接入点,使用相同的设置配置相同的 SSID。两者总体上都很好用。然而,以类似的方式该用户观察到我发现将笔记本电脑从一个房间移到另一个房间并不能使其快速切换接入点;要么是它的重新扫描频率太低,要么是信号质量阈值太低,或者两者兼而有之。这会导致网络长时间不响应,令人恼火。
我可以在 Linux 上控制这一切吗?(我的笔记本电脑运行的就是 Linux - 更具体地说,我有脆皮棒,如果重要的话,这是一个 Debian 变体)。如果可能的话,我希望能够改变信号阈值和/或重新扫描周期,以使其在切换时更加积极。
答案1
网络管理员需要一段时间才能确定连接不会恢复,然后才会尝试重新连接。我发现wicd
它比它更“灵敏” NetworkManager
——我会考虑切换到它。
您还可以运行后台脚本来轮询信号强度,如果信号强度超过一定水平,则强制断开连接。断开连接后,您的网络管理器通常会连接到信号更强的网络。
示例脚本使用iw(1)
来自我爱包裹:
#!/bin/bash
IFACE="wlan0"
LIMIT="-75"
while true; do
signal=$(iw $IFACE link | grep signal | awk '{print $2}')
[ $signal ] && [ $signal -lt $LIMIT ] && iw $IFACE disconnect
echo $signal
sleep 1
done
答案2
接入点之间的漫游由 管理wpa_supplicant
,因此要切换到特定接入点而不断开连接超过需要的时间,请使用wpa_cli roam
。例如:
rav@fred:~$ sudo wpa_cli -i wlp58s0 scan_results
bssid / frequency / signal level / flags / ssid
60:45:cb:94:d1:50 2447 -47 [WPA2-PSK-CCMP][ESS] NextDoorBut1
cc:e1:d5:7c:af:a8 2417 -75 [WPA2-PSK-CCMP][WPS][ESS] NextDoorBut1
10:6f:3f:4c:54:83 2427 -70 [WPA2-PSK-CCMP][ESS] NextDoorBut1
rav@fred:~$ sudo wpa_cli -i wlp58s0 roam 60:45:cb:94:d1:50
OK
当然,这仅适用于在同一 SSID 上的 AP 之间切换 - 并且它需要您做一些前期研究来找出每个 AP 的 BSSID。
答案3
接入点会保存有关您设备的状态信息 - 您无法通过匹配参数神奇地从一个设备漫游到另一个设备。像 Aruba 这样的大公司通过在建筑物中的某个位置放置“接入路由器”来解决问题,然后每个“接入点”只是接入路由器中的天线和线卡。家庭接入点没有这种魔力。
除非接入点通过某种神奇的协议相互通信,否则我可以想象您会给您的接入点带来巨大的麻烦,因为出现了一些未知的 MACID 并且具有 WEP/WPA 密码但尚未关联它,因此它们没有允许 IP 地址分配,因此它们不允许发送数据包,除了接入点之外,这可能会让您自己工作站上的 wpa_supplicant 感到困惑。
答案4
尝试这种方法:
#!/bin/bash
IFACE="wlp3s0"
LIMIT="-65"
ID1="wireless network name"
ID2="wireless network name"
ssid=$(iw $IFACE link | grep SSID | awk '{print $2}')
signal=$(iw $IFACE link | grep signal | awk '{print $2}')
if [ $signal -lt $LIMIT ]
then case $ssid in
$ID1) nmcli con up $ID2
;;
$ID2) nmcli con up $ID1
;;
esac &&
ssid=$(iw $IFACE link | grep SSID | awk '{print $2}') && echo you are now connected to $ssid
else echo "no changes needed"
fi
sleep 1