基于Linux的USB-wifi配置流程

news2024/9/22 13:44:31

目录

内核配置

配置 CFG80211

配置usb

配置DHCP

工作流程

1.连接到无线网络

2.设置网络接口:

3.验证连接:

4. 接收数据:


最近daisy一直忙活这个linux的wifi驱动和bluze蓝牙驱动,相比较蓝牙,WiFi的驱动和内核配置已经简单了很多,还有很多坑🕳需要一点点的踩过才知道。

不过所有的走过的路,踩过的坑,跨过的石头都会成会让自己变得越来越……

内核配置

首先保证Linux设备的内核支持usb以及wifi(其中CFG80211是内核中wifi驱动)

配置 CFG80211

进入内核源码sdk目录,输入make menuconfig

然后到Networking support → Wireless设置cfg80211 和 mac80211

配置usb

如果内核没有开启usb驱动接口,需要进行配置,在设备的sdk环境下输入

make menuconfig->Device Drivers

按空格选选中USB2.0为* 编译到内核

(PS如果选中M将被编译为内核模块(.ko文件)。模块可以在内核运行时动态加载或卸载,如果你不经常使用某些功能,或者想要在不重启内核的情况下添加或移除功能,可以选中M模块化)

Networking support →Networking options → Network packet filtering framework (Netfilter)

当选项为空时进入无内容可选中,按空格切换到*再进入

再IP: Netfilter Configuration ---> 进入选中 <M> ARP tables support

配置DHCP

内核之前一直找不到 DHCP

一个个查看,才发现在IP: kernel level autoconfiguration 的子目录下,只有配置这个*后才会显示 IP: DHCP support  这个是为后续进行配置动态分配ip的前提

工作流程

Linux系统已经成功驱动了USB Wi-Fi设备(这里默认wifi设备已经有固件)并且通过ifconfig -a可以看到名为wlan0的接口,然后通过wifi配置工具进行工作模式的配置(具体可以看我下一篇文章的介绍)

linux环境的wifi配置工具及工作模式区分介绍-CSDN博客

1.连接到无线网络

首先,你需要知道无线网络的SSID(网络名称)和密码。使用iwlist wlan0 scan命令来扫描可用的无线网络。这将列出周围的无线网络及其相关信息,如SSID、加密类型等。

选择你想要连接的网络,使用wpa_supplicant或wpa_passphrase来创建一个安全的配置文件。例如:

wpa_passphrase SSID_PASSWORD > wpa.conf

其中,`SSID_PASSWORD`是你的网络名称和密码(两者之间用空格分隔)。

使用wpa_supplicant连接到网络。打开一个终端窗口并运行:

wpa_supplicant -Dwext -iwlan0 -c wpa.conf -B

`-Dwext`指定使用旧的无线扩展,`-i wlan0`指定了接口,`-c wpa.conf`是配置文件路径,`-B`让wpa_supplicant在后台运行。

2. 设置网络接口:

一旦wpa_supplicant成功连接,你需要将接口设置为up状态并分配IP地址。可以使用dhclient或手动配置IP。通常使用dhclient自动获取IP地址:

dhclient wlan0

或者,如果你的网络需要静态IP,可以手动设置:

ifconfig wlan0 <IP_ADDRESS> netmask <NETMASK> broadcast <BROADCAST_ADDRESS>

route add default gw <GATEWAY_IP>

3.验证连接:

使用ping命令测试网络连接:

ping -c 4 google.com

如果可以收到回应,说明网络连接成功。

4. 接收数据:

接收数据是通过网络接口自动进行的,一旦连接建立,你的系统将自动接收通过该接口的数据。你可以使用tcpdump或wireshark等工具来捕获和查看网络流量,但这通常用于调试或监控目的。

保持连接:为了保持连接,你可能需要在启动时自动运行wpa_supplicant和dhclient。这可以通过添加相关脚本到启动服务或者使用systemd服务来实现。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ARMv8/v9 GIC- 700 系列 2 -- GIC-700 上电控制寄存器 GICR_PWRR】

请阅读【ARM GICv3/v4 实战学习 】 文章目录 GIC-700 上电GICR_PWRR 寄存器字段介绍GICR_PWRR 功能说明GICR_PWER 代码配置GICR_PWRR 使用场景GICR_PWRR 注意事项GIC-700 上电 GICR_PWRR(功耗寄存器)是ARM GICv4架构中用于控制GIC-700是否可以关闭电源的寄存器。它通过几个位…

【日记】我倒是想穿可爱的 JK 小裙子,可惜我是哥布林……(704 字)

正文 中午给三盆植物换水&#xff0c;惊叹于文竹的根。长得之长&#xff0c;都能在花盆里盘几圈了。而且我好像有一段时间没换水了&#xff0c;花盆的水中和盆底有了些绿藻。虽然不知道好不好&#xff0c;但我还是清掉了&#xff0c;摸起来黏黏的。而且我也总是觉得单位的水&am…

InceptionV3代码实现(Pytorch)

文章目录 Inception介绍InceptionV3代码实现第一步&#xff1a;定义基础卷积模块第二步&#xff1a;定义Inceptionv3模块InceptionAInceptionBInceptionCInceptionDInceptionE 第三步&#xff1a;定义辅助分类器InceptionAux第四步&#xff1a;搭建GoogLeNet网络第五步*&#x…

算法力扣刷题记录 五十二【617.合并二叉树】

前言 二叉树篇&#xff0c;继续。 记录 五十二【617.合并二叉树】 一、题目阅读 给你两棵二叉树&#xff1a; root1 和 root2 。 想象一下&#xff0c;当你将其中一棵覆盖到另一棵之上时&#xff0c;两棵树上的一些节点将会重叠&#xff08;而另一些不会&#xff09;。你需要…

HCIE-AI大模型直通车火热报名中

第一阶段&#xff1a;HCIA-AI Solution Architect&#xff08;直播&#xff0c;39课时&#xff09; 该阶段详细介绍 AI 大模型所需基础技术栈&#xff0c;包含深度学习基础、计算机视觉技术、自然语言处理技术、华为开源深度学习框架 MindSpore、注意力制、Transformer 架构&am…

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【22】【RabbitMQ】

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【22】【RabbitMQ】 Message Queue 消息队列异步处理应用解耦流量控制 消息中间件概念RabbitMQ概念MessagePublisherExchangeQueueBindingConnectionChannelConsumerVirtual HostBroker图…

汽车免拆诊断案例 | 卡罗拉急加速抖动故障排除

车型信息 2017年改款卡罗拉&#xff0c;排量1.2T&#xff0c;行驶里程48800公里。 故障现象 车辆不管在什么状态下&#xff0c;只要是平缓加速&#xff0c;都不会有抖动。车辆静止时&#xff0c;急加速时&#xff0c;也不会有抖动。但是车速达40公里/小时以上&#xff0c;急加…

【Linux】基础I/O——理解ext2文件系统

我们到现在为止讲的都是打开的文件。现在我们讲讲没有打开的文件 如果一个文件没有被打开&#xff0c;那它就是在磁盘中被存储的&#xff0c;我们就要关心路径问题&#xff0c;存储问题&#xff0c;文件获取问题&#xff0c;那么操作系统是怎么处理这些问题的&#xff1f;不急…

python如何输入矩阵

使用numpy创建矩阵有2种方法&#xff0c;一种是使用numpy库的matrix直接创建&#xff0c;另一种则是使用array来创建。 首先导入numpy&#xff1a; &#xff08;1&#xff09;import numpy &#xff08;2&#xff09;from numpy import * &#xff08;3&#xff09;import …

MYSQL调优详解:案例解析(第40天)

系列文章目录 一、数据库设计优化 二、查询优化 三、架构优化 四、其他优化策略 五、优化案例解析 文章目录 系列文章目录前言一、数据库设计优化二、查询优化三、架构优化四、其他优化策略五、优化案例解析案例一&#xff1a;优化SELECT查询案例二&#xff1a;使用索引案例三…

Quartus II 13.1添加新的FPGA器件库

最近需要用到Altera的一款MAX II 系列EPM240的FPGA芯片&#xff0c;所以需要给我的Quartus II 13.1添加新的器件库&#xff0c;在此记录一下过程。 1 下载所需的期间库 进入Inter官网&#xff0c;&#xff08;Altera已经被Inter收购&#xff09;https://www.intel.cn/content…

Java 反射机制:概念、用途与示例

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

C语言第5天作业 7月16日

目录 1.求1000以内所有的质数。 2.有1、2、3、4个数字&#xff0c;能组成多少个互不相同且无重复数字的三位数&#xff1f;都是多少&#xff1f; 3.猴子吃桃问题 4.判断最大值 1.求1000以内所有的质数。 质数&#xff1a;只能够1和它本身整除 #include <stdio.h> in…

Cxx Primer-Chap4

表达式可以没有操作符&#xff0c;但一定有操作数&#xff1a;理解表达式中含有多个操作符时涉及操作符的优先级、关联性以及操作数的计算顺序&#xff1a;如果操作符需要的操作数类型不同&#xff0c;则会发生一些默认的类型转换&#xff1a;什么叫Overloaded Operators&#…

Python 合并两个有序数组

Python 合并两个有序数组 正文 正文 题目说明如下&#xff1a; 这里我们直接让 nums1 的后 n 个数等于 nums2 数组&#xff0c;然后对 nums1 数组整体进行排序即可。 class Solution:def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:"…

Linux中的fork函数及.PHONY

cat fork.c #include<stdio.h> #include<unistd.h> int main() {printf("fork()函数执行前&#xff0c;进程为: %d\n",getpid());pid_t retfork();sleep(1);if(ret>0)printf("我是父进程&#xff0c;我的id为: %d,子进程为 %d\n",getpid(),…

叉车指纹锁怎么安装?叉车指纹启动系统安装介绍

叉车指纹锁的安装&#xff0c;不仅是一项技术性的工作&#xff0c;更是对叉车安全性能的一次提升。在繁忙的物流仓储环境中&#xff0c;叉车的安全性显得尤为重要&#xff0c;而指纹启动系统正是保障叉车安全运行的利器。安装指纹锁分为油叉车和电叉车&#xff0c;以下是接线说…

在国产芯片上实现YOLOv5/v8图像AI识别-【1.3】YOLOv5的介绍及使用(安装、标注)

本专栏主要是提供一种国产化图像识别的解决方案&#xff0c;专栏中实现了YOLOv5/v8在国产化芯片上的使用部署&#xff0c;并可以实现网页端实时查看。根据自己的具体需求可以直接产品化部署使用。 B站配套视频&#xff1a;https://www.bilibili.com/video/BV1or421T74f YOLO…

【Django+Vue3 线上教育平台项目实战】购物车与订单模块的精简实现与数据安全策略

文章目录 前言一、购物车模块1.后端核心逻辑2.前端页面代码3.操作流程及演示 二、订单模块1.订单模块模型类设计1.展示订单信息a.页面展示b.前端核心代码c.后端核心逻辑 2.订单是否使用优惠券与积分a.页面展示b.前端核心代码 3.订单支付方式a.页面展示b.前端核心代码 4.提交订单…

浅谈断言之响应断言

浅谈断言之响应断言 在进行测试时&#xff0c;确保服务器响应的内容符合预期是至关重要的&#xff0c;这时就需要用到JMeter的断言功能。响应断言&#xff08;Response Assertion&#xff09;是JMeter中最常用的一种断言类型&#xff0c;它允许用户验证服务器响应数据是否包含…