最近新入了一个Thinkpad,安装ubuntu16.04之后,不能识别无线网卡,解法如下:

1. 查看无线网卡型号

$ lspci

Ubuntu支持Thinkpad无线网卡_无线网卡

我无线网卡的型号是Realtek Semiconductor Co., Ltd. Device c821

2. 下载驱动程序,编译内核模块

$ git clone https://github.com/tomaspinho/rtl8821ce
$ cd rtl8821ce
$ chmod +x dkms-install.sh
$ chmod +x dkms-remove.sh
$ sudo ./dkms-install.sh

如果网卡型号和我的不同,可以试试realtek的其它驱动包: git clone https://github.com/lwfinger/rtlwifi_new

3. 加载网卡驱动

查看驱动模块是否被加载

$ lspci -v

这时看到Device c821设备下面有Kernal modeles, 但是没有Moder driver in use, 也就是说模型编出来了,但插入内核失败了,于是手动加载内核模块

$ sudo modprobe 8821ce

此时报错:ERROR:Required key not available,这是由于Ubuntu Kernel 使用 ​​EFI_SECURE_BOOT_SIG_ENFORCE​​ 内核配置,这样会阻止内核载入第三方模块,就是说你自己编的ko模块不能被加载到内核。如果你也遇到了这个问题,解法如下。

4. 修改内核设置,允许加载三方模块

$ sudo apt install mokutil
$ sudo mokutil --disable-validation

此时输入一个8位以上的密码,之后重启系统,出现如下蓝屏,选择Change Secure Boot state

Ubuntu支持Thinkpad无线网卡_无线网卡_02

系统会让你输入刚才设置密码中的几个数,界面如下:

Ubuntu支持Thinkpad无线网卡_加载_03

后续再选择菜单中的Yes和Reboot,重启后,我编模块就被内核自动加载了,如果加载不了,手动再用modprobe试试看。

Ubuntu支持Thinkpad无线网卡_网卡驱动_04