iwlwifi 11n_disable=1 - 为什么这个只能短暂起作用?

iwlwifi 11n_disable=1 - 为什么这个只能短暂起作用?

操作系统 = Ubuntu 18.04 LTS PC = Lenovo Ideapad Y500 (2012 年发布) 无线网卡 = Intel Centrino Wireless N2230

我刚刚在一台旧的联想 Ideapad(笔记本)型号 Y500 上安装了 Ubuntu 18.04 LTS。它运行正常,但为了让 WiFi 正常工作,我必须在终端中输入以下命令:

sudo modprobe -r iwlwifi
sudo modprobe iwlwifi 11n_disable=1

这很管用,但只能维持一小会儿。如果计算机进入睡眠状态(或重新启动),我必须再次发出这些命令。

  1. 我不知道这些命令是做什么的。

  2. 无论这些修复是什么,我都希望能永久保留。

  3. 当这个工作时,WiFi速度很糟糕(大约 20 Mbps),但有线以太网速度非常好(大约 930 Mbps - 我有光纤互联网)。

我不知道 Ubuntu 认为我的 WiFi 卡是什么。如果这是 Windows,我可以查看设备管理器并查看 Windows 认为它​​是什么(这可能是错误的)。对于 Linux,我太笨了,无法弄清楚操作系统认为这张卡是什么。

Ubuntu 是否可能错误识别了我的无线网卡?如果是,我可以使用其他驱动程序来修复此问题(并提高速度)吗?

答案1

我的问题是,在 Ubuntu 19.04 上,某些 WiFi 网络上的上传速度非常糟糕。我看到推荐的两个设置 11n_disable=1 和 11n_disable=8 都对我不起作用;前者提高了上传速度,但将下载速度降低了一半,而后者没有任何作用。我试验后发现,11n_disable=2 将我的上传速度提高了 700%,但代价是下载速度降低了 12%。这是一个合理的权衡,否则上传速度无法使用,但我不想在不更改设置的情况下让上传速度正常的 WiFi 网络上的下载速度降低。所以我编写了一个脚本来检查我使用的 WiFi 网络并相应地调整设置。我把它发布在我的博客上 (https://blog.kamens.us/2019/08/03/mitigating-wifi-upload-speed-issues-on-lenovo-ideapad-s340-running-linux/) 以防对其他人有用,但我知道 Stack Exchange 不喜欢依赖链接的答案,所以我在下面包含它。它需要安装在 /etc/NetworkManager/dispatcher.d 中,所有者为 root,模式为 0755。

#!/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

答案2

你可以试试这个,不需要安装驱动程序

echo "options iwlwifi 11n_disable=1" | sudo tee -a /etc/modprobe.d/iwlwifi.conf
sudo modprobe -rfv iwlwifi
sudo modprobe -v iwlwifi

来源

相关内容