linux系统下 usb网卡的驱动安装

如果对你有帮助,可以点赞收藏

本文分享一种思路去解决linux下不能直接识别usb网卡的方案

1.总体思路:

1.通过lsusb 查看usb 对应的vid:pid 如0bda:a192

2.复制这段代码到google git 上查找相关的驱动信息

3.下载驱动文件到linux 系统的某一文件夹中编译成符合linux 内核的ko驱动文件

遵从这个思路可以解决大部分的网卡驱动的情况。

但是有些情况比较特殊

尤其针对没有内核-头文件的内核系统

本文中使用的wifi:mercury 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 "s@http://deb.debian.org@https://mirrors.aliyun.com@g" /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

shirt+G 直接到最后一行加入到LABEL之前

# Realtek 8192F Wifi AC USB
ATTR{idVendor}=="0bda", ATTR{idProduct}=="a192", RUN+="/usr/sbin/usb_modeswitch -K -v 0bda -p a192"

LABEL="modeswitch_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

输入以下内容:

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="a192", RUN+="/usr/sbin/usb_modeswitch -K -v 0bda -p a192"
ACTION=="add", SUBSYSTEM=="usb", 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

 最后一行输入:

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="a192", RUN+="/usr/sbin/usb_modeswitch -K -v 0bda -p a192"
ACTION=="add", SUBSYSTEM=="usb", 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 "Vendor=0bda ProdID=f192" -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

  • 13
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 23
    评论
### 回答1: 在Linux系统安装usb 8811cu无线网卡驱动需要以下步骤: 1. 首先需要确认当前系统已经安装Linux内核头文件和编译工具,可以通过命令"uname -r"查看当前内核版本,并根据版本查找对应的Linux头文件。 2. 下载和安装Realtek官网提供的8811cu驱动程序,也可以通过GitHub等开源社区获取。 3. 解压驱动程序包,进入解压后的目录,在终端中运行以下命令:make && make install,编译并安装驱动程序。 4. 插入usb 8811cu无线网卡,等待系统自动加载驱动程序。如果没有自动加载,可以在终端中运行以下命令:modprobe 8811cu。 5. 配置网络连接。可以使用自带的网络管理工具或者手动配置/etc/network/interfaces配置文件来连接无线网络。 总体来说,安装usb 8811cu无线网卡驱动需要一定的Linux基础知识和操作能力,对于不熟悉Linux的用户来说可能会有些困难。建议在执行操作之前备份系统,以免出现不可预料的错误。 ### 回答2: 要在Linux操作系统安装USB 8811cu无线网卡驱动,请按照以下步骤进行: 1. 首先,需要使用root权限运行终端。您可以通过在终端中运行命令“su”或“sudo su”来获取root权限。 2. 然后,通过运行命令“lsusb”查看您的无线网卡的厂商ID和设备ID。在结果中找到类似于“2357:011c”的内容。 3. 接下来,您需要下载最新的无线网卡驱动。可以在厂商网站上下载或通过搜索引擎在网上找到。将其保存到您的Linux计算机的某个目录中;例如,您可以将其保存到“/home/user/Downloads”目录中。 4. 在您下载的无线网卡驱动文件的目录中,运行命令“make”编译驱动。 5. 安装编译后生成的无线网卡驱动文件。可以通过运行命令“make install”来安装驱动文件。您还需要使用命令“modprobe”或“insmod”加载新安装的内核模块。 6. 最后,通过执行命令“iwconfig”命令确认无线网卡是否可以正常使用。如果网卡工作正常,则应该在结果中看到类似于“wlan0”或类似内容的内容。 需要注意的是,上述步骤的具体内容可能会因您使用的Linux发行版而有所不同。此外,为避免任何潜在问题,请在执行这些步骤之前备份您的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值