我有一台运行 Ubuntu 19.04 的联想 IdeaPad S340。它有一个使用内核驱动程序的英特尔双频无线适配器iwlwifi
。
在使用 Cisco 接入点的某个 WiFi 网络上,我的下载速度还行,但上传速度却很差。我见过类似问题的答案,说将驱动程序的 11n_disable 内核参数设置iwlwifi
为11n_disable=1
或11n_disable=8
,但这两种方法对我都不起作用;前者提高了我的上传速度,但使我的下载速度减半,而后者没有任何作用。
我怎样才能解决这个问题?
答案1
我试验了一下,发现11n_disable=2
上传速度提高了 700%,但下载速度却降低了 12%。这是一个合理的权衡,否则上传速度就无法使用了,但我不想忍受 WiFi 网络上下载速度的下降,因为如果不更改设置,WiFi 网络上的上传速度就没问题。所以我写了一个脚本来检查我使用的 WiFi 网络并相应地调整设置。
0755
您可以在下面找到该脚本。它需要以 root 身份、模式、在 中安装/etc/NetworkManager/dispatcher.d
。您需要编辑该bad-wifi-network-name
行以正确选择要在哪个 WiFi 网络上使用备用设置。
#!/bin/bash -e
WHOAMI=$(basename $0)
IFACE="$1"; shift
ACTION="$1"; shift
log() {
level="$1"; shift
logger -p daemon.$level -t "$WHOAMI" $@
}
if [ "$ACTION" != "up" ]; then
log debug ignoring action $ACTION
exit 0
fi
state=$(cat /sys/module/iwlwifi/parameters/11n_disable)
log notice previous 11n_disable state is $state
if [ "$CONNECTION_ID" = "bad-wifi-network-name" ]; then
want_state=2
else
want_state=0
fi
if [ "$state" != "$want_state" ]; then
log notice reloading iwlwifi with 11n_disable=$want_state
if ! rmmod iwlmvm iwlwifi; then
log err rmmod iwlmvm iwlwifi failed
exit 1
fi
if ! modprobe iwlwifi 11n_disable=$want_state; then
log err modprobe iwlwifi 11n_disable=$want_state failed
exit 1
fi
if ! modprobe iwlmvm; then
log err modprobe iwlmvm failed
exit 1
fi
log notice finished reloading iwlwifi with 11n_disable=$want_state
else
log notice 11n_disable is correct, taking no action
fi
如需了解更多详细信息,请访问此处
免责声明:我是那个博客的作者。