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
提示做了以下排除。
- 通过dmesg报错信息驱动wifi型号为
intel-Wireless-AC-9560
查找官网 linux 支持最新驱动并按照README更新;
确定官网驱动提供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
确定本地的固件都比官网提供的的新,但是不确定当前使用的哪一个。
在dmesg
中并没有找到ucode版本信息,备份所有ucode后尝试依次删除发现dmesg还是相同报错。直到所有的.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*"|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-29
到5.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。
陈渝脸:文章真不错https://www.dfpump.cn/gonglue
累了。我这内核最低5.14。不能用。完全不能用
https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/ 改一版本。
找了半天驱动结果发现原来是内核的问题 降级了内核问题果然解决了
这帖子帮大忙了 よかったです