-
2020-12-21 16:41:52
USB网卡需要相关的驱动才能使用
2. 解压 编译 安装
tar xjvf AX88772C_772B_772A_760_772_178_Linux_Driver_v4.23.0_Source.tar.bz2 #解压
cd AX88772C_772B_772A_760_772_178_Linux_Driver_v4.23.0_Source
make
sudo make install # 安装到 /lib/modules/4.4.0-112-generic/kernel/drivers/net/usb/asix.ko
3. 动态加载模块 insmod
sudo insmod /lib/modules/4.4.0-112-generic/kernel/drivers/net/usb/asix.ko
报错:
Unknown symbol in module
查看错误信息:
dmesg |tail
[1494771.981543] asix: Unknown symbol generic_mii_ioctl (err 0)
[1494771.981562] asix: Unknown symbol mii_ethtool_gset (err 0)
[1494944.261810] asix: Unknown symbol mii_ethtool_sset (err 0)
[1494944.261829] asix: Unknown symbol mii_link_ok (err 0)
[1494944.261881] asix: Unknown symbol mii_nway_restart (err 0)
[1494944.261906] asix: Unknown symbol generic_mii_ioctl (err 0)
[1494944.261926] asix: Unknown symbol mii_ethtool_gset (err 0)
查看模块asix.ko的依赖信息:
modinfo asix|grep depends
depends: mii # 依赖模块mii
4.加载内核模块mii
modprob mii
然后 在insmod axis 模块
lsmod 列出已经加载的模块,
lsmod | grep asix
asix 61440 0
mii 16384 2 asix
最后 ifconfig 查看已有的网卡:
enx000ec6b493bf Link encap:Ethernet HWaddr 00:0e:c6:b4:93:bf
inet addr:192.168.1.101 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::1525:8b8b:d3b4:a1c3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:572 errors:0 dropped:0 overruns:0 frame:0
TX packets:54 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:53267 (53.2 KB) TX bytes:9396 (9.3 KB)
更多相关内容 -
linux系统下 usb网卡的驱动安装
2022-04-29 16:15:46本文分享一种思路去解决linux下不能直接识别usb网卡的方案 尤其针对没有内核-头文件的内核系统 首先确认系统版本: uname -a如果对你有帮助,可以点赞收藏
本文分享一种思路去解决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 Ubuntu
https://askubuntu.com/questions/1080944/automatically-use-usb-modeswitch-for-wifi-usb/1082418#1082418
2.修改ko驱动文件的版本号为当前的内核版本
rtl8192fu: 8192fu Linux USB无线网卡驱动 - Gitee.com
https://gitee.com/BrightXu/rtl8192fu/tree/master4.usb_modswitch 的拓展阅读
Draisberghof - Software - USB_ModeSwitch
https://www.draisberghof.de/usb_modeswitch/#trouble
5. Getting a Huawei E352s-5 to work with Linux
https://www.bytefish.de/blog/huawei_e352s5.html
-
基于USB设备的Linux网络驱动程序开发
2021-01-13 03:39:39open回调函数的主要代码如下:……usb_fill_bulk_urb(dev->rx_urb, //构造读请求的URBdev->udev,usb_rcvbulkpipe(dev->udev, 6), //指定读端点dev->rx_skb->data,512,read_bulk_callback, //使用read...open回调函数的主要代码如下:
……
usb_fill_bulk_urb(dev->rx_urb, //构造读请求的URB
dev->udev,
usb_rcvbulkpipe(dev->udev, 6), //指定读端点
dev->rx_skb->data,
512,
read_bulk_callback, //使用read_bulk_callback做为URB的
dev //回调函数。
);
if((result = usb_submit_urb(dev->rx_urb, GFP_KERNEL))){ //将URB发送给
…… //USB Core
}
netif_start_queue(netdev); //使能网络传输队列
……
当读请求URB完成时,意味着主机收到了一个数据包或该URB超时,此时read_bulk_callback将会被内核调用。无论是哪种情况,为了将来可能到来的数据包能够及时得被主机读取,驱动程序都应该再发送一个读请求URB给USB Core。而在主机收到数据包的情况下,read_bulk_callback函数构造一个skb_buff数据结构来描述数据包,并调用 netif_rx函数,把该数据包交给上层协议,从而完成一次接受过程。
与接受过程相比,发送数据包的过程简单了很多。当网络子系统准备发送一个数据包时,上层协议将会构造一个skb_buff数据结构来描述数据包,并且调用网络驱动程序注册的hard_start_xmit回调函数来发送该数据包。由于该函数被调用时内核持有xmit_lock自旋锁,因而驱动程序可以不必考虑对设备写操作的同步问题。hard_start_xmit函数根据数据包的长度将其拆分为USB设备可以传输的长度,然后构造相应的写请求 URB,发送至USB Core即可。
hard_start_xmit回调函数的主要代码如下:
……
usb_fill_bulk_urb(dev->tx_urb, //构造写请求的URB
dev->udev,
usb_sndbulkpipe(dev->udev, 2), //指定写端点
skb->data,
512,//count,
write_bulk_callback, //使用write_bulk_callback做为URB的回调函数。
dev
);
if((result = usb_submit_urb(dev->tx_urb, GFP_ATOMIC))){ //将URB发送给
…… //USB Core
}
写请求URB完成时,write_bulk_callback回调函数被内核调用。该函数判断写请求URB是否成功完成。根据URB的完成情况,驱动程序需要更新网络接口的相应统计数据,例如成功/失败发送包的数目等。
5. 小结
本文从工程应用出发,介绍了Linux的体系结构及其网络子系统,并结合USB设备在Linux下的访问机制,研究了USB驱动程序实现异步通知的方法,并给出了USB网络驱动程序的设计框架和实例。在实际测试中,本文分析的驱动程序运行稳定,并且达到了预期的网络传输速度。
参考文献:
[1] J. Corbet, A. Rubini, and G. Kroah-Hartman. Linux Device Drivers, Third Edition. 2005, O'Reilly Media, Inc.
[2]毛德操 胡希明. Linux内核源代码情景分析. 2001. 浙江大学出版社.
[3]Daniel P. Bovet, M. Cesati. Understanding the Linux Kernel, Second Edition. 2002, O'Reilly Media, Inc.
[4]李少甫 何小庆 江文瑞.The Development of Embedded Wireless LAN Application System Based on MontaVista Linux.微计算机信息. 2002年11期49-51
-
Linux下安装USB网卡驱动
2020-12-21 16:41:56做了简单Linux下安装USB网卡驱动翻译,并根据错误提示加以完善。Linux 版本#uname -aLinux zy-laptop 2.6.28-11-generic #42-Ubuntu SMP Fri Apr 17 01:57:59 UTC 2009 i686 GNU/Linux1. 插入USB网卡后,# lsusb.......做了简单Linux下安装USB网卡驱动翻译,并根据错误提示加以完善。
Linux 版本
#uname -a
Linux zy-laptop 2.6.28-11-generic #42-Ubuntu SMP Fri Apr 17 01:57:59 UTC 2009 i686 GNU/Linux
1. 插入USB网卡后,
# lsusb
....
Bus 005 Device 003: ID 0fe6:8101
....
2. 解压dm9601.tgz
# tar xzvf dm9601-2.6.tgz
# ls dm9601-2.6
dm9601.c dm9601.h Makefile readme.txt
3. 尝试编译
# cd dm9601-2.6
# make
make -C /lib/modules/2.6.28-11-generic/build M=/root/dm9601-2.6 LDDINCDIR=/root/dm9601-2.6/../include modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.28-11-generic'
scripts/Makefile.build:46: *** CFLAGS was changed in "/root/dm9601-2.6/Makefile". Fix it to use EXTRA_CFLAGS. Stop.
make[1]: *** [_module_/root/dm9601-2.6] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.28-11-generic'
make: *** [default] Error 2
4. 修改 dm9601.h
# vim dm9601.h
在最后添加下面两行
DM9601_DEV( "SUNRISING USB Ethernet", 0x0fe6, 0x8101,
DEFAULT_GPIO_RESET )
5. 编辑Makefile
# vim Makefile
将CFLAGS修改为EXTRA_CFLAGS
6. 编辑dm9601.c
# vim dm9601.c
将#include 修改为#include
7. 开始编译
#make
此时,还有几个警告,不管它,最后会生成dm9601.ko
#ls
dm9601.c dm9601.h dm9601.ko dm9601.mod.c dm9601.mod.o dm9601.o Makefile Module.markers modules.order Module.symvers readme.txt
8.将新生成的dm9601.ko覆盖掉当前内核的dm9601.ko
#cp dm9601.ko /lib/modules/2.6.28-11-generic/kernel/drivers/net/usb/dm9601.ko
不知为什么,开机dm9601.ko未启动。
若重启机器后未启动(# lsmod|grep dm9601),手动加载dm9601.ko
#insmod /lib/modules/2.6.28-11-generic/kernel/drivers/net/usb/dm9601.ko
9. 配置USB网卡
#vim /etc/network/interfaces
auto eth1
iface eth1 inet static
address 192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.1
10. 为USB网卡配置MAC地址
#ifconfig eth1 hw ether 01:23:45:67:89:ab
11.激活USB网卡
#ifconfig eth1 up
-
有线网卡Linux驱动安装小记
2020-12-21 16:41:53一直使用无线网,竟然没发现我的有线网卡Atheros AR8162竟然没有驱动,在此小记:ubuntu 12.04 以及 基于ubuntu的mint13 maya 都有这个问题在linux下查看硬件信息(网卡为例其他大同小异)lspci | grep Ethernetdmesg | ... -
linux下USB驱动移植
2021-05-16 15:42:50一、代码修改在这里把include前面的#给删了,希望有帮助/*add by lfc*/#include #include #include #include /*end add*//**********************add by lfc*******************************...hcd_info usb_sbc... -
嵌入式Linux移植USB网卡驱动
2014-07-25 19:44:11硬件平台:realARM 6410 操作系统:fedora kernel 2.6.33.3-85.fc13.i686.PAE 交叉编译器:arm-none-linux-gnueabi gcc version 4.3.2 WIFI 模组:磊科 NW336 芯片 realtek 8188cus -
胜为USB网卡驱动UR-301W.zip
2020-07-21 11:17:26胜为USB转RJ45 网卡驱动;其中包含Apple、Windows驱动;不包含linux下驱动;win vista、win xp、win 7 、win 8 、win 10;mac各个版本 -
Linux系统下安装USB无线网卡驱动方法
2020-12-30 19:57:41摘要:Linux系统下安装USB无线网卡驱动方法具体安装过程分了如下步骤进行:确认 usb-wifi 设施型号 , 根据确认结果选择驱动信息。安装驱动 mt7601u ,假如已经自带跳过此步骤配置驱动启动后无限加载。重启验证能否... -
水星usb无线网卡linux驱动下载,水星USB无线网卡mw150us苹果macOS系统驱动成功
2021-05-15 11:14:04文章目录概述基本信息寻找驱动安装驱动完成概述 之前修好后的MacBook Pro (13-inch, Mid 2010),去年开始就发现偶尔找不到自带的无线网卡,用着也还经常死机。屏蔽了无线功能后,一直只能有线上网。最近终于忍不住... -
0 【Ubuntu/Linux】Ubuntu18.04有线连接图标不见(Linux系统安装2.5G有线网卡驱动,亲测避坑)
2021-06-12 15:58:50Linux网卡驱动安装总结(亲测避坑) 前言: 本人电脑安装的是windows10+Ubuntu18.04双系统,不是Linux虚拟机!!!!(虚拟机的网络问题需要看别的文章了) 本人的电脑是微星B560M MOTAR主板,该主板的网卡是2.5G的... -
求助!linux下安装usb无线网卡驱动成功 但是ping不通网关。。。
2021-01-16 00:57:59linux下安装usb无线网卡驱动成功 但是ping不通网关。。。情况如下:利用服务器的有线网卡和无线网卡分别连接了有线网络和提供了无线网络,又用iptable进行了桥接,使得服务器实现了有线和无线网络的过渡。这样主要是... -
linux系统下安装usb网卡驱动图文?
2020-12-21 16:41:54展开全部确认usb-wifi设备型号 , 根据确认结果选择驱动信息。安装驱动 mt7601u , 如果已经自带跳过此步骤配置驱动启动后自动加载。重启验证是否成功的自动加载驱动模块。确认usb-wifi设备型号 , 根据确认结果选择... -
让Android 设备通过USB 转RJ45有线网卡上网
2021-06-02 14:40:31一、下载驱动网卡采用USB 2.0转以太网控制芯片AX88772B, android 2.3 和4.0下的通用网卡驱动不支持这款芯片, 需要从网上下载最新的linux 下AX88772B驱动二、将下载的驱动源码编译进kernel image.下载的驱动解包后有6... -
usb网卡9700驱动
2013-11-21 17:18:10jp2081 jp1081 qf9700等usb网卡的驱动在android下的代码基本完全一样,光盘里的代码只是改了下名称,大多只支持linux2.6.24-2.6.29,根据项目需要,现在linux2.6.37下做了移植 -
centos7.4 无线USB网卡rtl8188eus完全可用驱动
2018-05-30 11:13:30亲测完全可用,另外请到我的CSDN查看安装教程,安装流程以及碰到的坑均详解有说明,~~~ -
linux无线网卡驱动安装
2021-05-11 22:02:06lsusb 当你得到芯片之后接下来查看内核,如果内核已经有芯片模块就不用再装了,如果不支持的话,那么接下来就到芯片官网 下载Linux驱动http://www.realtek.com.tw/default.aspx **虽然我的无线网卡是fast 生产的 ... -
基于Linux的USB主机设备驱动程序的开发
2010-11-05 11:19:50开发Linux下的设备驱动程序是...从具体的USB设备驱动的开发流程出发,描述了Linux系统 下USB设备驱动程序的几个主要开发细节和注意点。以能够提供给大家一个开发Linux下USB设备驱动程序的向导。 关键词USB驱动程序Linux -
Linux系统安装R8169网卡驱动的方法
2020-12-30 19:57:46Linux系统安装R8169网卡驱动的方法http://www.realtek.com.tw/downlo … D=3&GetDown=false#2下载得到的版本号:ftp://202.65.194.212/cn/nic/r8168-8.003.00.tar.bz2把驱动文件下载到 U盘。把U盘插到 机器的 ... -
ubuntu12.04 安装有线网卡驱动make时报错
2021-05-12 03:23:11该楼层疑似违规已被系统折叠隐藏此楼查看此楼ubuntu12.04 安装有线网卡驱动make时报错:make[1]: 正在进入目录 `/usr/src/linux-headers-3.2.0-57-generic-pae'CC [M] /home/virus/下载/compat-wireless-2012-12-18/... -
rd9700 usb网卡驱动
2021-05-11 17:21:22rd9700 usb网卡驱动是一款简易好用的驱动工具,rd9700 usb2.0网卡驱动帮助您解决无法连接网络问题,支持微软winxp、win7、win8/8.1、win10的32位和64位系统。能自动帮你检测电脑驱动情况,推荐安装适合你电脑的驱动... -
水星USB无线网卡mw150us苹果macOS系统驱动成功
2021-05-15 11:14:04文章目录概述基本信息寻找驱动安装驱动完成概述 之前修好后的MacBook Pro (13-inch, Mid 2010),去年开始就发现偶尔找不到自带的无线网卡,用着也还经常死机。屏蔽了无线功能后,一直只能有线上网。最近终于忍不住... -
Linux 上安装Realtek瑞昱网卡驱动
2021-05-12 14:54:03上网查找原因为驱动问题,也有很多人抱怨过Realtek瑞昱网卡在linux上驱动难弄。 这里记录下解决过程,给其他人一点方便。其实安装方法还算简单,网上是有这款网卡的开源驱动的。只要输入以下命令就能完成安装:(我... -
linux usb网卡支持_Linux中的USB标准和支持
2020-07-28 00:17:48linux usb网卡支持The USB standards have evolved to 3.1 and the supported throughput have been increased too. On Linux, the support to USB standards are following the standards development. In this ... -
linux下几款usb无线网卡的使用
2021-05-13 01:25:06linux下几款usb无线网卡的使用我最近要在龙芯福龙的盒子上使用无线网卡,盒子的接口很少,可以用的只有usb接口。市面上的usb无线网卡很多,下面只是几个简单的例子:1:TP-LINK TL-WN322G+ 54M无线usb网卡ubuntu默认... -
Linux之USB无线网卡开发(一)
2021-03-31 19:36:043、配置内核支持USB WIFI网卡 使用WIFI网卡相关概念并利用工具iw(STA模式) 使用WIFI网卡准备工作 对于我们的手机一般来说都会连着理由器的WIFI,此时手机为STA模式,而路由器为AP模式(也叫热点),因为我们可以让...