Skip to content

Automatically manage DFS channels on OpenWrt for uninterrupted 5GHz Wi-Fi.

License

Notifications You must be signed in to change notification settings

Oaklight/openwrt-dfs-checker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenWrt DFS Checker

English version

介绍

本代码来源于Reddit的回答:DFS雷达导致5GHz频段断联且不会恢复。感谢 u/_daphreak_u/try_harder_later 的初步贡献。

代码经过交互性优化,使用了 DeepSeek-V3DeepSeek-R1-Lite,并记录了修改历史。DeepSeek-V3DeepSeek-R1-Lite 的表现令人满意,极大地提升了开发效率和脚本功能。

脚本说明

dfscheck.sh 用于在OpenWrt路由器上监控无线接口状态,特别是DFS通道的雷达检测事件。当雷达信号禁用无线接口时,脚本会自动切换至备用通道,并尝试在指定时间后恢复主通道。

功能概述

  1. 通道切换:在主通道因DFS检测被禁用时自动切换至备用通道,保持网络连接。
  2. 自动恢复:切换到备用通道后,脚本会在默认30分钟后尝试恢复主通道。
  3. 监控与日志:实时监控无线状态并记录日志,便于调试。
  4. 5G无线设备与接口自动识别:自动识别5G无线设备及其接口,无需手动配置。
  5. 可配置的重试策略:支持 fixed(固定)、linear(线性)和 exp(指数)退避策略,用于在连接失败后重试。默认策略为 fixed

使用方法

  1. 上传脚本:将 dfscheck.sh 上传至 /root/ 目录。
  2. 赋予权限:运行 chmod +x /root/dfscheck.sh
  3. 运行脚本:以root权限运行并指定参数。

示例命令

假设配置如下:

  • 主通道:108
  • 备用通道:149
  • 退避策略:fixed(默认)

运行命令:

/root/dfscheck.sh 108 149 fixed

参数说明

  • channel:主DFS通道(如108)。
  • fallback_channel:备用通道(如149)。
  • backoff_type:(可选)退避策略类型(fixedlinearexp),默认为 fixed

注意事项

  • 权限:需以root权限运行。
  • 网络中断:切换通道可能导致设备短暂断开连接。
  • 日志:日志记录可通过 logread 查看。注意,"连接正常" 的消息会直接输出到控制台,不会记录到日志中,以避免日志拥塞。
  • 法律合规:请确保通道配置符合当地无线频段管理法规。因违规导致的后果由用户自行承担。

设置脚本为开机服务

为了确保脚本在路由器启动时自动运行,可以通过创建服务的方式来实现。

为什么使用服务而不是Cron?

最初尝试了使用Cron来设置脚本开机自启,但由于未知原因,Cron无法正确解析 @reboot 指令,导致脚本无法自动运行。使用服务的方式可以避免Cron的解析问题,提供更可靠的解决方案。

设置步骤:

  1. 使用仓库中的服务脚本

    仓库中已包含服务脚本 dfscheck 。将该文件复制到 /etc/init.d/ 目录:

   cp ./dfscheck /etc/init.d/dfscheck
  1. 赋予脚本可执行权限

    运行以下命令,确保服务脚本可执行:

   chmod +x /etc/init.d/dfscheck
  1. 启用服务

    运行以下命令,确保服务在开机时自动启动:

   /etc/init.d/dfscheck enable
  1. 启动服务(无需重启设备)

    如果需要立即启动服务,可以运行以下命令:

   /etc/init.d/dfscheck start
  1. 检查服务状态

    运行以下命令,检查服务是否正常运行:

   /etc/init.d/dfscheck status
  1. 重启设备(可选)

    如果需要通过重启验证服务是否生效,可以运行以下命令:

   reboot

通过上述配置,脚本将在路由器重启后自动运行,并记录日志以供管理。

服务文件中的默认值

服务文件现在包含主通道( 108 )、备用通道( 149 )和退避策略( fixed )的默认值。可以通过修改服务文件或手动启动脚本时传递参数来自定义这些值。


主要更新:

  1. 默认退避策略:默认退避策略改为 fixed,使用固定的15秒重试间隔。
  2. 控制台输出 "连接正常":当无线接口正常工作时,"连接正常" 的消息会直接输出到控制台,而不是记录到日志中。
  3. DeepSeek工具:脚本经过 DeepSeek-V3DeepSeek-R1-Lite 的交互式优化,显著提升了开发效率和脚本功能。
  4. 简化CLI:脚本现在只需三个参数(channelfallback_channelbackoff_type),并自动识别5G无线设备及其接口。
  5. 默认值:服务文件包含主通道、备用通道和退避策略的默认值。
  6. 文档改进:README 现在反映了最新更改,包括新的CLI接口、服务文件更新以及 DeepSeek-V3DeepSeek-R1-Lite 的使用。

此次更新确保文档与最新的脚本和服务文件更改保持一致,使用户更容易理解和使用该工具。

About

Automatically manage DFS channels on OpenWrt for uninterrupted 5GHz Wi-Fi.

Topics

Resources

License

Stars

Watchers

Forks

Languages