英特尔无线(iwlwifi),Ubuntu 19.04,上传速度慢,但仅在某些 WiFi 网络上

英特尔无线(iwlwifi),Ubuntu 19.04,上传速度慢,但仅在某些 WiFi 网络上

我有一台运行 Ubuntu 19.04 的联想 IdeaPad S340。它有一个使用内核驱动程序的英特尔双频无线适配器iwlwifi

在使用 Cisco 接入点的某个 WiFi 网络上,我的下载速度还行,但上传速度却很差。我见过类似问题的答案,说将驱动程序的 11n_disable 内核参数设置iwlwifi11n_disable=111n_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

如需了解更多详细信息,请访问此处
免责声明:我是那个博客的作者。

相关内容