近期第一次在台式机上安装ubuntu和win10双系统,好不容易把系统搞定了,又发现一个大问题,我新买的usb无线网卡并没有在ubuntu下自动装好驱动。usb插上去以后只读出来一个setup.exe文件,ubuntu肯定是打不开的。遂翻出网卡说明书,得知我的网卡是Tenda U10,再去Tenda驱动下载的官网一看,我这网卡不支持linux,官方没提供驱动,尬住。实验室牵网线非常麻烦,于是下定决心解决它。

首先提一下主机没无线网卡驱动,也没网线的时候怎么解决上网问题。可以用手机的usb共享网络功能,手机进“个人热点”,把“usb网络共享”打开,系统右上角就会出现有线网络连接的图标了

去Tenda官网确定了我这款U10网卡用的芯片是realtek 8811CU,然后在github上找到了一个可用的驱动Realtek RTL8811CU/RTL8821CU USB wifi adapter driver version 5.4.1 for Linux 4.4.x up to 5.x

他在Readme里给出了安装步骤,这里我用中文记录一个流程,对他没提到的点进行说明

1.准备工作

在开始之前,我们应该检查我们的ubuntu内核版本,它提供的驱动仅适用于4.4.x~5.x,内核版本太低的话得升级,不然肯定成功不了。查看内核的指令是 uname -r

确保系统上 makegcclinux-header/kernel-develbcgit 已经安装好。这些一般都已经有了,git可以不用,直接下载他的code再解压就行了

2.检查网络配置

使用ifconfig命令检查你的网络设备配置,没有安装的话会提示你sudo apt-get install net-tools

其中lo是本地环回,usb0是我们的usb共享网络连接,另外一个名叫enp2s0的显示没有数据连接

按照github教程的说法,我们可以把无线网卡的网口用他给出的指令改名为wlan0,或者研究他给的这个链接,将这个特性关闭。

Check the interface name of your wifi adapter using ifconfig. Usually, it will be wlan0 by default, but it may vary depends on the kernel and your device. On Ubuntu, for example, it may be named as wlx + MAC address. (https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/)

If this is the case, you can either disable the feature following the link above, or replace the name used in the driver by

grep -lr . | xargs sed -i '' -e '/ifcfg-wlan0/!s/wlan0/<name of the device>/g'

我看到这里挺蒙的,首先试了一下他给的指令,发现是跑不通的,于是去看了一下那个链接,好家伙,全英文的。大概意思是说,我们之前习惯的网口名称形如“eth0”, "eth1", "wlan0"等等,但是从某个时候开始,大家使用一套新的标准(v197),网口的命名习惯就变了,新名称形如“enp2s0”, "ens1"等等。接着就讲了一些把网口名还原回旧习惯的方法。

但,重要的并不是网口名不对啊,我的问题在于ifconfig显示出来的东西并不包含无线网卡的网口,既没有“wlan0”,也没有"wlx+MAC地址"这样的。经过一番了解,得出了结论,ifconfig没显示“wlan0",说明你网卡驱动没装好。啊这,太对了哥,可不是没装吗。所以这一步完全可以跳过,我猜如果是之前有无线网卡驱动但是需要换驱动的话,可能需要这一步。

3.安装

进入rtl8821CU文件夹,打开终端

sudo apt-get install dkms
sudo ./dkms-install.sh

重启电脑,就直接成功了,设置的右上角出现了无线网络图标。虽然Readme中还给出了没解决的修复方法,但是我没遇到。

2021.8.26更新

还是遇到了,在某次重启电脑后就没有wifi图标了。

解决方法如下:

lsusb 查看usb设备信息

找到自己网卡的ID,我的是图里第四条,ID 0bda:1a2b Realtek Semiconductor Corp.

sudo usb_modeswitch -KW -v 0bda -p 1a2b  # 启动这个usb设备,-v -p后面的内容是刚才设备的ID

然后就出现wifi图标了

为了不用每次开机都手动开启usb设备,进行如下设置

sudo gedit /lib/udev/rules.d/40-usb_modeswitch.rules
# 找到最后一行,LABEL="modeswitch_rules_end"
# 在这行的前面添加如下内容

# Realtek 8211CU Wifi AC USB
ATTR{idVendor}=="0bda", ATTR{idProduct}=="1a2b", RUN+="/usr/sbin/usb_modeswitch -K -v 0bda -p 1a2b"

保存退出,下次重启就不用再设置了

最后记录一下这次学到的其他命令,以后可能会用到

lspci -v # 以冗余模式显示所有设备的详细信息

lsusb # 显示usb设备的信息

ip link set <name> down # 关闭网卡,<name>为网卡名

ip link set <a> name <b> # 重命名网口<a>为<b>

ip link set <name> up # 启用网卡

ifconfig # 显示网络设备

iwconfig # 显示无线网络设备

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐