You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Acer Aspire A515-51G安装Ubuntu后无法检测13信道WiFi,如何在不修改路由器的情况下启用该信道?

Acer Aspire A515-51G安装Ubuntu后无法检测13信道WiFi,如何在不修改路由器的情况下启用该信道?

我太懂这种糟心的感觉了——之前用Windows 10能稳稳连上家里的WiFi,换成Ubuntu 20.04或者23.10后,周围别的WiFi都能搜到,唯独自家的因为在13信道直接隐身,而且试了iw reg set <COUNTRY>也没效果。结合你贴出来的系统信息,咱们一步步来搞定这个问题:

问题根源分析

从你给出的日志能看出几个关键问题:

  1. 虽然全局区域设置是PT(葡萄牙,这个区域允许13信道),但无线网卡的phy#0区域是99: DFS-UNSET,等于没生效;
  2. iw list明确显示13信道是禁用状态;
  3. dmesg里的ath: EEPROM regdomain: 0x69说明网卡的EEPROM里固化了区域设置,这个优先级比你手动改的更高,直接覆盖了区域配置。

解决步骤

1. 先搞定区域设置的持久化

临时的iw reg set重启就失效,而且还会被EEPROM覆盖,咱们先把区域设置写到配置文件里:

  • 打开区域配置文件:
    sudo nano /etc/default/crda
    
  • 把里面的REGDOMAIN=XX改成REGDOMAIN=PT(因为你全局已经是PT,葡萄牙允许2.4G的13信道),保存后退出(按Ctrl+O回车,再按Ctrl+X)。

2. 解决EEPROM覆盖区域的问题(核心步骤)

你的QCA9377网卡的EEPROM设置限制了信道,需要编译一个小内核模块来强制覆盖这个设置。先解决你之前遇到的编译错误:

第一步:安装匹配的编译环境

之前编译失败是因为内核用gcc-13编译,但你系统里没装这个版本,先补上:

sudo apt install gcc-13 build-essential linux-headers-$(uname -r)
第二步:编译并加载自定义模块
  1. 先创建一个专门的文件夹来放模块代码:
    mkdir ~/ath-reg-fix && cd ~/ath-reg-fix
    
  2. 创建main.c文件,复制下面的代码进去:
    #include <linux/module.h>
    #include <linux/platform_device.h>
    #include "ath10k_core.h"
    
    static int ath10k_regdomain_fix_probe(struct platform_device *pdev)
    {
        struct ath10k *ar = platform_get_drvdata(pdev);
        if (ar) {
            ar->regd.alpha2[0] = 'P';
            ar->regd.alpha2[1] = 'T';
            ath10k_info(ar, "Overridden regdomain to PT\n");
        }
        return 0;
    }
    
    static int ath10k_regdomain_fix_remove(struct platform_device *pdev)
    {
        return 0;
    }
    
    static const struct platform_device_id ath10k_regdomain_fix_id_table[] = {
        { "ath10k_pci", 0 },
        { },
    };
    MODULE_DEVICE_TABLE(platform, ath10k_regdomain_fix_id_table);
    
    static struct platform_driver ath10k_regdomain_fix_driver = {
        .probe = ath10k_regdomain_fix_probe,
        .remove = ath10k_regdomain_fix_remove,
        .driver = {
            .name = "ath10k_regdomain_fix",
            .owner = THIS_MODULE,
        },
        .id_table = ath10k_regdomain_fix_id_table,
    };
    
    module_platform_driver(ath10k_regdomain_fix_driver);
    
    MODULE_LICENSE("GPL");
    MODULE_DESCRIPTION("Override ath10k regdomain to PT");
    MODULE_AUTHOR("Your Name");
    
  3. 创建Makefile文件:
    obj-m += main.o
    KERNELDIR := /lib/modules/$(shell uname -r)/build
    PWD := $(shell pwd)
    
    all:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
    
    clean:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) clean
    
  4. 编译模块:
    make
    
    现在gcc-13已经安装,应该能顺利编译完成了。
  5. 加载模块并设置开机自动加载:
    # 临时加载模块
    sudo insmod main.ko
    # 验证是否生效,看日志里有没有成功覆盖的提示
    dmesg | grep "Overridden"
    # 把模块复制到内核模块目录
    sudo cp main.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless/ath/ath10k/
    # 更新模块依赖
    sudo depmod -a
    # 设置开机自动加载
    echo "ath10k_regdomain_fix" | sudo tee /etc/modules-load.d/ath10k-regfix.conf
    

3. 验证效果

重启系统后,运行下面的命令确认:

  • iwlist channel:看看wlp3s0的信道列表里有没有Channel 13;
  • iw reg get:确认phy#0的区域已经变成PT;
  • 现在应该能搜到家里的13信道WiFi了!

备选方案(如果模块编译麻烦)

也可以试试修改ath10k的模块参数,不过这个方法不一定对所有QCA9377有效:

  • 打开模块配置文件:
    sudo nano /etc/modprobe.d/ath10k.conf
    
  • 添加一行:
    options ath10k_pci regd_alpha2=PT
    
  • 重启系统后验证效果,要是不行还是回到上面的模块方法。

备注:内容来源于stack exchange,提问作者Just_4n0th3r_Pr0gr4mm3r

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 06:55:28