![rtl8822be wifi 无法使用 ubuntu 18.04(蓝牙可用)](https://linux22.com/image/1603274/rtl8822be%20wifi%20%E6%97%A0%E6%B3%95%E4%BD%BF%E7%94%A8%20ubuntu%2018.04%EF%BC%88%E8%93%9D%E7%89%99%E5%8F%AF%E7%94%A8%EF%BC%89.png)
我最近买了一台华硕 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