前几天买下了Tenda U12 USB 无线网卡 ,想连接上无线玩玩,可惜买下折腾了一周才解决他它驱动问题,前后在VMware上装了十多次,测试了好几个内核版本才搞定,好了废话不多说,分享下我安装过程的经验:

  原本是在CentOS7 最小化后安装驱动的,没想到遇到这么多问题,只能现在图形化界面先进行调试,完了再最小化安装。

安装环境:

  U12驱动官方下载:http://wifi.tenda.com.cn/

  我的CentOS7内核:

3.10.-.el7.x86_64(满足2.6.18~.4内核)

错误:

直接执行安装目录下的install时,在执行到make命令时报错:

  由于字数限制,错误的详细信息:链接https://pan.baidu.com/s/1DQsJyRuLPDxlwBLc2S39Aw 密码:tcrj

关键错误信息:

/root/U12_linux_v5..5_19247./driver/rtl8812AU_linux_v5..5_19247./os_dep/linux/ioctl_cfg80211.c::: 错误:‘IEEE80211_BAND_2GHZ’未声明(不在函数内)
.band = IEEE80211_BAND_2GHZ, \
^
/root/U12_linux_v5..5_19247./driver/rtl8812AU_linux_v5..5_19247./os_dep/linux/ioctl_cfg80211.c::: 附注:in expansion of macro ‘CHAN2G’
CHAN2G(, , ),
^
/root/U12_linux_v5..5_19247./driver/rtl8812AU_linux_v5..5_19247./os_dep/linux/ioctl_cfg80211.c::: 错误:‘IEEE80211_BAND_5GHZ’未声明(不在函数内)
.band = IEEE80211_BAND_5GHZ, \
^
/root/U12_linux_v5..5_19247./driver/rtl8812AU_linux_v5..5_19247./os_dep/linux/ioctl_cfg80211.c::: 附注:in expansion of macro ‘CHAN5G’
CHAN5G(, ), CHAN5G(, ),
^
/root/U12_linux_v5..5_19247./driver/rtl8812AU_linux_v5..5_19247./os_dep/linux/ioctl_cfg80211.c::: 错误:初始值设定元素不是常量

大意就是说:

  编译时报错,IEEE80211_BAND_2GHZ未定义,如之前分析,这是由于U12基于linux无线框架,需要内核中包含cfg80211和mac80211模块,所以需要重新编译内核。
 
解决办法:
1.下载驱动和一会要编译的内核(我这里选择的是4.1.8):
  驱动下载:http://wifi.tenda.com.cn/  
  内核下载:https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/
  

  1.1确保你的网卡已经插上并识别:

  如果你数最小化安装,请先注册lsusb命令

yum install usbutils

  然后使用lsusb命令:

lsusb

  这个就是TendaU12的设备信息:

Bus  : 指明设备连接到哪(哪条总线)
Device : 表明这是连接到总线上的第二台设备
ID : 设备的ID
Broadcom Corp. Bluetooth Controller :生产商名字和设备名

2.编译内核:

  在编译之前,如果你是最小化安装,你需要先安装gcc,bc 编译器

yum install gcc*,bc -y

  2.1 解压内核到/usr/src/kernels/

tar -zxvf linux-4.1.8.tar.gz -C /usr/src/kernels/

  2.2 进入解压的/usr/src/kernels/linux-4.1.8下,拷贝原有的配置文件

cp /boot/config-3.10.-.el7.x86_64  .config

  2.3 使用make menuconfig时检查下cfg80211和mac80211是否有编译到

make menuconfig

  这里可能会报错:

In file included from scripts/kconfig/lxdialog/checklist.c:::

scripts/kconfig/lxdialog/dialog.h::: fatal error: curses.h: 没有那个文件或目录

 #include CURSES_LOC

                    ^

compilation terminated.

make[]: *** [scripts/kconfig/lxdialog/checklist.o] 错误 

make[]: *** [menuconfig] 错误 

make: *** [menuconfig] 错误 

 这是因为CentOS7系统中缺少一个套件 ncurses-devel

yum install ncurses-devel -y

  注册后,重新执行进入图形化界面:

  在“networking support”-》“wireless”下。如果没有按下“M”表示编译成模块,然后保存。如果已经有了这两个模块也要保存,否则接下来make时,没法编译。

  2.4 开始编译内核 (时间比较长大概30多分钟左右,看会电影啥的)

make ; make modules_install ; make install ;

  2.5 设置默认启动内核为4.1.8

查看启动项 cat /boot/grub2/grub.cfg | grep 3.10.
设置默认启动项 grub2-set-default "CentOS Linux (3.10.69) 7 (Core)"
查看默认启动项 grub2-editenv list
生成配置 grub2-mkconfig -o /boot/grub2/grub.cfg

  2.6 重启系统,安装相关模块,并编译无线驱动

insmod /lib/modules/4.1.8/kernel/net/rfkill/rfkill.ko
insmod /lib/modules/4.1.8/kernel/net/wireless/cfg80211.ko
insmod /lib/modules/4.1.8/kernel/net/mac80211/mac80211.ko
insmod 8812au.ko

  先注册前3个模块,之后的8812au.ko 模块如果没有,在执行驱动下的install.sh文件时会自动注册。

3.安装驱动

这时候如果你直接执行install.sh文件,会没有上面的错误,但是结尾还会有2个errors .这是它在驱动中没有添加网卡的ID值。

  3.1 添加网卡ID

  选用任意编辑器,打开os_dep/linux/usb_intf.c,在其中加入上面lsusb结果:

  找到CONFIG_8812A, 在下面加入如图所示字段。如果你们的lsusb结果与此不同,请加入自己lsusb看到的vendor id 和 device id。

  例如,我这里lsusb会发现插上usb网卡后出现 ID 2604:0012,这就是对应的vendor id 和device id. 把这个id插入usb_intf.c

   3.2执行网卡驱动 install.sh或者直接在驱动目录下执行make ;make install;

  如果你要是执行./install.sh 那么,你需要将原始的驱动包删除,然后将修改后的文件重新打包,但是文件名要相同。因为在install.sh 中会对这个驱动压缩包解压,解压后会将你就修改的文件又替换为原文件。

  删除后重行打包:

  打包:

./install.sh

  如果你直接在驱动目录下执行

make ;make install;

  则没有上述重行打包要求

  3.3 如果在执行install.sh后还有报错的信息,那么不用管,它之后又重行注册了8812au.ko。

  此时,如果你是图形化界面,那么在网络管理中就会有wifi的标识,执行ifconfig可以看到自己网卡的名字;

  如果你是最小化安装时,则建议先安装第5步,之后使用iwconfig查看:

4.wpa_supplicant配置

  在执行完上述的步骤后,你如果点击你要的热点后,并输入正确的密码的密码显示无法连接,那么你就需要进行wpa_supplicant配置

新建文件(如果没有) /etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
network={
ssid="T你要连接的wifi名"
psk="密码"
}

我这里是

5.安装wireless_tools

之后我们会使用iwconfig,wpa* 等命令 ,所以先注册一下:

进入驱动目录下的wireless_tools解压后:

执行:

make;make install;

 6.无线扫描

  6.1先安装工具iw:

yum install iw -y

  6.2、iw dev(非必要步骤)

查看无线网口,interface后面即为无线网口号

phy#
Interface wls35u1
ifindex
wdev 0x1
addr a4:db:::4b:1c
type managed

如果连接成功会多出下面的两行,显示 SSID 和信道

ssid CMCC
channel ( MHz), width: MHz, center1: MHz

  6.3、ip link set wls35u1 up(必要)

激活无线网络接口

  6.4、ip link show wls35u1(非必要步骤)

检验接口是否激活成功

wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DOWN mode DORMANT group default qlen 1000
link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff

<BROADCAST,MULTICAST,UP,LOWER_UP> 中的UP 表明该接口激活成功,后面的 state DOWN 无关紧要。

  6.5、iw wls35u1 link(非必要步骤)

查看无线网络连接情况(刚开始是没有连接的,不用管)

  6.6、iwlist wls35u1 scan | grep SSID(如果知道 Wifi 名字,就不需要)

扫描可连接的wifi(这里有个坑,网上好多是iw ,其实这里应该使用 iwlist,不然没结果)

7. 连接wls35ul到网络,并以daemon方式运行

  方法一:编写配置文件

wpa_supplicant -B -i wls35u1 -c /etc/wpa_supplicant/wpa_supplicant.conf

-B Background 在后台以daemon 运行
-i interface 
-c 配置文件

  注意:此时如果重新执行此命令,则需要使用kill命令杀死对应的wpa*进程后。然后再执行

 执行以上命令后,执行ifconfig就可以看到无线网卡,这在之前是看不到的,而且此时,U12的指示灯开始亮起,表示开始工作。

  方法二:不编写配置文件

wpa_supplicant -B -i wls35u1 -c <(wpa_passphrase "ssid" "psk")

连接指定的SSID,将ssid 替换为实际的网络名称,psk 替换为无线密码,请保留引号。

8.ip获取

  8.1 用dhcp 获得 IP 分配:
  # dhclient wls35ul

  测试是否成功地从路由器获取了ip(重要)

  #ip addr  show wls35ul

  如果分配有ip,即可上网,也可以有ping直接测试

  8.2如果你要使用静态的IP配置,使用nmcli命令来配置(参考我的:Linux 最小化安装后IP的配置(手动获取静态IP地址)

  

9. 相关命令

  关闭连接
  wpa_cli terminate
  连接状态
  wpa_cli status

18.上网试试(有图形化界面的试试):

  

参考网址:

  在Linux下安装Tenda U12驱动 https://jingyan.baidu.com/article/2fb0ba40884e1500f2ec5fd3.html

  Centos7 Virtualbox虚拟机安装Tenda U12 11AC USB无线网卡驱动  https://blog.csdn.net/heyuqian_csdn/article/details/78805029

  make menuconfig时出现 #include CURSES_LOC错误  https://blog.csdn.net/lvkunfeng07/article/details/51191938

  Linux 手动无线网卡 WiFi 配置 https://www.jiangmiao.org/blog/1781.html

  在 Linux 中安装使用 lsusb 查看 USB 设备  http://www.wilf.cn/post/lsusb.html

   Linux 无线网卡配置    https://www.cnblogs.com/zhangjiankun/p/4888956.html

  CentOS 7 命令行版初次安装网络配置  https://www.jianshu.com/p/f9e14e50a28a

Centos7VMware虚拟机最小化安装后,安装Tenda U12 USB无线网卡驱动的更多相关文章

  1. RHEL6 最小化系统 编译安装部署zabbix (mysql)

    RHEL6 最小化系统 编译安装部署zabbix (mysql)官方说明详细见:https://www.zabbix.com/documentation/4.0/manual/installation ...

  2. WPF最小化窗体后激活函数显示不了窗体

    WPF最小化窗体后激活函数显示不了窗体 今天测试小哥给我提了一些问题,其中一个问题是这样的,点击web端的一个链接,是能启动本地的一个应用程序的,如果本地应用程序已启动(通过tcp进程间通信),那么应 ...

  3. Ubuntu 18.04 安装博通(Broadcom)无线网卡驱动

    目录 Ubuntu 18.04 安装博通(Broadcom)无线网卡驱动 Package gcc is not configured yet. 解决办法 history history | grep ...

  4. CentOS7.6最小化纯净版安装xfce桌面

    安装Xfce桌面环境 yum groupinstall "X Window system" yum install epel-release yum groupinstall xf ...

  5. 将VMware虚拟机最小化到托盘栏

    版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际」知识共享许可协议进行许可.   目录 前言 将VMware最小化到托盘栏的方法 1.下载 Trayconizer 2.解压 trayco ...

  6. WinFom解决最小化最大化后重绘窗口造成闪烁的问题

    网上两种方案(可协同) 1 设置双缓冲: SetStyle(ControlStyles.UserPaint, true); SetStyle(ControlStyles.AllPaintingInWm ...

  7. 解决安装Ubuntu之后找不到无线网卡驱动的问题

    为了不浇灭大家尝试ubuntu的冲动,昨天我安装了ubuntu 14.04 LTS版本号,从安装到又一次开机都非常顺利.PS:不会安装的请找教程区把,网上非常多,CSDN论坛都有. 安装之后当你奇妙的 ...

  8. Kali Linux安装TL-WN821N USB无线网卡驱动(make失败)

    主要有下面几个步骤: 1.刚插上网卡,network-manager识别出来了网卡,也能搜索到WiFi,但就是连接不上.查看/var/log/syslog日志或者使用nmcli m查看网络信息,显示认 ...

  9. CentOS 最小化安装后安装桌面

    通过yum的方式安装: yum groupinstall -y   "Desktop"   "Desktop Platform"   "Desktop ...

随机推荐

  1. [Swift]LeetCode963. 最小面积矩形 II | Minimum Area Rectangle II

    Given a set of points in the xy-plane, determine the minimum area of any rectangle formed from these ...

  2. java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Integer; 报错解决

    我的妈呀  真的是各种报错..... 这个问题    解决方法: https://www.cnblogs.com/beppezhang/p/6118661.html

  3. 一文掌握 Linux 性能分析之网络篇(续)

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 这是 Linu ...

  4. 论JVM爆炸的几种姿势及自救方法,你不得不知!

    前言 如今不管是在面试还是在我们的工作中,OOM总是不断的出现在我们的视野中,所以我们有必要去了解一下导致OOM的原因以及一些基本的调整方法,大家可以通过下面的事例来了解一下什么样的代码会导致OOM, ...

  5. SpringCloud(9)---mysql实现配置中心

    mysql实现配置中心 本公司配置数据的管理是通过mysql进行配置管理,因为已经搭建好了,所以自己动手重新搭建一遍,熟悉整个流程.有关项目源码后期会补上github地址 微服务要实现集中管理微服务配 ...

  6. [工具向]__关于androidstudio工具使用过程中学习到的一些知识点简记

    前言 在我学习android开发课程的过程中,我们通常只会关注编程语言上面的一些知识点与问题,而忽略了开发工具的使用上的一些遇到的一些知识,其实每一款IDE工具都是集编程语言大成而开发出来的,其中有很 ...

  7. Python:机器学习三剑客之 NumPy

    一.numpy简介 Numpy是高性能科学计算和数据分析的基础包,机器学习三剑客之一.Numpy库中最核心的部分是ndarray 对象,它封装了同构数据类型的n维数组.部分功能如下: ndarray, ...

  8. 聊聊 scala 的模式匹配

    一. scala 模式匹配(pattern matching) pattern matching 可以说是 scala 中十分强大的一个语言特性,当然这不是 scala 独有的,但这不妨碍它成为 sc ...

  9. Python MetaClass深入分析

    python元类是比较难理解和使用的.但是在一些特定的场合使用MetaClass又非常的方便.本文本着先拿来用的精神,将对元类的概念作简要介绍,并通过深入分析一个元类的例子,来体会其功能,并能够在实际 ...

  10. 用户在浏览器中输入一个url发生的奥秘

    在HTTP 客户端向服务器发送报文之前,需要用网际协议(Internet Protocol,IP)地址和端口号在客户端和服务器之间建立一条TCP/IP 连接. http://207.200.83.29 ...