如何在Ubuntu 18.04上安装Realtek RTL8821CE的Wi-Fi驱动程序?

我正在尝试为我的HP一体机安装Wifi驱动程序。有人告诉我要显示命令"sudo lshw -C network"的输出结果,所以这里是:
*-network
description: Ethernet interface
product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
vendor: Realtek Semiconductor Co., Ltd
physical id: 0
bus info: pci@0000:01:00.0
logical name: enp1s0
version: 15
serial: 48:ba:4e:5c:06:5f
size: 100Mbit/s
capacity: 1Gbit/s
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress msix bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=2.3LK-NAPI duplex=full firmware=rtl8168h-2_0.0.2 02/26/15 ip=192.168.1.21 latency=0 link=yes multicast=yes port=MII speed=100Mbit/s
resources: ire:31 import:e000(size=256) memory: fea04000-fea04fff memory:fea00000-fea03fff

*-network UNCLAIMED
description: Network controller
product: Realtek Semiconductor Co., Ltd.
vendor: Realtek Semiconductor Co., Ltd.
physical id: 0
bus info: pci@0000:02:00.0
version: 00
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress cap_list
configuration: latency=0
resources: import:d000(size=256) memory:fe900000-fe90ffff

从 "lspci -nnk | grep -A2 0280" 的输出结果如下:
02:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. RTL8821CE 802.11ac PCIe Wireless Network Adapter [10ec:c821]
Subsystem: Hewlett-Packard Company RTL8821CE 802.11ac PCIe Wireless Network Adapter [103c:831a]
03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5229 PCI Express Card Reader [10ec:5229] (rev 01)

@pHeLiOn 哦,谢谢,但是是的,那个问题已经发布了12天了,还没有答案,所以我真的希望有人能在这里帮助我,因为我不知道接下来该怎么办。 - Haz
1我们看一下能否找到无线网卡的具体名称,然后再寻找解决方案 - 请运行 lspci -nnk | grep -A2 0280 并将输出结果展示在您的问题中。 - pHeLiOn
还有其他人建议进入BIOS设置,确保安全启动已禁用。这个方法很简单,值得一试。 - pHeLiOn
@pHeLiOn 更新的问题 - Haz
@pHeLiOn 是的,我已经禁用了安全启动。 - Haz
@pHeLiOn 我在等待的时候实际上尝试了那个解决方案,我已经到了需要输入"make"命令的步骤,但是在运行后,我得到了一堆错误信息,显示"recipe for target <目标名称> failed"。这是否意味着makefile或下载的软件包有问题? - Haz
如果你已经尝试过了,我建议你查看这里praseodym在第四楼的帖子:https://ubuntuforums.org/showthread.php?t=2398917 第一行似乎安装了你需要的所有工具,而且是一个星期前的帖子,所以很可能是最新的解决方案。 - pHeLiOn
把每一行文本复制粘贴到终端中: - pHeLiOn
@pHeLiOn 天哪,我已经试了3天才搞定这个问题。那篇帖子解决了它。非常感谢你。现在我可以使用WiFi了,但还需要让显卡驱动正常工作。有什么建议吗? - Haz
什么显卡?Nvidia的吗? - pHeLiOn
@pHeLiOn 我在我的问题中加入了“lspci”命令的输出内容。我不确定那是否能展示你所寻找的内容。如果不行,请告诉我应该输入什么来查找。 - Haz
我们会因为在评论中聊天而受到责备,我应该知道得更好,但是...试试sudo lshw -c video,然后你想要在AskUbuntu上寻找解决方案-可能是AMD或nVidia-很可能不是Intel,因为它们不太容易引起你之前遇到的“冻结”问题。 - pHeLiOn
@pHeLiOn 添加了lshw的输出结果 - Haz
好的,AMD - 请从您的问题中删除它 - AskUbuntu规则是一次只能提一个问题。我们已经查看了Wifi,并很高兴最终解决了!图形将需要单独提出一个问题,但请先查找AMD的问题和答案,看看是否已经提出了这种类型的问题。使用Windows获取有关它是什么类型的显卡的更多信息 - (Radeon HD 4550或其他)或在此处查看:https://help.ubuntu.com/community/AMDGPU-Driver - pHeLiOn
3个回答

(这个问题是Lenovo ThinkPad E570上的Wi-Fi无法工作 (Realtek RTL8821CE)的重复,但我很高兴我们最终找到了解决方案,所以我会写下有效的方法给Haz。)
据我所知,在撰写本文时,官方的Ubuntu软件仓库中尚未提供Realtek RTL8821CE的Wifi驱动程序。
在GitHub上有一个针对4.14及以上内核的RTL8821CE驱动程序的存储库,专门为Arch Linux设计,不支持其他Linux发行版:https://github.com/tomaspinho/rtl8821ce (小注:截至2019年2月,tomaspinho不幸地无法继续维护驱动程序,因为他不再拥有使用该芯片组的计算机,因此可能需要新的维护人员,但驱动程序在那个时候仍然适用于Ubuntu 18.04。)

然而,已经有报告称其在Ubuntu 18.04上运行得很好。

解决方案直接来自Praseodym在文章#4中提供的内容:https://ubuntuforums.org/showthread.php?t=2398917,并将安装一些用于构建无线网络驱动程序模块的软件包(git、dkms、build-essential & linux-headers),并克隆来自tomaspinho的git代码库。

使用DKMS是因为它是“一个系统,在安装或更新新内核时会自动重新编译和安装内核模块。”


打开终端并输入以下命令(如果你愿意,可以复制粘贴):
sudo apt-get install --reinstall git dkms build-essential linux-headers-$(uname -r)
git clone https://github.com/tomaspinho/rtl8821ce
cd rtl8821ce
chmod +x dkms-install.sh
chmod +x dkms-remove.sh
sudo ./dkms-install.sh

完成后,您应该重新启动并发现您的Wifi正常工作。
您还需要确保在BIOS设置中禁用SecureBoot,否则它将不允许您加载未签名的自编译内核模块。
或者,根据给出的命令here,自行对8821ce.ko文件进行签名。
kmodsign sha512 \
    /var/lib/shim-signed/mok/MOK.priv \
    /var/lib/shim-signed/mok/MOK.der \
    /usr/lib/modules/$(uname -r)/kernel/drivers/net/wireless/8821ce.ko

3嗨,据我所知,您绝对不需要禁用安全启动或EFI。请参考https://blog.ubuntu.com/2017/08/11/how-to-sign-things-for-secure-boot。 - MrMesees
我可以确认这在惠普可转换x360 11英寸上有效。 - Niel de Wet
5请确认您的系统使用RTL8821CE芯片,使用命令lspci -nnk - Niel de Wet
5请确保SecureBoot已禁用,这非常重要!谢谢。 - Duncanmoo
1非常感谢 @tomaspinho 和大家!适用于 hp 255 G7/ubuntu 18.04.2 lts。 - Asalle
已确认在Desktop HP All-in-One 24-f0341ns上工作,Ubuntu 18.04 64位。非常感谢。我的 dmesg 显示了一些 8821ce: module verification failed: signature and/or required key missing - tainting kernel 的消息,但它可以正常工作。SecureBoot 在 BIOS 中已禁用。 - Sopalajo de Arrierez
在Ubuntu 16.04.6上成功解决了。 - user694859
1请原谅我的无知,但是我该如何在一台只有一个WiFi芯片的机器上运行sudo apt-get install ...命令来安装驱动程序呢?我的HP笔记本只有一个网络卡,而且它不工作。 - user486771
1仍然适用于Ubuntu 20.04,非常感谢。确实需要禁用安全启动,我还没有尝试建议的链接(但希望有时间的话能试一下)来签署模块。期待具体的示例! - Vincent Gerris
我6个月前安装了这个驱动程序,但两次(包括今天)它神秘地停止工作了(在Ubuntu 18上)。重新安装+禁用安全启动后,它又恢复正常工作了。这个驱动程序还没有官方修复吗? - Johan
非常好用。我只需将我的安卓手机插入笔记本电脑,然后打开设置 > 更多 > 共享网络 > USB共享网络,以便分享互联网,这样我就可以运行命令了。我不需要手动签名,只需在DKMS安装时输入密码,然后重新启动并"注册MOK"并输入密码即可。 - dw1

@pHeLiOn的答案对我有所帮助,但还不够。所以这里是我确切地做了什么来使它在我的HP电脑上运行起来。
确保先通过sudo ./dkms-install.sh移除之前未成功安装的驱动程序,然后删除目录rm -rf rtl8821ce。它可能位于cd /var/lib/dkms/,也要在那里将其删除。
  1. 我禁用了安全启动(执行此命令后需要重新启动,并在蓝屏上输入密码字符):

    sudo mokutil --disable-validation
  2. 我将内核从4.15升级到了4.18,因为某种原因它无法与4.15版本兼容。使用uname -a命令检查您的内核版本。

    sudo apt install linux-generic-hwe-18.04
    sudo apt update && sudo apt upgrade -y
  3. 然后我重新安装了dkms头文件:

    sudo apt-get install --reinstall git dkms build-essential linux-headers-$(uname -r)
  4. 我拉取了GitHub代码库:

    git clone https://github.com/tomaspinho/rtl8821ce
  5. 进入新目录:

    cd rtl8821ce
  6. 我更改了文件权限:

    chmod +x dkms-install.sh
    chmod +x dkms-remove.sh
  7. 我将驱动程序同步到了正确的内核版本:

    make
    sudo make install
  8. 我安装了驱动程序:

    sudo ./dkms-install.sh
  9. 最后,我重新启动电脑,令人惊讶的是它起作用了。

此外,我按照GitHub上的建议更改了我的PCIe激活状态电源管理

2非常感谢您的发布。在我尝试过的所有修复方法中,这是唯一一个非常完美且解释非常清晰的方法!!我应该给您点赞! - gusv2000
1太棒了,我也遇到了同样的问题,幸好通过这个方法解决了,谢谢! - Alex Rivas
我特意创建了一个账户来感谢你。这是我第一次接触Linux,你可以想象一下我的感受。非常感谢你提供的帮助! - Ender

在这之前的帖子中的命令都是正确的,除了git pull。由于需要用户名和密码进行身份验证,所以你只需访问网页--https://github.com/tomaspinho/rtl8821ce--并下载.zip文件。然后我尝试按照建议将shell文件更改为可执行文件,但当它们运行时,发现文件需要放置的位置有些不一致。(我绝对不是在抱怨,只是如果你真的不知道自己在做什么,可能会有点困惑)这些文件需要解压到/usr/src/rtl8821ce-1.0.0(在/usr/src下创建一个新目录"rtl8821ce-1.0.0"),然后运行chmod +x dkms-install.sh,一切应该就像顺利的肉汁一样工作。
非常感谢编写这个脚本的人。我花了大约600美元买了这台牛逼的机器,还以为无线网络不会工作呢。干杯。
具体来说,这台机器是一台新的HP Pavilion x360 2合1笔记本电脑,搭载Windows 10和Ubuntu Studio 18.04。

2使用git clone而不是git pull - mchid