Linux WiFi 模组使用及故障排查整理文档

Linux WiFi 模组使用及故障排查整理文档

    • 1. STA 模式下 WiFi 延时不稳定问题
      • 解决方法:
    • 2. Power Saving 机制说明
    • 3. AP 模式下 WiFi 设置
    • 4. RTL8821CS AP 模式下 Windows 客户端异常断开问题
      • 问题描述
      • 问题原因
      • 解决方案
        • 步骤 1:修改 dnsmasq 配置
        • 步骤 2:重启 dnsmasq 服务
        • 步骤 3:Windows 客户端释放并更新 IP
        • 步骤 4:Wireshark 抓包验证
    • 技术背景说明
    • 附加建议

1. STA 模式下 WiFi 延时不稳定问题

当 WiFi 配置为 STA 模式并连接路由器后,Ping 路由器时发现数据传输延时不稳定。可通过以下方法解决:

解决方法:

  1. 关闭驱动中的低功耗模式

    • 修改 Makefile 中配置:
      CONFIG_POWER_SAVING = n
      
  2. 在开机时关闭 WiFi 的省电模式

    • 添加开机执行命令:
      iw wlan0 set power_save off
      
    • 需要在 Buildroot 中启用 iw 命令支持:
      BR2_PACKAGE_IW=y
      
  3. 避免 WiFi 自动扫描引起的干扰


2. Power Saving 机制说明

参考 Arch Wiki: Wireless Power Saving

  • 尽管某些 Atheros ath9k 单芯片(如 AR9280 以后)默认启用动态省电,但部分设备(如 AR9285)仍可能出现省电未启用的情况。
  • 开启省电可能会出现如下错误:
    iw dev wlan0 set power_save on
    

3. AP 模式下 WiFi 设置

使用 hostapdudhcpd 配置 WiFi 为 AP 模式,详细教程参考:

  • https://blog.csdn.net/wit_732/article/details/121038477

4. RTL8821CS AP 模式下 Windows 客户端异常断开问题

问题描述

  • 在 Windows 平台上使用 RTL8821CS 芯片 AP 模式时,TCP Socket 会异常断开。
  • Android 和 iOS 平台表现正常。
  • 使用 Wireshark 抓包发现:客户端试图请求一个非 DHCP 服务器分配的 IP 地址。

问题原因

Windows 客户端可能保存旧 IP 地址并尝试续租,而当前的 DHCP 服务器(dnsmasq)未曾分配过该 IP,导致请求失败和连接中断。

解决方案

步骤 1:修改 dnsmasq 配置

编辑 /etc/dnsmasq.conf 或相关目录下配置文件,添加以下配置:

dhcp-authoritative

作用:将 dnsmasq 设为权威 DHCP 服务器,强制客户端使用其分配的 IP。

步骤 2:重启 dnsmasq 服务
sudo systemctl restart dnsmasq
# 或
sudo service dnsmasq restart
步骤 3:Windows 客户端释放并更新 IP

在 Windows 命令行中执行:

ipconfig /release
ipconfig /renew

确保获取的 IP 属于 DHCP 服务分配的子网。

步骤 4:Wireshark 抓包验证

过滤条件:udp.port == 67 || udp.port == 68

确认:

  • 客户端请求旧 IP 时,服务器是否返回 NAK。
  • 客户端是否重新发起 DHCP Discover 并正确获取 IP。

技术背景说明

  • DHCP 权威模式(dhcp-authoritative)
    使服务器在遇到非法或未知 IP 请求时,返回 DHCP NAK,强制客户端重新申请新 IP。

  • 系统差异
    Android/iOS 更主动释放旧 IP,而 Windows 更倾向于续租旧 IP,因此更依赖服务器的“权威性”。


附加建议

  • 缩短租约时间(例如设置为 12 小时):

    dhcp-lease-time=43200
    
  • 设置静态 IP 分配(对特定设备):

    dhcp-host=MAC地址,IP地址
    

通过上述方法,可以有效解决 Windows 客户端在 RTL8821CS AP 模式下 TCP Socket 异常断开的问题。

你可能感兴趣的:(linux,开发语言)