- 更新:2021-08-09 00:23:00
- 首发:2020-05-17 23:43:16
- 教程
- 88505
本文将阐述Linux环境下安装WIFI驱动的常规思路。网络上绝大多数教程对新手极其不友好,现在咱们就用简单一点的方式来搞定无线网卡驱动安装。
本文的安装思路在Ubuntu
、Debian
、Deepin
、CentOS
、Kali
等不同Linux发行版
通用。无论使用Raspberry Pi
、Nano Pi
、Orange Pi
等ARM开发板
还是x86
架构的设备,安装思路大体一致。
分清网卡是什么接口
主流的接口有两种:
- 直接插在主板上的是
PCI
接口(包括MINI-PCI
或PCIE
)。 - 插在
USB
接口上的USB无线网卡
。
如果还没有购买,购买前到网卡官网搜一下,看官方提供的驱动是否兼容你的设备。MacOS
(包括黑苹果
)的驱动和Linux
驱动不通用。需要特别注意Linux驱动
对Linux内核版本
或发行版
、设备架构
的要求,一般在驱动下载界面会有明确说明。
部分无线网卡只兼容x86
架构的设备,因此对于ARM开发板
,可以到对应官方提供的文档手册,查看官方系统已经兼容的无线网卡型号,官方测试过的型号通常更加稳定和易用。需要注意的是,文档中列明的型号未必和销售标识的型号一致,此情况后文有说明。
查看内核信息:
uname -a
判断网卡是否在Linux下免驱
ifconfig -a
查看是否有wlan
开头的网卡信息。例如:wlan0
。当然,部分网卡也会显示为eth1
或wlx803f5d150c4c
、usb0
之类。可以在插入网卡前执行一次ifconfig -a
,插入网卡后再执行一次命令,对比前后差异。
ifconfig: command not found
部分发行版,例如CentOS 7
默认已不再安装此命令,可以用ip addr
替代或安装相应的net-tools
软件包。
例如,CentOS
下,安装net-tools
:
yum install net-tools -y
net-tools
包括了ifconfig
、route
、arp
和netstat
命令。
其它判断方法
也可以用iwconfig
命令,查看当前无线网卡信息。
iwconfig
同样的,如果出现iwconfig: command not found
,需要安装wireless-tools
这个包。
apt install wireless-tools
请将
apt
替换为对应发行版的包管理工具。
如果上述方式已经可以获取到相应的无线网卡信息,则说明已经驱动了网卡。
到网卡官网下载驱动
根据所购买的网卡型号,到对应的网卡官网,下载驱动并按说明进行安装。只有运气非常好,才有可能遇到所购买的无线网卡兼容Linux平台的情况😂。否则我们可能需要先获取网卡芯片型号
,然后再搜搜对应芯片的Linux驱动程序
或驱动源文件
。
到对应Linux发行版Wiki中查找固件
如果你的PCI无线网卡
或USB WIFI
无法正常工作,大概率是因为系统中缺少了对应的网卡固件。
Debian
对于Debian系统, 可以在Debian-Wiki里找到并安装USB无线网卡芯片的固件。
Ubuntu
对于Ubuntu系统, 可以通过下列命令安装所有的USB无线网卡
固件:
apt-get install linux-firmware
通常情况下, 各类WiFi芯片的固件都存放在/lib/firmware
目录下。
查看网卡芯片型号
无线网卡型号
和芯片型号
通常不一致。例如电商平台显示的型号TL-WN725N
型号可能对应芯片型号rtl8188eu
或rtl8188eus
。不同版本的无线网卡对应的芯片型号可能不同,例如水星MW150US
对应rtl8188eu
,而MW150US(免驱版) V2.0
对应芯片rtl8188gu
。不同生产批次对应的芯片型号也有可能不同,例如2019
的批次可能对应一个型号,而2020
可能对应另外的型号。这是因为本身网卡芯片也在不断迭代升级,提供更多的功能,而厂商为了销售的方便,会统一制定一个网卡型号
。不同品牌相似功能的产品可能用的是同一个芯片,为了准确定位当前硬件的芯片,可以通过lspci
或lsusb
查看。
PCI无线网卡
apt install pciutils
查看网卡信息:
lspci -v
如果信息太多,可以使用lspci -v|grep network
过滤一些信息,方便查找。
通常PCI无线网卡
的芯片型号信息会直接显示在设备名称中。
USB无线网卡
apt install usbutils
查看网卡信息:
lsusb
通常usb无线网卡
显示的芯片信号信息不一定在名称中。例如:
root@raspberrypi:~# lsusb
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 0846:9053 NetGear, Inc.
部分已经安装了驱动程序的网卡,显示信息可能如下:
root@NanoPi-NEO2:~# lsusb
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 004: ID 0bda:8812 Realtek Semiconductor Corp. RTL8812AU 802.11a/b/g/n/ac WLAN Adapter
这种情况,芯片信号一目了然,就是RTL8812AU
。但其实第一种情况也可以查找芯片信号,根据ID 0846:9053
到相应的网卡厂商官网进行查找。
例如水星MW150US2.0
:
Bus 005 Device 012: ID 0bda:b711 Realtek Semiconductor Corp.
根据ID 0bda:b711
,到下述网站查找型号,可以找到对应的网卡芯片型号
为RTL8188GU
。
USB ID查询站点:
除了水星MW150US 2.0免驱版
的网卡芯片为RTL8188GU
,普联TL-WN726N(免驱版)
、 TL-WN725N
、CF-WU815N V2
也可能使用的是这款芯片。
BCM无线网卡
目前很多笔记本电脑的用的是BCM的无线网卡和蓝牙模块集成模块,上述两个命令是无法找到网卡信息的。
dmesg | grep brcm
可以看到类似上图所示内容,则型号为BCM4343A0
,蓝牙和WIFI共用一个模块。
根据网卡芯片型号查找驱动
知道了网卡芯片型号
后,可以搜索到的资料就很多了。只要芯片型号匹配的驱动理论上都可以用。
查找驱动除了百度
、Google
,还有俩常规方案:
- 到对应的芯片厂商官网搜索。
- 到万能的
github
搜索。
通常芯片厂商会提供部分Linux网卡驱动
的源代码,需要自行编译安装,也可能只提供对应发行版的安装文件(一定要确认一下内核版本和驱动要求的版本是否匹配、架构是否匹配。x86
的驱动程序是不能用于arm64
架构的,反之亦然)。
这里给出部分Linux驱动地址。
rtl8188gu
Linux驱动:
https://github.com/lwfinger/rtl8188gu
rtl8188eu
Linux驱动:
https://github.com/lwfinger/rtl8188eu
rtl8821cu
Linux驱动(ID 0bda:1a2b
):
https://github.com/MingxuZhang/rtl8821cu
编译Linux网卡驱动
驱动编译命令一般在README.md
中都已经有介绍,在此不再赘述。但是在执行编译命令前,需要先确保对应内核的linux-headers
包已经安装。
安装编译工具和内核头文件
通常编译驱动也需要
git
、gcc
、make
、autoconf
、build-essential
等依赖,请根据需要自行研究。
如果执行make
编译时提示/lib/modules/....../build does not exist
,通常由于对应的内核头文件(kernel header
)没有安装。
树莓派
由于Raspberry Pi
具有超大的用户群,在Raspbian
中安装常见驱动比其他Linux
系统方便得多。
sudo apt install git bc bison flex libssl-dev make raspberrypi-kernel-headers
如果您的Raspberry Pi
内核非常新,则您需要等待几个周的时间才能通过apt
安装到对应的kernel-headers
。或者通过https://github.com/raspberrypi/linux
获取内核源文件。
关于树莓派内核编译:https://www.raspberrypi.org/documentation/linux/kernel/building.md
Nano Pi
内核源码:https://github.com/friendlyarm/linux
git clone https://github.com/friendlyarm/linux.git -b sunxi-4.14.y --depth 1
其中4.14
应替换为uname -r
对应的版本。
参考文档:http://wiki.friendlyarm.com/wiki/index.php/Building_U-boot_and_Linux_for_H5/H3/H2%2B/zh
编译内核或模组的方法,请参考对应平台的说明文档。
ORange Pi
内核源码:https://github.com/orangepi-xunlong?tab=repositories
CentOS
yum install kernel-devel
其它发行版
apt-get install linux-headers-$(uname -r)
编译无线网卡技巧
相近内核头文件用于编译
通常下载内核的方式获取linux-headers
非常耗时耗力,而某些情况无法通过包管理工具直接安装现行版本的内核linux-headers
。这种情况下,可以安装与当前内核版本号非常接近的kernel headers版本,然后进入对应当前版本的modules
文件夹下,通过软连接ln -s
将build
文件连接到相近版本,然后再编译。
cd /lib/modules/`uname -r`
ln -s build ../相近版本
内核模块版本和内核版本不一致的处理方法
如果在dmesg
中看到类似下面的信息(version magic
):
[ 4496.876553] 8188gu: version magic '4.15.0-99-generic SMP mod_unload aarch64' should be '4.14.111 SMP mod_unload aarch64'
说明驱动编译时候的内核模块版本和当前内核版本不一致。
这种情况通常发生在你拿不到用户当前使用的kernel
但需要给他对应驱动的时候。
cd /usr/src/linux-headers-当前内核
vim include/linux/vermagic.h
将UTS_RELEASE
修改为uname -r
对应的版本号。注意后面的空格。
例如,修改前:
...
#define VERMAGIC_STRING \
UTS_RELEASE " " \
MODULE_VERMAGIC_SMP MODULE_VERMAGIC_PREEMPT \
MODULE_VERMAGIC_MODULE_UNLOAD MODULE_VERMAGIC_MODVERSIONS \
...
修改后:
...
#define VERMAGIC_STRING \
"4.14.111 " \
MODULE_VERMAGIC_SMP MODULE_VERMAGIC_PREEMPT \
MODULE_VERMAGIC_MODULE_UNLOAD MODULE_VERMAGIC_MODVERSIONS \
...
修改完成后,重新编译无线网卡驱动即可。
查看驱动加载报错信息
如果编译安装了无线网卡驱动并重启后仍然无法正常使用网卡。可以通过
dmesg
命令查看相关信息。插入和移除无线网卡
都会有对应的信息显示。开机后WIFI固件
加载的情况也有显示。
感谢,ThinkPad Edge E40的无线网卡突然消失,看了很多文章,折腾了几次,终于在你这里找到了答案。
另外还有个小插曲:我装好8188GU驱动重启以后,还是死活不显示无线网卡,各种郁闷,后来又在网上翻阅,看到一篇文章里说如果网卡被识别成了CDROM,要先eject一下,突然灵机一动,打开文件管理器,挂载了一下Mercury,再断开......搞定了。
真不容易。
恭喜🎉
虚拟机显示成Realtek802.11n了但是kali系统里并没有检测到,驱动已经安装了
虚拟机显示成Realtek802.11n了但是kali系统里并没有检测到,驱动已经安装了
这种情况可能是驱动不对。
这种情况可能是驱动不对。
我是按照这个来弄的
https://www.icode9.com/content-3-1040844.html
操作和图片没差别,airmon-ng
一直是空的 ifconfig -a
也没有任何wlan的设备,不知道问题出在哪里,您看下这个网址指向github的驱动是否ok
如果usb网卡被识别为cdrom,可用usb_modeswitch命令切换回网卡状态。
sudo usb_modeswitch -KW -v 0bda -p 1a2b
[ 1710.706039] usb 1-1: USB disconnect, device number 5
[ 1731.786133] usb 1-1: new high-speed USB device number 6 using ehci-pci
[ 1732.141138] usb 1-1: New USB device found, idVendor=0bda, idProduct=b711, bcdDevice= 2.00
[ 1732.141146] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1732.141147] usb 1-1: Product: 802.11n WLAN Adapter
[ 1732.141148] usb 1-1: Manufacturer: Realtek
[ 1732.141149] usb 1-1: SerialNumber: 00E04CB82101
[ 1732.156321] 8188gu: disagrees about version of symbol module_layou
不好意思,才看到。用楼下的资源试试呢?
我用的就是McMCCRU写的那个,我向作者提问,作者说不用kali不知道
换个kali能用的网卡吧,也不贵,折腾驱动不划算。
例如呢 经济实惠的
换个kali能用的网卡吧,也不贵,折腾驱动不划算。
没错,给jetson nano装tplink wn725n驱动花了好几天,最后40块钱买了个免驱的,插上直接能用。
建议把右上角的菜单div加一个可以收起来的按钮
建议把右上角的菜单div加一个可以收起来的按钮
嗯嗯,好的
例如呢 经济实惠的
淘宝以kali
为关键词搜索,有不少无线网卡。
没错,给jetson nano装tplink wn725n驱动花了好几天,最后40块钱买了个免驱的,插上直接能用。
嗯嗯,我也有同样经历。有些驱动找到了就是跑不起来,有很多国内厂商都是原芯片魔改的。
文中 rtl8188gu驱动,lwfinger已经不支持了,我找到个新的可用 https://github.com/McMCCRU/rtl8188gu
感谢🙏
/root/rtl8192du/core/
没有这个文件夹。我尝试把内核里面的那个文件夹链接过来也是同样的效果,这怎么搞呀!大佬
这个问题,需问一下驱动的作者。
大佬,我这里显示incompatible gcc/plugin versions 网上找了一圈没看到方法,咋办呢> 这个问题,需问一下驱动的作者。
调整下gcc版本试试
老师你好,我希望能用一个openwrt路由器实现IPv4和IPv6的桥接,请问我该如何实现?我尝试了直接新增dhcpv6的接口,但是效果不甚理想(无法成功获取公网的ipv6,但是直连上级路由的其他设备是可以获取公网的ipv6地)
![%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE20241205230845.png](https://cdn.wyr.me/visitor-files/2024-12-05/1733411344287屏幕截图 2024-12-05 230845.png)你好
,为什么我这里是0039 813C 0600 0075 16xx xx xx,只有前6组是相同的,博客中要前8位相同,这个不同能不能照着修改呢?我系统版本是Win1124H2
大神你好,win11专业版24h2最新版26100.2033,文件如何修改?谢谢
win11专业版24h2最新版26100.2033,Windows Feature Experience Pack 1000.26100.23.0。C:\Windows\System32\termsrv.dll系统自带的这个文件,39 81 3C 06 00 00 0F 85 XX XX XX XX 替换为 B8 00 01 00 00 89 81 38 06 00 00 90。仍然无法远程连接。原来是win11 21h2系统,是可以远程链接的。共享1个主机,2个显示器,2套键鼠,各自独立操作 各自不同的账号,不同的桌面环境。
博主,win11专业版24h2最新版,C:\Windows\System32\termsrv.dll系统自带的这个文件,找不到应该修改哪个字段。我的微信:一三五73二五九五00,谢谢