Ubuntu wireless-ac 9560 驱动异常

driver,linux,ubuntu 2020-02-20 287 次浏览 次点赞

Ubuntu 19.10 Intel wireless-ac 9560 driver exception

重启电脑后发现wifi不能使用了,网络设置里面提示未发现网络适配器。电脑比较新,之前安装ubuntu18.10 低版本kernel 版本就发现不识别wifi设备,更新到ubuntu19.10 后正常,不过正常安装后也反复重启过使用了一段时间。

  • Detected Intel(R) Wireless-AC 9560, REV=0x354;
  • Ubuntu 19.10 5.3.0-40-generic;
  • 小米笔记本pro 15;

排查

第一时间排查dmesg 发现有iwlwifi 内核模块报错。主动搜索报错码-110毫无头绪,电脑比较新,系统也比较新。

[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: Collecting data: trigger 15 fired.
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: Start IWL Error Log Dump:
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: Status: 0x00000000, count: -19956050
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: Loaded firmware version: 48.4fa0041f.0
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0xC5AC4F26 | ADVANCED_SYSASSERT          
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0xCB9998C3 | trm_hw_status0
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x244D7603 | trm_hw_status1
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x2926F87E | branchlink2
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x3E2895D3 | interruptlink1
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0xD09F20D1 | interruptlink2
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x08AC288C | data1
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0xF3FBD753 | data2
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0xF966C3F5 | data3
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0xDD57C165 | beacon time
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x5547C020 | tsf low
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x4E82E2A7 | tsf hi
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x6B3477FA | time gp1
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x0820283A | time gp2
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x34D26108 | uCode revision type
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x7F42F5CA | uCode version major
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0xD8F2FAEE | uCode version minor
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x48305889 | hw version
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x90466212 | board version
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x11E70732 | hcmd
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0xB46BD76C | isr0
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0xD739BE9E | isr1
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x00586BA0 | isr2
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0xF7703C2D | isr3
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0xFB8FF3AE | isr4
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0xF7AB7F15 | last cmd Id
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x131C56F1 | wait_event
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x7458093E | l2p_control
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0xF63FF3D7 | l2p_duration
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0xD3F65488 | l2p_mhvalid
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x93B19094 | l2p_addr_match
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x3C92FE13 | lmpm_pmg_sel
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0xF6EEA87F | timestamp
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0xB36CFFCE | flow_handler
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: Start IWL Error Log Dump:
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: Status: 0x00000000, count: 7
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x201013F1 | ADVANCED_SYSASSERT
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x00000000 | umac branchlink1
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0xC008CF5C | umac branchlink2
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x00000000 | umac interruptlink1
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x00000000 | umac interruptlink2
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x00000003 | umac data1
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x20000302 | umac data2
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x01300202 | umac data3
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x00000030 | umac major
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x4FA0041F | umac minor
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x00005C8D | frame pointer
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0xC0887F58 | stack pointer
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x00000000 | last host cmd
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x00000000 | isr status reg
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: Fseq Registers:
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x00000003 | FSEQ_ERROR_CODE
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x00260000 | FSEQ_TOP_INIT_VERSION
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x00020006 | FSEQ_CNVIO_INIT_VERSION
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x0000A384 | FSEQ_OTP_VERSION
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x063CB446 | FSEQ_TOP_CONTENT_VERSION
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x4552414E | FSEQ_ALIVE_TOKEN
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x20000302 | FSEQ_CNVI_ID
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x01300202 | FSEQ_CNVR_ID
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x20000302 | CNVI_AUX_MISC_CHIP
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x01300202 | CNVR_AUX_MISC_CHIP
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0x0000485B | CNVR_SCU_SD_REGS_SD_REG_DIG_DCDC_VTRIM
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: 0xA5A5A5A2 | CNVR_SCU_SD_REGS_SD_REG_ACTIVE_VDIG_MIRROR
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: SecBoot CPU1 Status: 0x5bfe, CPU2 Status: 0x3
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: Failed to start RT ucode: -110
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: Firmware not running - cannot dump error
[四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: Failed to run INIT ucode: -110

顺着iwlwifi提示做了以下排除。

确定官网驱动提供iwlwifi-9000-pu-b0-jf-b0-34.618819.0.tgz.ucode格式。

同时按照型号查找本地的固件版本。

 ~$ sudo  find / -type f -name iwlwifi-9000*
  [sudo] password for lijie: 
  /home/lijie/my_projecet/iwlwifi/9000/iwlwifi-9000-pu-b0-jf-b0-34.ucode
  /home/lijie/my_projecet/iwlwifi/9000/iwlwifi-9000-pu-b0-jf-b0-43.ucode
  /home/lijie/my_projecet/iwlwifi/9000/iwlwifi-9000-pu-b0-jf-b0-33.ucode
  /home/lijie/my_projecet/iwlwifi/9000/iwlwifi-9000-pu-b0-jf-b0-41.ucode
  /home/lijie/my_projecet/iwlwifi/9000/iwlwifi-9000-pu-b0-jf-b0-38.ucode
  /home/lijie/my_projecet/iwlwifi/9000/iwlwifi-9000-pu-b0-jf-b0-46.ucode 

确定本地的固件都比官网提供的的新,但是不确定当前使用的哪一个。

demesg中并没有找到ucode版本信息,备份所有ucode后尝试依次删除发现demesg还是相同报错。直到所有的.ucode删除还是相同报错。开始怀疑报错不是来自ucode。

最后通过modeinfo iwlwifi 找到了iwlwifi-9000-pu-b0-jf-b0-46.ucode 字段,尝试依次使用其他版本覆盖同名的iwlwifi-9000-pu-b0-jf-b0-46.ucode 问题依然。

$sudo cp -f /home/lijie/my_projecet/iwlwifi/9000/iwlwifi-9000-pu-b0-jf-b0-34.ucode /home/lijie/my_projecet/iwlwifi/9000/iwlwifi-9000-pu-b0-jf-b0-46.ucode 
警告:整个覆盖过程记得备份;

既然Intel提供的固件版本更老,尝试寻找更新的固件版本:

https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/

这kernel官方git中找到了当前绝对最新的ucode,下载后对比md5后确定本地的md5值已经是最新;

  • 找到iwlwif 驱动主动分析报错误码:-110

    [四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: Failed to start RT ucode: -110
    [四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: Firmware not running - cannot dump error
    [四 2月 20 10:03:59 2020] iwlwifi 0000:00:14.3: Failed to run INIT ucode: -110

    确实在https://github.com/torvalds/linux/tree/master/drivers/net/wireless/intel/iwlwifi 找到所有报错信息,不过时间紧迫并没有继续分析下去。当在该驱动中找到所有报错信息后开始怀疑iwlwifi.ko 有问题。

    在本机找到了两个版本的内核模块。尝试用老版本替换新版本内核模块重启后发现在高版本内核上面驱动模块并不能正常加载。

    $ sudo  find / -type f  -name "iwlwifi.ko*"|sudo xargs md5sum
    1a845c78b08e33913e3044ad0daa0c84  /usr/lib/modules/5.3.0-40-generic/kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
    5d6d42afaa816fb04857395ce9f2a528  /usr/lib/modules/5.3.0-29-generic/kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko

    尝试直接降级并使用使用老的内核版本启动ubuntu。

重启后发现不用去更改默认grub的启动内核版本,在advanced options直接提供选项,选择低版本的内核启动Ubuntu后发现wifi正常。

结论

所以最后确定了这是一次Ubuntu意外升级了内核版本从5.3.0-295.3.0-40后导致的 Intel wireless-ac 9560 wifi驱动异常。

$ dpkg -l |grep linux-image
rc  linux-image-5.3.0-18-generic     5.3.0-18.19+1  amd64  Signed kernel image generic
ii  linux-image-5.3.0-29-generic     5.3.0-29.31    amd64   Signed kernel image generic
ii  linux-image-5.3.0-40-generic     5.3.0-40.32    amd64   Signed kernel image generic

mark到这里,耽搁了大半天,有时间再继续分析kernel源码找到bug。


本文由 lijie 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处,点赞2

还不快抢沙发

添加新评论