解决Debian 11系统缺少无线网卡固件rtl8192cfw.bin

一,先简单介绍解决办法

rtlwifi/rtl8192cfw.bin”是无线网卡的固件,其实缺少它网卡也是可以用的,只是不知道是不是这个原因导致丢包频繁。在CSDN找到了这篇文章:“U盘安装Debian,提示缺少无线网卡驱动(blog.csdn.net/gaisylly/article/details/50446406)”,然后我找到了一份deb包(ftp.cn.debian.org/debian/pool/non-free/f/firmware-nonfree/firmware-realtek_0.43_all.deb)。我寻思只是缺少一个固件文件那单独放好这个文件给系统启动时用就行,就没必要用dpkg安装这个包了。

解压firmware-realtek_0.43_all.deb和它里面的压缩包后找到了固件文件位于:

firmware-realtek_0.43_all/data/lib/firmware/rtlwifi/rtl8192cfw.bin

除此之外还有这些文件:

rtl8188efw.bin     rtl8192cufw_B.bin     rtl8723aufw_B.bin
rtl8188eufw.bin    rtl8192cufw.bin       rtl8723aufw_B_NoBT.bin
rtl8192cfw.bin     rtl8192cufw_TMSC.bin  rtl8723befw.bin
rtl8192cfwU_B.bin  rtl8192defw.bin       rtl8723fw_B.bin
rtl8192cfwU.bin    rtl8192sefw.bin       rtl8723fw.bin
rtl8192cufw_A.bin  rtl8712u.bin          rtl8821aefw.bin

接下来说最终的解决办法(就两步):一,检查一下如果没有的话就在/lib/firmware下新建rtlwifi和rtl_nic目录,然后分别拷贝data/lib/firmware/rtlwifi/rtl8192cfw.bindata/lib/firmware/rtl_nic/rtl8168e-3.fw到以上两个目录。二,重启系统。

重启后使用例如“journalctl -r -p err”检查日志看有无异常,我是放了这两个文件后没有再出现缺少固件的问题。

二,发现和解决问题的具体过程

以前给电脑安装系统时虽然有提示rtlwifi/rtl8192cfw.bin缺失,但是系统安装好后连接WIFI是可以上网的所以我没有注意。后来发现原下载峰值约2.4M/s的网络现在剩下不到400K/s,且波动大、下载容易断。使用了ping命令检查发现延迟高、出现丢包。下面是当时的下载网速和ping命令测试的截图:

KDE系统监视器的网络速度监控
使用ping命令检查的情况

用手机插在USB上共享充当电脑的无线网卡后网速是正常的,所以问题和电脑内置的无线网卡有关。考虑到之前有缺少固件的提示我怀疑当前网卡驱动是不是有问题。用journalctl命令检查了日志,发现每次启动电脑时都有加载rtl8192cfw.bin失败的问题,且后面继续出现和wlp3s0(内置无线网卡)有关系的错误日志。所以我决定先去网上看能不能找到这个文件。

原本做好了网上搜不到这个文件的准备的,但是居然就直接找到开头说的那篇博客,而且里面的下载链接还能用。

解压后我看了看,电脑上是有/lib/firmware目录的,里面没有rtlwifi目录。我尝试这样操作然后重启系统看看:

# mkdir -p /lib/firmware/rtlwifi
# cp --no-preserve=own /home/az13js/下载/firmware-realtek_0.43_all/data/lib/firmware/rtlwifi/rtl8192cfw.bin /lib/firmware/rtlwifi/

重启后查看日志:

# journalctl -k -r -p err

这次里面显示的错误变成了:

failed to load rtl_nic/rtl8168e-3.fw (-2)

所以这办法可行,刚刚那个文件是顺利加载了,只是还依赖别的文件。那么一样的操作再来一次:

# mkdir -p /lib/firmware/rtl_nic
# cp --no-preserve=own /home/az13js/下载/firmware-realtek_0.43_all/data/lib/firmware/rtl_nic/rtl8168e-3.fw /lib/firmware/rtl_nic/

重启系统检查内核日志,这次没有错误了:

kernel: wlp3s0: authenticate with d0:d7:00:00:00:00
kernel: wlp3s0: send auth to d0:d7:00:00:00:00 (try 1/3)
kernel: wlp3s0: authenticated
kernel: wlp3s0: associate with d0:d7:00:00:00:00 (try 1/3)
kernel: wlp3s0: RX AssocResp from d0:d7:00:00:00:00 (capab=0x431 status=0 aid=8)
kernel: wlp3s0: associated
kernel: IPv6: ADDRCONF(NETDEV_CHANGE): wlp3s0: link becomes ready

然后测试网络性能:
KDE 系统监视器的网络流量监控
ping命令执行情况

测试结果显示经过这么折腾问题已经解决。

三,如果上述方案不能解决问题时的处理办法

最后,假如网上搜不到这个提示的文件呢?那么只剩下系统日志提供的网址:
系统日志
打开后是这:

GNU关于固件的网页

第一个是包含非自由固件的镜像,第二个是单独的固件压缩包,第二个里面找到对应的发行版名称可以看到这:

GNU固件压缩包下载

然后寄希望找到的文件里面有需要的固件,没有的话可以考虑要不要放弃了。

以上内容只针对Debian 11,其它OS解决思路也许差不多。

Logo

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

更多推荐