ubuntu 22.04 AX211无法驱动

安装完ubuntu 22.04发现自己的AX211无法驱动,找不到WiFi。查看dmesg日志发现:

[    2.458983] kernel: iwlwifi: No config found for PCI dev 7a70/0244, rev=0x430, rfid=0x10c000
[    2.459024] kernel: iwlwifi: probe of 0000:00:14.3 failed with error -22

然后就没有其它日志了,发现DEVICE是0x7A70,SUBSYSTEM_DEVICE为0x0244。看了Intel的WiFi驱动,说是AX210在5.10+的内核就支持了,AX211在5.14+的内核就支持。

https://wireless.wiki.kernel.org/en/users/Drivers/iwlwifi

而22.04的内核,通过uname -a 查看了下,已经是5.19了,理论肯定是支持了。

$ uname -a
Linux saint-ubuntu 5.19.0-38-generic #39~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Mar 17 21:16:15 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

那就非常的奇怪了,各种百度后,都无法解决,然后看了一下iwlwifi的驱动,发现7a70/0244不在那个列表里。

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/wireless/intel/iwlwifi/pcie/drv.c

于是就想看看能不能改SUBSYSTEM_DEVICE,但也没找到怎么改,就想能不能自己编译iwlfifi的驱动。

就参考一些其它博客,去把https://codeload.github.com/intel/backport-iwlwifi下载下来

cd iwlwifi-stack-dev
vim drivers/net/wireless/intel/iwlwifi/pcie/drv.c

我是这么修改的:

        IWL_DEV_INFO(0x7A70, 0x0090, iwlax211_2ax_cfg_so_gf_a0_long, NULL),
        IWL_DEV_INFO(0x7A70, 0x0098, iwlax211_2ax_cfg_so_gf_a0_long, NULL),
+        IWL_DEV_INFO(0x7A70, 0x0244, iwlax211_2ax_cfg_so_gf_a0_long, NULL),
        IWL_DEV_INFO(0x7A70, 0x00B0, iwlax411_2ax_cfg_so_gf4_a0_long, NULL),

然后开始编译及安装:

cd iwlwifi-stack-dev
make defconfig-iwlwifi-public
make
sudo make install

然后重启电脑,发现就可以正常驱动了,不过认成了AX101,并且也报了一些错,但试了一下,能正常使用,也就没去深入研究了。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
void SOSC_init_8MHz(void) { SCG->SOSCDIV = 0x00000101; /* SOSCDIV1 & SOSCDIV2 =1: divide by 1 */ SCG->SOSCCFG = 0x00000024; /* Range=2: Medium freq (SOSC between 1MHz-8MHz)*/ // SCG->SOSCCFG = 0x00000034; /* Range=3: High freq (SOSC between 8MHz-40MHz)*/ /* HGO=0: Config xtal osc for low power */ /* EREFS=1: Input is external XTAL */ while(SCG->SOSCCSR & SCG_SOSCCSR_LK_MASK); /* Ensure SOSCCSR unlocked */ SCG->SOSCCSR = 0x00000001; /* LK=0: SOSCCSR can be written */ /* SOSCCMRE=0: OSC CLK monitor IRQ if enabled */ /* SOSCCM=0: OSC CLK monitor disabled */ /* SOSCERCLKEN=0: Sys OSC 3V ERCLK output clk disabled */ /* SOSCLPEN=0: Sys OSC disabled in VLP modes */ /* SOSCSTEN=0: Sys OSC disabled in Stop modes */ /* SOSCEN=1: Enable oscillator */ while(!(SCG->SOSCCSR & SCG_SOSCCSR_SOSCVLD_MASK)); /* Wait for sys OSC clk valid */ } void SPLL_init_160MHz(void) { while(SCG->SPLLCSR & SCG_SPLLCSR_LK_MASK); /* Ensure SPLLCSR unlocked */ SCG->SPLLCSR = 0x00000000; /* SPLLEN=0: SPLL is disabled (default) */ SCG->SPLLDIV = 0x00000302; /* SPLLDIV1 divide by 2; SPLLDIV2 divide by 4 */ SCG->SPLLCFG = 0x00180000; /* PREDIV=0: Divide SOSC_CLK by 0+1=1 */ /* MULT=24: Multiply sys pll by 4+24=40 */ /* SPLL_CLK = 8MHz / 1 * 40 / 2 = 160 MHz */ while(SCG->SPLLCSR & SCG_SPLLCSR_LK_MASK); /* Ensure SPLLCSR unlocked */ SCG->SPLLCSR = 0x00000001; /* LK=0: SPLLCSR can be written */ /* SPLLCMRE=0: SPLL CLK monitor IRQ if enabled */ /* SPLLCM=0: SPLL CLK monitor disabled */ /* SPLLSTEN=0: SPLL disabled in Stop modes */ /* SPLLEN=1: Enable SPLL */ while(!(SCG->SPLLCSR & SCG_SPLLCSR_SPLLVLD_MASK)); /* Wait for SPLL valid */ }
07-14

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值