先瞧瞧我的网卡,这是一款TP-LINKWN726726N免驱版无线usb网卡
官方并未提供该版本的linux驱动,并且手边只有这个网卡,于是网上一通搜索总算搞定。
第一步:确定设备所用的驱动
插上无线网卡后输入lsusb-tv查看设备信息
其中0bda:1a2b即制造商id:产品idlinux 免驱动无线网卡linux下载,Driver=usb-storage即代表该设备被辨识为usb储存设备,这是由于免驱版的网卡须要储存windows的驱动,所以默认就会被辨识为硬盘,但在linux上缺毫无益处,我们须要切换usb的设备模式,能够晓得网卡模式下的设备id,输入以下命令切换模式
usb_modeswitch -KW 0bda -p 1a2b
之后再度输入lsusb-tv查看设备信息
这时能看见ID由0bda:1a2b弄成了0bda:b711,Driver=前面没有任何信息,我这儿特意涂擦掉了,由于只有在安装完驱动后就会有内容。
接出来就要按照这个b711去
去找对应的网卡芯片机型
可以看见芯片的机型是RTL8188GU,这么接出来就是要去github找对应的第三方驱动源码了
第二步:编译安装驱动
下载master分支所有代码的zip包到本地,步入解压后的目录依次运行make和makeinstall
make
make install
都完成后会在/lib/modules/5.4.0-90-generic/kernel/drivers/net/wireless/见到多了一个8188gu.ko的文件
这个5.4.0-90-generic是系统当前使用内核的版本号,不同的系统会不一样,假若不晓得可以输入uname-a查看
接出来加载刚安装的驱动模块
modprobe 8188gu
之后再度输入lsusb-tvlinux系统日志,可以看见Driver=旁边有信息了,这儿还没搞懂楚为何显示的不是rtl8188gu,并且不影响使用。
第三步:配置网路
输入命令ipa获得无线网卡的信息,红框为无线网卡的名子,复制它,接出来会用到
我使用的是ubuntu20版本的,网路是由netplan配置的,/etc/netplan目录下会有一个yaml结尾的文件拿来储存网路配置,因为是serverv版本的系统,所以默认是没有无线配置的
/etc/netplan/xxx.yaml
手工添加无线配置
# This is the network config written by 'subiquity'
network:
renderer: networkd
ethernets:
enp1s0:
dhcp4: true
optional: true
version: 2
# 下面是要添加的内容,每一行与上一行后退4格,一定要严格遵守
wifis:
# 下面是前面复制的无线网卡的名字
wlxf88c2116dde6:
dhcp4: true
optional: true
access-points:
"wifi的名字":
password: "wifi的密码"
之后保存,接出来运行netplantry检测配置文件是否有错,没有报错的话,接出来再运行netplanapply应用配置。最后再运行ifconfig就可以看见你的无线网路信息了
结尾
当你拔下usb网卡再插入后,假如是免驱版linux 免驱动无线网卡,这么又会被辨识为U盘,这时须要再度切换为网卡模式,之后reboot。并且还有一个一劳永逸的办法,编辑/lib/udev/rules.d/40-usb_modeswitch.rules,在文件末尾LABEL="modeswitch_rules_end"前插入以下内容
ATTR{idVendor}=="0bda", ATTR{idProduct}=="1a2b", RUN+="/usr/sbin/usb_modeswitch -K -v 0bda -p 1a2b"
疗效如下:
之后拔插网卡或死机重启都能手动辨识了。
还有一种情况须要注意,当系统开启了手动升级内核,大多数是默认开启的,这么内核升级后,驱动也会找不到,由于驱动是生成在当时编译的内核版本目录下,这时就得重新编译了。
原创不易,倘若这篇文章对您有帮助,希望您打个赏,小小意思一下,假如有错漏欢迎在评论里强调。