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

发布于:2025-02-23 ⋅ 阅读:(19) ⋅ 点赞:(0)

为什么会推荐这个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:适用于调试、临时加载特殊模块或绕过标准依赖管理的情况。