焦点切换后 Wi-Fi 重新连接速度缓慢,HP ProBook 650 配备 BCM43228

焦点切换后 Wi-Fi 重新连接速度缓慢,HP ProBook 650 配备 BCM43228

我有一台配备 Broadcom BCM43228 的 HP ProBook 650,我在其上全新安装了 Ubuntu 20.04。

在设置中启用非免费 WiFi 驱动程序后,一切都正常。除了当我将笔记本电脑从睡眠状态唤醒时:WiFi 连接大约需要 30 秒。

在 18.04 上它几乎是即时的,并且重新启动后(在 20.04 上)它立即连接。

/var/log/syslog发现,首先扫描似乎失败,然后大约 30 秒内什么都没有发生,最后它顺利连接。

我已经尝试安装 broadcom-sta-dkms,但没有什么变化。

在我看来,系统似乎在卡准备好之前尝试连接,但这只是一种感觉......

我搜索了论坛,但只在 12.04 或更早的版本中发现了类似的问题。由于它在 18.04 中可以正常工作,所以再次出现同样的问题会很奇怪...

我可以尝试什么想法或方法来改善这种行为?

答案1

好的,我找到了一个解决方案,它基于如何防止 Wi-Fi 挂起后进入睡眠状态

/lib/systemd/system-sleep/wlwifi-reset我创建了一个包含以下内容的文件:

#!/bin/sh

# NAME: /lib/systemd/system-sleep/wlwifi-reset
# DESC: Resets Broadcom WiFi after suspend to speed up reconnect
# DATE: Apr 28, 2020

MYNAME=$0
restart_wifi() {
    /usr/bin/logger $MYNAME 'restart wifi to speed up reconnect'
    /sbin/modprobe -v -r wl
    /sbin/modprobe -v wl
    /usr/bin/logger $MYNAME 'restart wifi done'
}

/usr/bin/logger $MYNAME 'case=[' ${1}' ]'
case "${1}/${2}" in
    hibernate|suspend|pre*)
          ;;
    resume|thaw|post*)
          restart_wifi;;
esac

使其可执行:

sudo chmod a+x /lib/systemd/system-sleep/wlwifi-reset

现在,当笔记本电脑唤醒时,wl 内核模块会重新加载,重新连接时间只需几秒钟!

不确定这是否是最好的解决方案,以及为什么它在 18.04 上开箱即用...如果有人有更好的解决方案:请随时分享。

答案2

我遇到了类似的问题,我找到的所有解决方案都无法完全解决问题。对我来说,从暂停状态恢复后最多需要 5 分钟才能连接 WiFi。我最初尝试在 中编辑配置/etc/NetworkManager/conf.d/default-wifi-powersave-on.conf,但发现它没有任何作用。经过进一步挖掘,我找到了解决方案让我们来看看 FOSS - Ubuntu 挂起后 WiFi 无法使用,它会触发网络管理器服务在恢复时重新启动,但网络管理器服务重新启动后仍然需要整整一分钟。

但我注意到,使用重新启动网络管理器sudo service network-manager restart会导致它在 30 秒到 1 分钟内连接。

因此,在尝试了设置并做了更多研究之后,我找到了以下解决方案。

解决方案

  1. 打开终端(CTRL++ )并输入,然后编辑它ALT,使其内容如下所示:Tsudo nano /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf

    [connection]
    wifi.powersave = 1
    
  2. CTRL按+保存文件X,然后按ENTER保存到当前文件路径。

  3. 输入以下命令,创建一个default-wifi-powersave-off.conf内容与以下内容相同的文件default-wifi-powersave-on.conf

    sudo cp /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf \
    /etc/NetworkManager/conf.d/default-wifi-powersave-off.conf
    
  4. /lib/systemd/system-sleep/wififix使用以下命令创建并编辑新脚本

    sudo nano /lib/systemd/system-sleep/wififix
    
  5. 添加以下内容wififix

    #!/bin/sh
    # command line input we're expecting:
    # # wififix <pre|post> <suspend|hybrid-sleep>
    
    set -e
    
    if [ $2 = "suspend" ] || [ $2 = "hybrid-sleep" ]; then
        case $1 in
            pre)
                true
                ;;
            post)
                # After 0.1 seconds, restart the network manager service
                sleep 0.1 && service network-manager restart
                ;;
        esac
    fi
    
  6. wififixCRTL+保存X,然后按ENTER。然后使用以下命令使文件可执行

    sudo chmod +x /lib/systemd/system-sleep/wififix
    
  7. wififix通过输入命令来测试脚本

    sudo /lib/systemd/system-sleep/wififix post suspend
    

    它应该在终端上停留一瞬间,然后您会看到 WiFi 状态指示器消失,然后快速重新出现并连接。

解释

只是一个免责声明,我是一个偶尔使用 Ubuntu 的 PHP 开发人员,而不是 Linux/Ubuntu 专家。

wififix中的脚本是/lib/systemd/system-sleep/此处的主要修复。它强制网络管理器服务在从挂起状态恢复后 0.1 秒内重新启动。这总是让我的连接速度比我让系统自行重新连接/重新启用时更快。

创建这些文件的目的/etc/NetworkManager/conf.d/default-wifi-powersave-*.conf是为了确保没有行为在进入和退出暂停时使用(看这里)。我发现,这样一来,WiFi 在网络管理器重启后启动和运行的速度会更快,因为它不会尝试更改无线网卡或其他任何地方的任何设置(这可能会导致问题,具体取决于.conf中的其他设置文件/etc/NetworkManager/)。如果没有这些脚本,连接 WiFi 仍然需要一分钟左右的时间,但有了它们,现在只需要几秒钟,而且我通常在输入密码之前就连接上了!

相关内容