为什么会推荐这个wifi 驱动进行学习?
ath9k(Atheros芯片):代码结构清晰,适合学习实践
为什么我只在开篇写了一个wifi连接的操作?
先让一个开源驱动在你的硬件上跑起来,再逐步修改,这就是学习的基本思路。我希望能用这款驱动,开启我们自己的篇章
使用的硬件
- TP-Link TL-WN722N v1 无线网卡(基于 Atheros AR9271 芯片)
- 注意:一定是v1版本网卡(无需额外安装驱动)
wifi连接(wpa_supplicant)
-
插入wifi网卡后(通过 lsusb 确认是 v1(Atheros AR9271)还是 v2/v3(Realtek
RTL8188EUS))
-
使用驱动加载命令加载驱动: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 并重启虚拟机 -
iw dev wlx0c826806f70a info (iw dev wlx0c826806f70a scan)
-
ifconfig
-
创建配置文件
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CN # 设置国家码(中国)
network={
ssid="00HR-2G"
psk="12345678"
key_mgmt=WPA-PSK
}
- 发起连接
sudo wpa_supplicant -i wlx0c826806f70a -c /etc/wpa_supplicant/wpa_supplicant.conf -B
获取IP地址 :sudo dhclient wlx0c826806f70a
ps -A|grep wpa_supplicant
驱动打印已连接
网络连接问题解决(连通性检测)
现象:无网络
- 分析:
先ping 网关:
网关没问题,通的,说明是网关问题,包可能没有转发出去 - 查看路由表:route -n
当前我虚拟机有网卡,所以有默认路由,但是 是没有网络的 - 这时候添加无线网卡(tp wn722n)网卡的默认路由:
网络已经通了
说明就是路由问题
可能遇到的问题
- 接口无法启用问题,使用如下命令
rfkill list # 查看无线设备状态
rfkill unblock all # 解除软硬件阻塞 - 优先使用 modprobe
在大多数情况下,modprobe 是更安全、更智能的选择,尤其适合需要处理依赖或持久化配置的场景。
仅在必要时使用 insmod:适用于调试、临时加载特殊模块或绕过标准依赖管理的情况。