nuc980下 RTL8188EUS_wifi移植过程

      我使用的nuc980型号为NUC980DK61YC,内核版本为"linux 4.4.115" ,以下过程是在自己单片机上移植的过程,仅供参考,不同配置环境可能会有不同的坑需要踩,希望会对各位小伙伴有帮助。

1.驱动添加与调整

注意:此部分参考https://blog.csdn.net/Naisu_kun/article/details/126507417,其中有一项错误gedit drivers/net/wireless/realtek/Makefile下的obj-$( CONFIG_RTL8EU) += rtl8188eus/  CONFIG_RTL8EU改为 CONFIG_RTL8188EU要不驱动不会编译的)

1.1无线网卡驱动下载

这里使用的USB无线网卡是 COMFAST 的 CF-WU810N(所用芯片方案为 RTL8188EUS ) ,它的Liunx下的驱动程序源码可以从其官网的下面地址下载:

CF-WU810N windows驱动 - 网卡驱动 - COMFAST

这里也提供下备用下载地址:
链接:百度网盘 请输入提取码
提取码:p17d

2.解压驱动源码

cd ~/nuc980-sdk/

# 移动下载的驱动包到当前文件夹

mv ~/Downloads/RTL8188EUS_linux_v5.3.9_28540.20180806.zip ./

# 解压驱动包

unzip RTL8188EUS_linux_v5.3.9_28540.20180806.zip

# 解压驱动源码到当前目录

tar -xzf RTL8188EUS_linux_v5.3.9_28540.20180806/driver/rtl8188EUS_linux_v5.3.9_28540.20180627.tar.gz

# 驱动源码文件夹名称比较长,改短些

mv rtl8188EUS_linux_v5.3.9_28540.20180627/ rtl8188EUS

linux下mv命令:用来为文件或目录改名、或将文件或目录移入其它位置

3.移动驱动源码到内核中

mv rtl8188EUS/ NUC980-linux-4.4.y/drivers/net/wireless/realtek/

4.内核配置与编译中添加RTL8188EUS

4.1 进入内核源码目录编辑内核中的Kconfig文件:

gedit drivers/net/wireless/Kconfig

在其中添加下面一行,用来引用 rtl8188eus 目录下的 Kconfig 文件,这样就可以在 menuconfig 界面中配置该芯片驱动了:

source "drivers/net/wireless/realtek/rtl8188eus/Kconfig"

4.2 编辑内核中的Makefile文件:

gedit drivers/net/wireless/realtek/Makefile

在其中添加下面一行,这样编译时会进入 rtl8188eus 目录下:

obj-$(CONFIG_RTL8188EU) += rtl8188eus/

# 需要注意的是rtl8188eus目录下Kconfig文件里定义的变量为RTL8188EU,没有S

4.3 调整RTL8188EUS驱动调试信息输出

RTL8188EUS驱动默认在运行时会打印调试信息,可以根据需求保留或调整:

gedit drivers/net/wireless/realtek/rtl8188eus/Makefile

默认的调试信息比较多,这里先关闭调试信息:

########################## Debug ###########################

CONFIG_RTW_DEBUG = y

# default log level is _DRV_INFO_ = 4,

# please refer to "How_to_set_driver_debug_log_level.doc" to set the available level.

CONFIG_RTW_LOG_LEVEL = 0

# 文档中介绍可以使 CONFIG_RTW_DEBUG=n 或 CONFIG_RTW_LOG_LEVEL=0 来关闭调试信息

# 但我使用前者时编译会报错,所以使用后面的方式来关闭调试信息

5.配置使能相关功能

make menuconfig

另外因为是USB网卡,所以还需要启动USB功能,默认情况下这部分已经是开启了的,主要需要配置的是下面几项:

Device Drivers  --->

    [*] USB support  --->

        <*>   Support for Host-side USB

        <*>     EHCI HCD (USB 2.0) support

        <*>     OHCI HCD (USB 1.1) support

6.编译与测试

上面配置中选择将驱动编译到内核中然后重启开发板,可以使用 ifconfig -a 看到wlan0端口,说明驱动加载成功,并成功识别到了网卡:

可以使用 ifconfig wlan0 up 来启用无线网卡,网卡启动完毕后直接使用 ifconfig 就可以看到wlan0端口了,并且我这里使用的USB无线网卡会有指示灯亮起:

6.1 交叉编译wpa_supplicant

通过无线访问网络现在来说已经是一种比较常用且重要的功能了。如果开发板中已经有无线网卡驱动并且可以启用无线网卡的情况下,可以使用 wpa_supplicant 程序来访问无线网络

wpa_supplicant的编译依赖openssl、libnl和dbus,dbus又依赖expat,因此在编译wpa_supplicant之前需要首先交叉编译这四个库。这几个依赖的编译方法以看这个链接https://blog.csdn.net/Golden_Chen/article/details/123485333,编译这四个库时也会遇到坑,但是去网上搜一下都能解决,我这里主要说一下我编译编译wpa_supplicant遇到的坑

编译wpa_supplicant时要指定openssl、libnl和dbus的安装路径,我把他们写到shell脚本里面还不行,不知道是不是我ubuntu环境的问题,得在终端一条一条的运行

export CPPFLAGS="$CPPFLAGS-I/home/caleb/VPN/install_ssl/include"  //openssl的头文件路径
export LDFLAGS="$LDFLAGS-L/home/caleb/VPN/install_ssl/lib"        //openssl的库路径

export CPPFLAGS="$CPPFLAGS-I/home/caleb/VPN/install_libnl/include/libnl3"  //libnl的头文件路径

export LDFLAGS="$LDFLAGS-L/home/caleb/VPN/install_libnl/lib"         //libnl的库文件路径

export CPPFLAGS="$CPPFLAGS-I/home/caleb/VPN/install_dbus/include"    //dbus的头文件路径

export LDFLAGS="$LDFLAGS-L/home/caleb/VPN/install_dbus/lib"          //dbus的库文件路径

 //libnl  pkgconfig的路径不声明路径的话报错说找不到
export PKG_CONFIG_PATH=/home/caleb/VPN/install_libnl/lib/pkgconfig:$PKG_CONFIG_PATH 

 //dbus  pkgconfig的路径不声明路径的话报错说找不到
export PKG_CONFIG_PATH=/home/caleb/VPN/install_dbus/lib/pkgconfig:$PKG_CONFIG_PATH

6.2 声明后按照上面的链接编译安装wpa_supplicant,然后放到自己开发板上面,运行wpa_supplicant时会报找不到一些动态库,缺少的库去相应的依赖安装文件夹找然后复制到开发板根目录 /lib/目录下。

6.3我这里编译好的时候NUC980使用的wpa_supplicant在本文件夹里的wifi.zip里面把wpa_supplicant放到开发板根目录sbin里面,运行./wpa_supplicant如果缺少库把wifi.zip相应的库文件放到根目录/lib/里即可,然后在/etc/里面找到wpa_supplicant.conf文件修内容改为:

ap_scan=1

network={

  ssid="wifi名字"

  psk="wifi密码"

}

6.4 连接到无线接入点

# -i 指定网卡;-c 指定配置文件;-B 后台运行

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

# wpa_supplicant -Dnl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B

# 连接到无线接入点后向网络中的dhcp服务器申请ip地址

udhcpc -i wlan0

ifconfig查看是否分配了IP地址然后ping查看是否连上网了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/479551.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[综述笔记]A Survey on Deep Learning for Neuroimaging-Based Brain Disorder Analysis

论文网址&#xff1a;Frontiers | A Survey on Deep Learning for Neuroimaging-Based Brain Disorder Analysis (frontiersin.org) 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论…

NET 自定义控件

如果添加 Category&#xff0c; 自定义控件&#xff0c;会放在杂项中

03-Java面试题八股文-----java基础——10题

41、HashMap 的长度为什么是 2 的 N 次方呢&#xff1f; 为了能让 HashMap 存数据和取数据的效率高&#xff0c;尽可能地减少 hash 值的碰撞&#xff0c;也就是说尽量把数据能均匀的分配&#xff0c;每个链表或者红黑树长度尽量相等。 我们首先可能会想到 % 取模的操作来实现。…

6 修改主机名和HOSTS文件

后期我们会配置多台服务器&#xff0c;那么每台服务器我们都会给定一个主机名&#xff0c;方便后期通过主机名进行访问。主机名的修改我们可以在安装操作系统时对其修改&#xff0c;如果忘记了&#xff0c;就可以修改配置文件完成&#xff0c;像后期我们进行虚拟机克隆后&#…

Unity Toggle与Toggle Group的妙用

Toggle与Toggle Group结合使用&#xff0c;妙处多多。 因为在同一Toggle Group内只有一个Toggle可以被选中&#xff0c;那么对于我们要创建单选按钮组、游戏的一些开关、暗夜模式、筛选不同显示内容等功能都非常好用。 比如我要实现通过点击不同按钮,从而筛选显示不同内容&am…

基于springboot的“漫画之家”系统

目录 背景 技术简介 系统简介 界面浏览 背景 随着科技的不断进步&#xff0c;计算机已经变成了人们日常生活和工作不可或缺的工具。在这样的环境下&#xff0c;互联网技术被广泛运用于各个领域&#xff0c;以提升工作和生活的效率&#xff0c;推动了网络信息技术的迅猛发展…

物联网和工业物联网的区别——青创智通

工业物联网解决方案-工业IOT-青创智通 物联网&#xff08;IoT&#xff09;和工业物联网&#xff08;IIoT&#xff09;作为现代科技的重要分支&#xff0c;正在逐渐渗透到我们的日常生活和工业生产中。它们的应用范围广泛&#xff0c;涵盖了从智能家居到自动化工厂的多个领域。…

基于SSM的土家风景文化管理平台(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的土家风景文化管理平台&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spri…

python_BeautifulSoup爬取汽车评论数据

爬取的网站&#xff1a; 完整代码在文章末尾 https://koubei.16888.com/57233/0-0-0-2 使用方法&#xff1a; from bs4 import BeautifulSoup 拿到html后使用find_all()拿到文本数据&#xff0c;下图可见&#xff0c;数据标签为&#xff1a; content_text soup.find_all…

微信群发技巧有哪几种?

群发是指通过微信平台对特定受众进行大规模信息发布的过程&#xff0c;如节日祝福、活动促销等。随着科技的不断发展&#xff0c;群发的定义已不再仅限于手机信息群发或短信群发。如今&#xff0c;微信内置的群发功能也被广泛应用。 一、微信群发的操作步骤 1. 进入微信&…

Matlab 双目相机标定(内置函数)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 相机标定的目的就是要找到从世界坐标转换为图像坐标所用到的投影P矩阵各个系数(即相机的内参与外参)。具体过程如下所述: 1、首先我们需要获取一个已知图形的图像(这里我们使用MATLAB所提供的数据)。 2、找到同…

基于Springboot的疫情物资管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的疫情物资管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…

Java项目:70 ssm小学生课外知识学习网站+vue

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 管理员&#xff1b;首页、个人中心、医护人员管理、科室管理、病人管理、病房管理、病人信息管理、病历管理、医嘱管理、手术安排管理、药品信息管理、…

@MapperScan注解使用

要了解MapperScan注解得先去了解Mapper注解 1、Mapper注解&#xff1a; 作用&#xff1a;在接口类上添加了Mapper&#xff0c;在编译之后会生成相应的接口实现类 添加位置&#xff1a;接口类上面 如果想要每个接口都要变成实现类&#xff0c;那么需要在每个接口类上加上Mappe…

C++小白学力扣之977.有序数组的平方

题目介绍 思路分析 首先&#xff0c;我们拿到一个数组题&#xff0c;根据题目。我们就能确定我们要运用什么方法来解答它&#xff0c;一般有两种方法&#xff0c;第一种是大家都能想到的的&#xff0c;暴力求解法&#xff0c;本题&#xff0c;如果使用暴力法&#xff0c;就是将…

线性顺序表算法库

list.cpp 具体函数实现 #include <stdio.h> #include "list.h" #include <malloc.h>/************************************************** ①函数名: CreateList 功 能: 用数组构建顺序表 参 数: ①SqList *&L:传入的线性表 ②ElemType a[]:使用…

打造新质生产力,亚信科技2024年如何行稳致远?

引言&#xff1a;不冒进、不激进&#xff0c;稳扎稳打&#xff0c; 一个行业一个行业地深度拓展。 【全球云观察 &#xff5c; 科技热点关注】 基于以往“一巩固、三发展”的多年业务战略&#xff0c;亚信科技正在落实向非通信行业、标准产品、软硬一体产品和国际市场的“四…

CrossOver 23 用户可以免费升级到 CrossOver24吗?CrossOver用户如何升级呢?

也就是上个月&#xff08;2024年2月底&#xff09;左右&#xff0c;CrossOver 刚刚更新了 24 版本&#xff0c;CrossOver更新的内容有哪些&#xff0c;大家可以参考这篇文章&#xff1a;CrossOver24.0新功能介绍&#xff0c;这篇文章详细介绍了CrossOver24有哪些新特点&#xf…

Java最后一块石头的重量 II(力扣Leetcod1049)

最后一块石头的重量 II 力扣原题 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。那么粉碎的可能结…

2核4G服务器优惠价格和性能测试,2024年

阿里云2核4G服务器租用优惠价格&#xff0c;轻量2核4G服务器165元一年、u1服务器2核4G5M带宽199元一年、云服务器e实例30元3个月&#xff0c;活动链接 aliyunfuwuqi.com/go/aliyun 活动链接如下图&#xff1a; 阿里云2核4G服务器优惠价格 轻量应用服务器2核2G4M带宽、60GB高效…