邯郸网站建设渠道,wordpress 替换jquery,免费发布企业信息平台,手机个人简历电子版如果对你有帮助#xff0c;可以点赞收藏
本文分享一种思路去解决linux下不能直接识别usb网卡的方案
1.总体思路#xff1a;
1.通过lsusb 查看usb 对应的vid:pid 如0bda:a192
2.复制这段代码到google git 上查找相关的驱动信息
3.下载驱动文件到linux 系统的某一文件夹中…如果对你有帮助可以点赞收藏
本文分享一种思路去解决linux下不能直接识别usb网卡的方案
1.总体思路
1.通过lsusb 查看usb 对应的vid:pid 如0bda:a192
2.复制这段代码到google git 上查找相关的驱动信息
3.下载驱动文件到linux 系统的某一文件夹中编译成符合linux 内核的ko驱动文件
遵从这个思路可以解决大部分的网卡驱动的情况。
但是有些情况比较特殊
尤其针对没有内核-头文件的内核系统
本文中使用的wifimercury MW310UH 驱动芯片rtl8192fu
1.1 找到驱动文件
首先通过lsusb确认驱动对应的id
lsusb列举出所有已经接再linux 上的usb设备并且可以看到相应的id
格式为
idVendor:idProduct 例如0bda:a192
如果你的usb wifi网卡直接显示为WLAN Adapter 的话那你可以直接去安装驱动再有驱动编译的问题可以看第二部分
1.2 usb网卡的工作模式切换
如果你的usb wifi 网卡为Disk 后缀或者corp 结尾的状态那么你可以继续参考本文下面所写的内容。
针对市面上的随身usbwifi插入windows后为cd 状态安装完驱动才会开启wifi功能
对于zeroCD的这种usb 设备有专门的软件来解决他就比如这种usb 网卡带有windows 驱动但是对于linux 而言他就是没有意义的。所以被称为zeroCD相关内容可以搜索usb_modeswitch可以看到更多内容或者点击本文最后的链接为该项目usb_modeswitch的官网不是很建议去官网的方式安装因为秃头成分严重。 先查看usb列表显示为cd状态
$ lsusb[...]Bus 001 Device 013: ID 0bda:a192 Realtek Semiconductor Corp. Disk
对于这种disk 后缀得到我们都需要对他进行模式切换
最简单的方法安装usb_modeswitch
ps:换源小妙招
sed -i shttp://deb.debian.orghttps://mirrors.aliyun.comg /etc/apt/sources.list
安装usb_modeswitch
sudo apt-get install -y usb-modeswitch
更改相应文件
sudo vim /lib/udev/rules.d/40-usb_modeswitch.rules
这种状态后就可以开始安装驱动但是不要着急先将usb的模式设置为默认wifi状态
进入目录
sudo vim /lib/udev/rules.d/40-usb_modeswitch.rules
shirtG 直接到最后一行加入到LABEL之前
# Realtek 8192F Wifi AC USB
ATTR{idVendor}0bda, ATTR{idProduct}a192, RUN/usr/sbin/usb_modeswitch -K -v 0bda -p a192LABELmodeswitch_rules_end
需要手动再次执行
sudo usb_modeswitch -KW -v 0bda -p a192
1.3 usb-wifi模式自动切换的方案
方法一解决poweroff 后需要输入命令的情况 直接看优化
cd /lib/udev/rules.d/
sudo vim 40-usb_modeswitch_rtl8192.rules输入以下内容
ACTIONadd, SUBSYSTEMusb, ATTRS{idVendor}0bda, ATTRS{idProduct}a192, RUN/usr/sbin/usb_modeswitch -K -v 0bda -p a192
ACTIONadd, SUBSYSTEMusb, ATTRS{idVendor}0bda, ATTRS{idProduct}a192, RUN/bin/bash -c modprobe 8192fu echo 0bda f192 /sys/bus/usb-serial/drivers/option1/new_id 以上方法不再需要输入命令还是需要拔插一次usb wifi 才可以自动变成wifi模式
不够完美
经过优化已经达到开机可用状态
在这个目录下的rules.d 文件中进行修改后实现了开机就可以用的状态 执行下面的代码
sudo vim /etc/udev/rules.d/50-usb-realtek-net.rules最后一行输入
ACTIONadd, SUBSYSTEMusb, ATTRS{idVendor}0bda, ATTRS{idProduct}a192, RUN/usr/sbin/usb_modeswitch -K -v 0bda -p a192
ACTIONadd, SUBSYSTEMusb, ATTRS{idVendor}0bda, ATTRS{idProduct}a192, RUN/bin/bash -c modprobe 8192fu echo 0bda f192 /sys/bus/usb-serial/drivers/option1/new_id
安装完驱动再断电后开机等待30秒左右正常开机既可以ssh 通过WiFi的ip进行管理 这里代表usb网卡的cd模式已经切换为wifi工作模式
首先确认内核版本
uname -a
我的内核版本如下
Linux flygemini 5.10.85-sunxi64 #trunk SMP Tue Apr 12 13:21:58 CST 2022 aarch64 GNU/Linux
编译驱动首先要获取内核头文件如果没有就直接看2吧。有的话马上就装完。直接看3
sudo apt install -y linux-headers-$(uname -r)
2.没有头文件的情况
没有头文件的情况需要自己制作相似的内核系统头文件并且更改vermagic版本号最终实现制作和内核版本一致的ko驱动文件步骤如下
2.1没有找到内核头文件那就先找一份相似的并且放置好头文件的位置
内核网站 仅仅作为示范展示一个armbian的源网站
http://armbian.tnahosting.net/apt/pool/main/l/
最相近的如图所示 下载后传输/复制到linux 中
进入.deb 所在目录后
安装命令 sudo dpkg -i linux-headers-current-sunxi64_21.08_arm64.deb
安装后可以在这个目录里中找到
cd /usr/src/
cd /usr/src/linux-headers-5.10.60-sunxi64/ 首先在linux内核头文件目录下生成一个build文件夹因为没有找到匹配的头文件所以新建一个
cd /usr/lib/modules/5.10.85-sunxi64/
sudo mkdir build复制找到的最相近的内核文件的头文件刚刚的安装目录上面给过
sudo cp -r /usr/src/linux-headers-5.10.60-sunxi64/. /usr/lib/modules/5.10.85-sunxi64/build
进入这个文件夹中
cd /usr/src/linux-headers-5.10.60-sunxi64/arch/ 创建一个新的aarch64 文件夹并将arm64下的文件都复制进去
sudo cp -r arm64/. aarch64 好了目前完成了用来编译的内核文件的源文件基础部分的构建
2.2下面我们需要修改vermagic的版本号
通过修改ko文件的版本号从而实现驱动报错的情况
为什么要修改呢
因为make命令后生成的驱动文件是你自己下载的对应内核版本
所以要修改伪装成是当前的内核版本。
第一个文件utsrelease.h
sudo vim /usr/lib/modules/5.10.85-sunxi64/build/include/generated/utsrelease.h 第二个文件
sudo vim /usr/lib/modules/5.10.85-sunxi64/build/include/config/kernel.release 好了伪装 工作全部完成
3.安装驱动
接下来开始在所下载的驱动文件夹下进行安装这一步一般都在驱动项目中给了
git clone https://gitee.com/BrightXu/rtl8192fu.git
cd rtl8192fu
make -j$(nproc)
这里会有类似报错 如何解决以及解决思路待更新(按照伪造内核头文件的方法这里不会有报错)
sudo make install
sudo modprobe 8192fu 如果安装过程中没有一次报错那么恭喜你wifi应该就可以用了
检验wifi驱动是否挂载成功
usb-devices | grep Vendor0bda ProdIDf192 -B2 -A5
测试下 如果不是none 那么就是安装成功了
dkms的支持需要看驱动git页面进行设置本文不做赘述。 参考文章
1.自动将usb 网卡的disk模式切换为wifi芯片systemd - Automatically use usb_modeswitch for Wifi USB - Ask Ubuntuhttps://askubuntu.com/questions/1080944/automatically-use-usb-modeswitch-for-wifi-usb/1082418#1082418 2.修改ko驱动文件的版本号为当前的内核版本
linux 修改 ko文件内核版本号_whatday的博客-CSDN博客当需要一个ko在一个内核下编译insmod到另一个内核时1、include/config/kernel.release文件中为内核版本号将其改为所需版本。2、include/generated/utsrelease.h文件中 #define UTS_RELEASE “XXX” 将xxx改为自己所需内核版本号 。3、include/linux/vermagic.h文件改为与另一内核相同。注意这样修改并保存后编译出来的.ko文件里面的版本信息就更改了但是重新编译内核时会变回.https://blog.csdn.net/whatday/article/details/1122468313.rtl8192fu驱动对应0dba:f192 的linux驱动安装教程
rtl8192fu: 8192fu Linux USB无线网卡驱动 - Gitee.comhttps://gitee.com/BrightXu/rtl8192fu/tree/master4.usb_modswitch 的拓展阅读
Draisberghof - Software - USB_ModeSwitchhttps://www.draisberghof.de/usb_modeswitch/#trouble
5. Getting a Huawei E352s-5 to work with Linuxhttps://www.bytefish.de/blog/huawei_e352s5.html