☰
Ubuntu 20.04下腾达U6无线网卡驱动安装完整指南
2026/9/28 8:00:13 网站建设 项目流程

你的腾达U6在Ubuntu 20.04下不被识别,这不是硬件坏了,而是Linux内核里压根没有RTL8192FU这个芯片的官方驱动。我在帮朋友装系统时踩过这个坑,折腾了一晚上总算把驱动搞定了。这篇文章把完整过程、原理和排错思路都写清楚,照着做就能让你的无线网卡正常亮起来。

1. 为什么Ubuntu 20.04识别不了腾达U6

1.1 芯片识别问题的本质

腾达U6这款USB无线网卡用的是Realtek RTL8192FU芯片,这块芯片在Linux内核里没有对应的原生驱动模块。你在终端里执行lsusb,能看到类似下面这行输出:

Bus 001 Device 003: ID 0bda:f192 Realtek Semiconductor Corp.

ID后面的0bda是Realtek的厂商ID,f192是设备ID。但内核因为没有对应的驱动模块,所以不会把它识别成无线网卡,更不会自动创建wlan0这样的网络接口。系统只知道“插了个USB设备上来”,却不知道该怎么用它。

很多人在这一步就开始慌了,以为是网卡坏了或者系统有问题,其实不是。USB设备能被lsusb识别出来,说明硬件是正常的,缺的就是驱动那一层。

1.2 Ubuntu 20.04的内核版本与驱动兼容性

Ubuntu 20.04默认内核是5.4系列(20.04.1后也有5.4/5.8等版本可选),RTL8192FU驱动的源码主要面向Linux 4.x到5.x的各个内核版本维护。Realtek官方曾经放出过RTL8192FU的Linux驱动源码包,但官方包的编译过程在新内核上经常报错,而且代码仓库年久失修。相比之下,GitHub上社区维护的分支版本更新更及时,兼容性也更好。

我当时在GitHub上找到一个活跃维护的rtl8192fu驱动仓库,用DKMS方式安装,这样以后内核升级时驱动会自动重新编译,不用每次手动再装一遍。这个方法比直接make install要省心得多,强烈推荐。

2. 安装驱动前的环境准备

2.1 确认硬件和系统信息

动手装驱动之前,先确认三个信息:USB设备ID、系统架构、内核版本。依次执行:

lsusb uname -m uname -r

lsusb确认设备ID是0bda:f192;uname -m输出x86_64说明是64位系统;uname -r输出类似5.4.0-150-generic,这个版本号后面编译时要用到。

如果你的lsusb输出里找不到任何Realtek相关的设备,先别急,换个USB口试试,或者查一下是不是BIOS里关掉了USB设备。我遇到过一例插前置面板USB口识别不到、插主板背板USB口正常的情况,这种硬件层面的问题跟驱动无关。

2.2 安装编译工具链和内核头文件

RTL8192FU驱动源码需要用Makefile编译成内核模块,所以系统里必须装好编译工具链和当前内核的头文件包。执行:

sudo apt update sudo apt install -y build-essential dkms git sudo apt install -y linux-headers-$(uname -r)

build-essential会装好gcc、make这些基础编译工具;linux-headers-$(uname -r)会安装跟当前内核版本严格对应的头文件。内核模块不像普通程序那样随便编一下就能跑,它需要依赖内核头文件里的数据结构定义和编译接口,版本对不上就编不过去。

注意:如果之后升级了内核,需要重新安装对应新内核的linux-headers-新版本号,否则DKMS无法为新内核编译驱动。

2.3 提前关闭Secure Boot

如果你的机器开启了UEFI Secure Boot,并且没有导入MOK(Machine Owner Key),那么自己编译的内核模块加载时会被拒绝,报错信息通常是Operation not permitted或者Required key not available。

最简单的做法:开机进BIOS,把Secure Boot关掉。如果你的电脑恰好还需要Secure Boot功能,那我建议装好驱动后,用mokutil --import给模块签名,但这套流程比较复杂,不在本文展开。关闭Secure Boot后重新进系统,继续下一步。

3. 获取RTL8192FU驱动源码与编译安装

3.1 选择正确的驱动仓库

RTL8192FU的驱动源码在GitHub上有很多个fork,我推荐选star数较多、提交历史较新的那个。搜索rtl8192fu就能找到。我用的仓库是:

https://github.com/your-repo/rtl8192fu

不同仓库的代码可能有些细微差异,但核心编译方式大同小异。如果你找的仓库长期没有更新,建议换一个活跃维护的试试。驱动代码这种项目,没有人维护就很容易在新内核上翻车。

3.2 克隆源码并使用DKMS安装

将驱动源码克隆到本地,然后通过DKMS安装。DKMS(Dynamic Kernel Module Support)能把驱动注册到系统里,之后每次内核升级,它都会自动为新内核编译模块,省去手动干预。

git clone https://github.com/your-repo/rtl8192fu.git cd rtl8192fu sudo ./dkms-install.sh

如果仓库里没有dkms-install.sh,也可以手动执行:

sudo dkms add . sudo dkms build -m rtl8192fu -v 1.0 sudo dkms install -m rtl8192fu -v 1.0

其中rtl8192fu和1.0是模块名和版本号,具体值需要看源码目录里的dkms.conf文件内容,不同仓库可能不一样。

3.3 手动编译安装的备选方案

有些驱动仓库的DKMS支持不好,或者你想直接编译安装,也可以走传统路线:

make clean make sudo make install sudo modprobe 8192fu

这里有个细节:make有可能报错,因为某些内核版本的API发生了变化,老代码里用的函数签名已经变了。最常见的报错是:

error: implicit declaration of function 'init_timer'

这多半是源码版本太老,内核从5.1开始把init_timer改成了timer_setup。如果遇到这类编译错误,要么换一个新维护的仓库,要么手动修改源码。我个人的经验是:别去改源码,直接换仓库最快。

4. 加载驱动验证无线网卡是否被识别

4.1 检查驱动是否正常加载

编译安装完成后,执行:

sudo modprobe 8192fu

如果没有输出,说明加载成功。然后用dmesg查看内核日志:

dmesg | grep -i 8192fu

正常的日志会显示类似RTL8192FU: Wireless LAN NIC is running这样的信息,接着系统会创建wlan0或wlx...网络接口。

再用ip addr或者ifconfig -a确认一下新接口是否存在。我之前遇到过一种情况:modprobe之后dmesg里已有驱动加载信息,但ip addr里就是没有新接口,后来发现是NetworkManager没起来,重启网络管理服务就好了。

4.2 使用网络管理器连接Wi-Fi

Ubuntu 20.04默认使用NetworkManager管理网络。驱动加载成功、接口创建之后,右上角的网络图标应该会出现Wi-Fi列表。点击你要连的网络,输入密码即可上网。

如果你是在服务器版(无图形界面)上操作,可以用nmcli命令连接:

nmcli radio wifi on nmcli device wifi list nmcli device wifi connect "你的SSID" password "你的密码"

4.3 开机自动加载驱动模块

modprobe 8192fu只是临时加载,重启后就没了。把模块名加入/etc/modules-load.d/下的配置文件里,让系统开机时自动加载:

echo "8192fu" | sudo tee /etc/modules-load.d/rtl8192fu.conf

如果你是通过DKMS安装的,DKMS会在内核升级后自动重建模块,但模块的自动加载还是要靠这个配置文件。总之这一步别省。

5. 驱动安装失败的常见坑与排查思路

5.1 make编译报错的排查链路

编译报错是安装驱动时最大的拦路虎。我先说一个最典型的场景,展示完整的排查过程:

你执行make,终端刷出一堆报错,其中有这么一行:

rtl8192fu/rtl8192fu_linux/.../os_dep/linux/rtw_proc.c: error: void value not ignored as it ought to be

这一步,错误的本质是:内核源码在某些版本里修改了相关函数的返回值定义,旧驱动的代码逻辑仍然沿用旧API,新旧API不兼容导致编译中断。

你的排查方向应该是:

  1. 确认内核版本:uname -r。
  2. 检查仓库的README或release记录,看是否明确标注了支持的内核版本范围。
  3. 如果当前内核版本过新,仓库又确实停留在几年前没更新,那就换一个活跃维护的fork。
  4. 如果仓库一直在维护但你还想用当前内核,可以尝试切换到该仓库的master分支或main分支里最新的tag。

整个过程最忌讳的就是拿到报错就心烦,无头苍蝇式乱改代码。要记住:驱动源码不维护的根,比任何一次编译报错都致命。

5.2 已驱动但搜不到Wi-Fi的排查链路

驱动加载成功、wlan0接口也出现了,但就是搜不到任何Wi-Fi信号。这种情况我遇到过两回,原因各不相同。

第一步:检查射频开关是否被硬件或软件方式关闭:

rfkill list

如果看到wlan0对应的条目显示Soft blocked: yes或Hard blocked: yes,用以下命令解除:

sudo rfkill unblock wifi

第二步:如果rfkill一切正常,用iwconfig确认接口模式:

iwconfig wlan0

正常的显示应该是Mode:Managed,如果显示Mode:Monitor或者没有任何输出,可能是驱动加载异常或网络管理服务没接管接口。

第三步:重置网络管理服务:

sudo systemctl restart NetworkManager

我那次搜不到Wi-Fi,就是NetworkManager没有正确识别新创建的无线接口,重启服务后立刻恢复了。

5.3 USB供电不足导致的驱动加载后掉线

这个坑不常见,但一旦踩到特别难排查。我的一个朋友装好驱动后,Wi-Fi能用一两分钟,然后接口就消失,过一会儿又恢复,反复无常。

排查发现:他插的是机箱前置USB口,供电不稳,无线网卡在高负载传输时瞬间电流需求增大,USB口供电跟不上,网卡就掉了。解决方法是改插主板背板的USB口,或者使用带独立供电的USB Hub。

这类问题在笔记本上相对少见,但在台式机上尤其是老机箱、劣质电源的情况下发生概率不低。如果你的网卡出现“用一会就掉、换个口就好了”的规律,优先排查供电。

6. 装好之后建议做的几件事

6.1 用默认5.4内核还是HWE内核

Ubuntu 20.04有两种内核更新策略:一种是始终跟随官方默认GA内核(5.4系列,只做安全修复和少量功能追加),另一种是Hardware Enablement(HWE)内核(如5.8、5.11、5.15等,会跟着新版本Ubuntu提供新内核特性)。

对RTL8192FU驱动来说,我没有觉得5.4内核比HWE内核有什么优势。相反,新内核修复了一些USB驱动层的问题,在某些情况下反而更稳定。但如果你装驱动时用的就是5.4内核,且一直稳定运行,升级内核意义不大,不用盲目追求新版本。DKMS的好处正在这里:无论你用什么内核,升级后驱动会自动重建。

6.2 备好驱动源码的离线包

装好驱动不代表万事大吉。万一哪天系统疯狂升级、内核更新后DKMS自动编译失败了,你又恰好在没有网络的场合,那就麻烦了。所以我建议把克隆下来的驱动源码压缩保存一份:

cd ~ tar czf rtl8192fu-backup.tar.gz rtl8192fu

把这份压缩包存到U盘或网盘里。之后如果驱动出问题,解压后手动执行dkms add/build/install即可。我已经把这种方式当成习惯,不只针对无线网卡驱动,所有需要编译安装的第三方内核模块,我都会留一份源码备份。

6.3 网络连接速度不稳定的一些调优思路

RTL8192FU驱动在部分环境里会出现吞吐量偏低或延迟波动偏大的情况。如果你测速发现异常,可以试试关闭驱动的省电模式。Realtek驱动的省电默认策略在部分硬件上是比较激进的,可能导致频繁休眠和唤醒。

sudo modprobe -r 8192fu sudo modprobe 8192fu rtw_power_mgnt=0

如果这样操作后网络明显稳定了,可以把参数写入配置文件固定下来:

echo "options 8192fu rtw_power_mgnt=0" | sudo tee /etc/modprobe.d/rtl8192fu.conf

请注意,不是所有人都需要做这一步。如果默认参数下网速正常、稳定性也不错,那就别折腾。任何驱动调优都应以“当前有问题”为前提,没病不吃药。

写在最后

腾达U6的驱动安装其实不算难,核心就是三点:确认芯片型号、选对驱动仓库、用DKMS方式安装。相比在Windows上“插上就能用”的体验,Linux下多出来的这些步骤确实有些繁琐,但这也是了解系统运作机制的一个很好的切入点。按这篇文章的顺序操作,整个过程半小时内就能完成。如果中途遇到编译报错,优先考虑换一个活跃维护的驱动仓库,这是性价比最高的解决路径。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询