ath9k(Atheros芯片)开源驱动之wifi连接

news/2025/2/23 15:21:02

为什么会推荐这个wifi 驱动进行学习?

ath9k(Atheros芯片):代码结构清晰,适合学习实践

为什么我只在开篇写了一个wifi连接的操作?

先让一个开源驱动在你的硬件上跑起来,再逐步修改,这就是学习的基本思路。我希望能用这款驱动,开启我们自己的篇章

使用的硬件

  • TP-Link TL-WN722N v1 无线网卡(基于 Atheros AR9271 芯片)
  • 注意:一定是v1版本网卡(无需额外安装驱动)

wifi连接(wpa_supplicant)

  1. 插入wifi网卡后(通过 lsusb 确认是 v1(Atheros AR9271)还是 v2/v3(Realtek
    RTL8188EUS))
    在这里插入图片描述

  2. 使用驱动加载命令加载驱动:sudo modprobe ath9k_htc
    在这里插入图片描述
    实时显示驱动日志:dmesg -w
    在这里插入图片描述
    注意Atheros AR9271 需要固件文件 htc_9271.fw
    使用如下命令完成固件更新:
    sudo wget -P /lib/firmware/ https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/htc_9271.fw 并重启虚拟机

  3. iw dev wlx0c826806f70a info (iw dev wlx0c826806f70a scan)
    在这里插入图片描述

  4. ifconfig 在这里插入图片描述

  5. 创建配置文件

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CN  # 设置国家码(中国)
network={
ssid="00HR-2G"
psk="12345678"
key_mgmt=WPA-PSK
}

在这里插入图片描述

  1. 发起连接
    sudo wpa_supplicant -i wlx0c826806f70a -c /etc/wpa_supplicant/wpa_supplicant.conf -B
    获取IP地址 :sudo dhclient wlx0c826806f70a
    在这里插入图片描述
    ps -A|grep wpa_supplicant
    在这里插入图片描述
    驱动打印已连接
    在这里插入图片描述

网络连接问题解决(连通性检测)

现象:无网络
  1. 分析:
    先ping 网关:
    在这里插入图片描述
    网关没问题,通的,说明是网关问题,包可能没有转发出去
  2. 查看路由表:route -n
    在这里插入图片描述
    当前我虚拟机有网卡,所以有默认路由,但是 是没有网络
  3. 这时候添加无线网卡(tp wn722n)网卡的默认路由:
    在这里插入图片描述
    网络已经通了
    在这里插入图片描述

说明就是路由问题

可能遇到的问题

  1. 接口无法启用问题,使用如下命令
    rfkill list # 查看无线设备状态
    rfkill unblock all # 解除软硬件阻塞
  2. 优先使用 modprobe
    在大多数情况下,modprobe 是更安全、更智能的选择,尤其适合需要处理依赖或持久化配置的场景。
    仅在必要时使用 insmod:适用于调试、临时加载特殊模块或绕过标准依赖管理的情况。

http://www.niftyadmin.cn/n/5863526.html

相关文章

深搜专题2:组合问题

描述 组合问题就是从n个元素中抽出r个元素(不分顺序且r < &#xff1d; n)&#xff0c; 我们可以简单地将n个元素理解为自然数1&#xff0c;2&#xff0c;…&#xff0c;n&#xff0c;从中任取r个数。 例如n &#xff1d; 5 &#xff0c;r &#xff1d; 3 &#xff0c;所…

Ubuntu 22.04安装K8S集群

以下是Ubuntu 22.04安装Kubernetes集群的步骤概要 一、设置主机名与hosts解析 # Master节点执行 sudo hostnamectl set-hostname "k8smaster" # Worker节点执行 sudo hostnamectl set-hostname "k8sworker1"# 所有节点的/etc/hosts中添加&#xff1a; ca…

基于Spring Boot的兴顺物流管理系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

[数据结构]双链表详解

目录 一、链表的分类 1. 单向或者双向 2. 带头或者不带头 3. 循环或者非循环 二、双向链表 1.双向链表内部定义 2.双向链表的初始化&#xff08;void LTPrint(LTNode* phead);&#xff09; 3.双向链表的销毁&#xff08;void LTDataDestroy(LTNode* phead);&#xff09…

Day9 25/2/22 SAT

【一周刷爆LeetCode&#xff0c;算法大神左神&#xff08;左程云&#xff09;耗时100天打造算法与数据结构基础到高级全家桶教程&#xff0c;直击BTAJ等一线大厂必问算法面试题真题详解&#xff08;马士兵&#xff09;】https://www.bilibili.com/video/BV13g41157hK?p4&v…

MTK-Android13-包安装器PackageInstaller 静默安装实现

目的 我们最终是为了搞明白安装的整个流程。一方面通过安卓系统自带的包安装器来了解PMS 安装流程&#xff1b;另一方面熟悉框架层Framework 针对Android apk 安装流程。 前两篇文章分析了PackagerInstaller 安装流程。 Android13-包安装器PackageInstaller-之apk安装跳转 An…

C++:dfs,bfs各两则

1.木棒 167. 木棒 - AcWing题库 乔治拿来一组等长的木棒&#xff0c;将它们随机地砍断&#xff0c;使得每一节木棍的长度都不超过 5050 个长度单位。 然后他又想把这些木棍恢复到为裁截前的状态&#xff0c;但忘记了初始时有多少木棒以及木棒的初始长度。 请你设计一个程序…

力扣-贪心-376 摆动序列

思路 记录前一个差值和后一个差值&#xff0c;需要分析很多情况 只有在发生波动的时候才更新差值——单调中有平坡前一个差值0时也更新差值——平坡留下最左边元素最后一个元素不记录.默认从最后一个有坡度 代码 class Solution { public:int wiggleMaxLength(vector<in…