自制文件系统对于wifi的wpa_supplicant移植_could not unlink existing ctrl_iface socket-程序员宅基地

技术标签: 驱动移植  wi-fi  wpa_supplicant  openssl  移植  linux驱动  

最近一些项目原因需要让自制的linux qt文件系统支持wifi功能,本文将具体进行分析。


首先想要支持wifi功能,wifi驱动是必不可少的,一般的嵌入式设备都集成wifi模块了,如果没有,请选配一款usbwifi模块。

1,然后是编译wifi驱动,具体型号具体分析,可以百度,本文不做阐述,假设编译出的wifi驱动模块文件叫wlan.ko,并且假设内核版本是3.4.39。

2,wifi驱动编译成模块之后,一般放入”/lib/modules/3.4.39/“目录下,再在/etc/init.d/rcS脚本的首行添加一句insmod /lib/modules/3.4.39/wlan.ko

这样在开机时就会加载wlan.ko驱动,然后在ifconfig -a命令中可以看到例如wlan0这样的设备,设备名不一而足,不多阐述(有的叫ra0等)。

3,然后需要在/etc/network/interfaces中追加:

auto wlan0
iface wlan0 inet dhcp

语句,目的是让操作喜用自己打开wlan设备。

那么以上步骤都做完之后,开机后执行ifconfig,直接就能看到wlan0了,这样我们的第一步就做好了。


4,一般wlan设备的驱动需要对应的命令去进行wifi连接,由于现在很多嵌入式设备使用wpa2方式进行加密,所以,我们需要移植wpa_supplicant工具,

对wpa2加密进行支持。

首先,移植wpa_supplicant需要两个库进行支持,一个是openssl库,正常来说有这个库就可以了,网上的很多移植教程也是这么说的,然而在实际使用中,

我发现,我的wifi设备驱动是比较新的,它的wifi连接标准使用nl80211,而网上教程普遍描述的是wext标准(再一次印证了网上的东西都是很早的)。

贴上一个前辈写的过程:

http://www.cnblogs.com/wanhl/p/3374443.html

按照他的方式,我确实移植成功了,但是在我的自制文件系统中不能连接,到这一步,调用

wpa_supplicant -iwlan1 -Dwext1 -c /etc/wpa_supplicant.conf

指令直接报以下错误信息:

ioctl[SIOCSIWPMKSA]: Invalid argument
ioctl[SIOCSIWMODE]: Invalid argument
ioctl[SIOCGIWRANGE]: Invalid argument
ioctl[SIOCGIWMODE]: Invalid argument
ioctl[SIOCSIWAP]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWPMKSA]: Invalid argument
unlink[ctrl_iface]: Not a directory
Could not unlink existing ctrl_iface socket '/sbin/wpa_supplicant/wlan0'
Failed to initialize control interface '/sbin/wpa_supplicant'.
You may have another wpa_supplicant process already running or the file was
left by an unclean termination of wpa_supplicant in which case you will need
to manually remove this file before starting wpa_supplicant again.


ioctl[SIOCGIWMODE]: Invalid argument
ioctl[SIOCSIWAP]: Invalid argument
l2_packet_receive - recvfrom: Network is down

这让我很是费解,显然是ioctl函数报错,那么也就是驱动提出了问题了,但我用同样的驱动在ubuntu下是可以运行的,但并不是用命令去运行。

因此我尝试用同样的命令进行操作,在ubuntu下也报了相同的错误,也就是说这个命令确实是有问题的,而问题的原因就是wext标准已经不被我的

驱动支持了,那么当我查看wpa_supplicant工具的帮助信息时,我发现它有两套标准,一个是wext,另一个是nl80211,于是我尝试修改命令,

修改成wpa_supplicant -iwlan1 -Dnl80211 -c /etc/wpa_supplicant.conf

执行之后成功了,也就是说我的驱动只支持nl80211标准,于是我回到qt文件系统下,执行此命令,报错,表示不支持80211标准。

因此,我在wpa_supplicant工程的.config文件中找到与80211相关的配置宏,也就是打开CONFIG_DRIVER_NL80211=y,

可以选择性得关闭CONFIG_DRIVER_WEXT=y

再次编译,失败,表示有多个头文件没有找到:

../src/drivers/driver_nl80211.c:22:31: warning: netlink/genl/genl.h: No such file or directory
../src/drivers/driver_nl80211.c:23:33: warning: netlink/genl/family.h: No such file or directory
../src/drivers/driver_nl80211.c:2

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/a3836911/article/details/52044034

智能推荐

LOJ 2557 「CTSC2018」组合数问题 (46分)-程序员宅基地

文章浏览阅读111次。题目:https://loj.ac/problem/2557第一个点可以暴搜。第三个点无依赖关系,k=3,可以 DP 。dp[ cr ][ i ][ j ] 表示前 cr 个任务、第一台机器最晚完成时间是 i 、第二台机器最晚完成时间是 j ,第三台机器最晚完成时间是多少。数组开 500 就行了。#include<cstdio>#include<cstri..._ctsc 2018 组合数问题

IT 运营管理 (ITOM)解决方案-OpManager Plus-程序员宅基地

文章浏览阅读2.6k次,点赞3次,收藏2次。ITOM 是配置网络资源、增强容量规划、实现最佳性能并确保 IT 基础架构持续可用性的过程。它包含所有网络和应用程序监控任务,可帮助您向最终用户提供不间断的优质服务。有效的 ITOM 战略可帮助组织确保网络健康、性能和无缝服务交付,这是获得客户满意度和保持竞争优势的关键组成部分。_itom

数据结构:【二叉树】 先序,中序,后序,层序,递归实现!_中序 + 先序/后序/层序-程序员宅基地

文章浏览阅读354次。* 二叉树的基本操作*递归实现先序 中序 后序 层序遍历 二叉树特点 : 每个节点最多有两个子树,二叉树不存在度大于2的节点 二叉树的子树有左右之分,其子树的次序不能颠倒二叉树的存储 A 顺式存储优点: 存储完全二叉树,简单省空间。缺点: 存储一般二叉树尤其单支树,存储空间利用不高。 B 链式存储..._中序 + 先序/后序/层序

python随机生成一个矩阵并存入txt文件_编写自定义函数 getrow (),在函数中建立一个5x6的随机矩阵。输入整数参 数 n ,函数输出-程序员宅基地

文章浏览阅读6.5k次,点赞2次,收藏24次。注释在python中的numpy.random.randint(a,b)用于生成一个指定范围内的c行d列的整数矩阵。其中参数a是下限,参数b是上限,生成的随机数矩阵n: a <= n <= b。前提是必须import numpy,如果直接import random后调用random.randint()并且尝试输入size1参数,会出现以下错误:Traceback (most re..._编写自定义函数 getrow (),在函数中建立一个5x6的随机矩阵。输入整数参 数 n ,函数输出矩阵的第 n 行元素;如果当 n 值超过矩

Structs2拦截器详解_checkuploadcontenttypefilter-程序员宅基地

文章浏览阅读509次。Struts2(XWork)提供的拦截器的功能说明: 拦截器名字说明Alias Interceptoralias在不同请求之间将请求参数在不同名字件转换,请求内容不变Chaining Interceptorchain让前一个Action的属性可以被后一个Actio_checkuploadcontenttypefilter

区块链专题报告:区块链是计算机板块上行的催化剂-程序员宅基地

文章浏览阅读2.2k次。一、 区块链获最高层强调,国家对先进科技重视程度空前本次区块链政策态度超预期,我们看到的更多是国家对先进科技的高度重视。在综合考虑资产质量、产业景气趋势、估值水平、交易因素,我们认为近期是计算机长周期配臵的重要时点!1. 区块链获最高层重视,关键核心技术强调自主创新区块链已经成为大国竞争的关键技术领域,中国专利申请量遥遥领先。来自IPRdaily 的数据显示,2018 年区块链专利申请...

随便推点

开源 合作 云_每个人都是您的开源合作伙伴-程序员宅基地

文章浏览阅读122次。开源 合作 云 当我刚开始在ByWater Solutions工作时,公司还处于起步阶段,因此无法负担全职员工的工资 ,但这并没有阻止他们雇用我。 ByWater Solutions为Koha开源集成图书馆系统提供支持,托管,培训和开发。 与我一样,ByWater的首席执行官Brendan Gallagher曾经(而且现在)是Koha社区的活跃成员。 因此,当布伦丹(Brendan)想要雇用..._找人写源代码合作

hdu 2063 过山车(二分图最大匹配)-程序员宅基地

文章浏览阅读362次。链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 #include #include int map[505][505];int book[505];int match[505];int K,M,N;int dfs(int u){ int i; for(i = 1; i <= N; ++i

ndk开发流程,9次Android面试经验总结,已拿offer入职_android 面试ndk-程序员宅基地

文章浏览阅读143次。前言这篇文章主要是分享今年上半年的面试心得,现已就职于某大厂有三个月了,近期有很多公司均已启动秋招,也祝大家在 2020 的下半年面试顺利,获得理想的offer!之前找工作的那段时间感想颇多,总结一点面试经验和人生思考分享给大家。【一面】Android四大组件是什么?你最熟悉哪个?Activity的生命周期?旋转屏幕的时候会发生什么?Java的常量池?不同String赋值方法,引用是否相等?HashMap的实现?树化阈值?负载因子?增长系数?手写代码:O(1)的单链表元素删除(×:倒霉_android 面试ndk

id生成策略-程序员宅基地

文章浏览阅读527次。id_id生成策略

多线程售票_c++多线程售票-程序员宅基地

文章浏览阅读160次。略_c++多线程售票

如何给开发板设置静态IP_开发板配置多个静态ip-程序员宅基地

文章浏览阅读1.1k次,点赞3次,收藏9次。记录下使用开发板遇到的问题及解决方法_开发板配置多个静态ip