rtl8822be wifi 无法使用 ubuntu 18.04(蓝牙可用)

rtl8822be wifi 无法使用 ubuntu 18.04(蓝牙可用)

我最近买了一台华硕 vivobook s15。它配备了 rtl8822be wifi/蓝牙 NIC。我双启动 Windows 10 和 ubuntu 18.04。我在 Windows10 中使用 wifi/蓝牙没有问题。在 Linux 中,蓝牙可以工作,但 wifi 不行。我可以使用“ip 链接列表”看到接口,但它处于“休眠”模式。驱动程序和接口正在显示,但驱动程序(或内核)中出现了问题。我在其他论坛(如下所列)上看到 rtl8822be 在 18.04 中受支持,所以这很奇怪……

我努力了:

  • 设置 aspm=0
  • 将蓝牙模块列入黑名单
  • 从 lwfinger 的 github 页面的源代码构建驱动程序
  • 全新安装
  • 手动控制接口
  • 在网络管理器配置文件中设置 powersave=2 (关闭)
  • 更多的...

以下是一些命令输出:

mobile3@mobile3-VivoBook:~$ lsmod | grep 8822
r8822be               688128  0
mac80211              815104  4 ath9k_htc,rtwpci,rtw88,r8822be
cfg80211              675840  6 ath9k_htc,ath9k_common,ath,mac80211,rtw88,r8822be

mobile3@mobile3-VivoBook:~$ lspci -nnk | grep 8822
01:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. RTL8822BE 802.11a/b/g/n/ac WiFi adapter [10ec:b822]
Kernel modules: rtwpci, r8822be

mobile3@mobile3-VivoBook:/opt$ uname -r
5.0.0-27-generic

mobile3@mobile3-VivoBook:/opt$ sudo ip link list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: wlp1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DORMANT group default qlen 1000
link/ether dc:f5:05:c7:fd:8d brd ff:ff:ff:ff:ff:ff

驱动程序似乎正在运行,但由于某种原因,NIC 的 wifi 部分无法启动。一些类似的线程是: https://forums.linuxmint.com/viewtopic.php?t=266219 https://askubuntu.com/questions/1067286/still-no-wifi-adapter-for-realtek-rtl8822be-found-in-18-04 https://askubuntu.com/questions/926364/how-to-make-my-pci-wifi-card-rtl8822-working-on-ubuntu

编辑1:我已经确认在 19.04 LiveUSB 上我有 wifi 并且 RTL8822BE 芯片可以工作,但是当我安装时 wifi 不工作!

编辑2: 我在下面发布了一个答案。基本上,我将内核回滚到 5.0.0.13。对于遇到类似问题的人,我注意到 NetworkManager 正在努力将接口设置为 UP,最终将其断开连接:

ubuntu@ubuntu:/tmp/kern$ journalctl | grep wlp1s0
Sep 09 23:27:13 ubuntu kernel: rtw_pci 0000:01:00.0 wlp1s0: renamed from wlan0
Sep 09 23:27:13 ubuntu NetworkManager[1308]: <info>  [1568071633.5581] devices added (path: /sys/devices/pci0000:00/0000:00:02.4/0000:01:00.0/net/wlp1s0, iface: wlp1s0)
Sep 09 23:27:13 ubuntu NetworkManager[1308]: <info>  [1568071633.5581] device added (path: /sys/devices/pci0000:00/0000:00:02.4/0000:01:00.0/net/wlp1s0, iface: wlp1s0): no ifupdown configuration found.
Sep 09 23:27:13 ubuntu NetworkManager[1308]: <info>  [1568071633.5582] device (wlp1s0): state change: unmanaged -> unavailable (reason 'managed', sys-iface-state: 'external')
Sep 09 23:27:14 ubuntu NetworkManager[1308]: <info>  [1568071634.1258] device (wlp1s0): supplicant interface state: starting -> ready
Sep 09 23:27:14 ubuntu NetworkManager[1308]: <info>  [1568071634.1258] device (wlp1s0): state change: unavailable -> disconnected (reason 'supplicant-available', sys-iface-state: 'managed')
Sep 09 23:27:25 ubuntu NetworkManager[1308]: <info>  [1568071645.9281] device changed (path: /sys/devices/pci0000:00/0000:00:02.4/0000:01:00.0/net/wlp1s0, iface: wlp1s0)
Sep 09 23:28:50 ubuntu wpa_supplicant[1310]: wlp1s0: CTRL-EVENT-REGDOM-CHANGE init=DRIVER type=CUSTOM_WORLD
Sep 09 23:28:50 ubuntu wpa_supplicant[1310]: wlp1s0: CTRL-EVENT-REGDOM-CHANGE init=DRIVER type=INTERSECTION

答案1

看来最新的 Linux 内核 5.0.0.27 是问题的根源。当我使用较旧的内核 5.0.0.13 启动时,RTL8822be 芯片组可以很好地用于 wifi 和蓝牙。我的 Disco (19.04) LiveUSB 使用 5.0.0.13。然后我安装了带有 5.0.0.13 内核的 Ubuntu 19.04,并且一切正常。

对于遇到类似问题的其他用户:您可能需要尝试回滚内核或切换到 19.04。全新安装 19.04 后,我启动了内核 5.0.0.13,然后运行 ​​apt-get update 和 apt-get upgrade,重新启动后一切正常(再次恢复到 5.0.0.13)。内核中肯定存在某种错误,但我是核科学家,不是内核工程师,因此我把这个问题留给专家来解决...

编辑/更新 20191110 仅供遇到此问题的其他任何人参考,最新版本的 ubuntu18 似乎可以正常工作。您可能必须获取最新的 linux 内核并重新编译驱动程序,但我正在使用此 r8822be 驱动程序运行 ubuntu 18 LTS,重建内核驱动程序后它可以正常工作。

答案2

一个叫 mid-kid 的人有一个GitHub 存储库对于我来说,RTL8822BE 驱动程序在 Ubuntu 20.04 中运行完美。

设置驱动程序的方法如下:

sudo apt install build-essential git
git clone https://github.com/mid-kid/r8822be.git
cd r8822be
./make

# Remove the misbehaving rtw88 module
sudo rmmod rtwpci rtw88

# Install the r8822be module
sudo ./make install
sudo modprobe r8822be

WiFi 卡现在应该处于活动状态。

答案3

运行命令 echo“options r8822be aspm=0”| sudo tee /etc/modprobe.d/r8822be.conf

运行命令 sudo rmmod r8822be

运行命令 sudo modprobe r8822be

相关内容