ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Ubuntu 20.04下腾达U6无线网卡驱动安装完整指南

Ubuntu 20.04下腾达U6无线网卡驱动安装完整指南 你的腾达U6在Ubuntu 20.04下不被识别这不是硬件坏了而是Linux内核里压根没有RTL8192FU这个芯片的官方驱动。我在帮朋友装系统时踩过这个坑折腾了一晚上总算把驱动搞定了。这篇文章把完整过程、原理和排错思路都写清楚照着做就能让你的无线网卡正常亮起来。1. 为什么Ubuntu 20.04识别不了腾达U61.1 芯片识别问题的本质腾达U6这款USB无线网卡用的是Realtek RTL8192FU芯片这块芯片在Linux内核里没有对应的原生驱动模块。你在终端里执行lsusb能看到类似下面这行输出Bus 001 Device 003: ID 0bda:f192 Realtek Semiconductor Corp.ID后面的0bda是Realtek的厂商IDf192是设备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 -rlsusb确认设备ID是0bda:f192uname -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并且没有导入MOKMachine 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安装。DKMSDynamic 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-FiUbuntu 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不兼容导致编译中断。你的排查方向应该是确认内核版本uname -r。检查仓库的README或release记录看是否明确标注了支持的内核版本范围。如果当前内核版本过新仓库又确实停留在几年前没更新那就换一个活跃维护的fork。如果仓库一直在维护但你还想用当前内核可以尝试切换到该仓库的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 EnablementHWE内核如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_mgnt0如果这样操作后网络明显稳定了可以把参数写入配置文件固定下来echo options 8192fu rtw_power_mgnt0 | sudo tee /etc/modprobe.d/rtl8192fu.conf请注意不是所有人都需要做这一步。如果默认参数下网速正常、稳定性也不错那就别折腾。任何驱动调优都应以“当前有问题”为前提没病不吃药。写在最后腾达U6的驱动安装其实不算难核心就是三点确认芯片型号、选对驱动仓库、用DKMS方式安装。相比在Windows上“插上就能用”的体验Linux下多出来的这些步骤确实有些繁琐但这也是了解系统运作机制的一个很好的切入点。按这篇文章的顺序操作整个过程半小时内就能完成。如果中途遇到编译报错优先考虑换一个活跃维护的驱动仓库这是性价比最高的解决路径。
返回列表