I have a ThinkPad P14s running Ubuntu 20.04.3 and I used to have this problem and this answer used to work.
A couple of days ago, my WiFi stopped working again - presumably after an upgrade. This time, the above solution no longer solves the problem and the kernel messages are different:
[ 68.475159] iwlwifi 0000:09:00.0: enabling device (0000 -> 0002)
[ 68.488513] iwlwifi 0000:09:00.0: api flags index 2 larger than supported by driver
[ 68.488533] iwlwifi 0000:09:00.0: TLV_FW_FSEQ_VERSION: FSEQ Version: 0.0.2.25
[ 68.489009] iwlwifi 0000:09:00.0: loaded firmware version 63.c04f3485.0 ty-a0-gf-a0-63.ucode op_mode iwlmvm
[ 68.623466] iwlwifi 0000:09:00.0: Detected Intel(R) Wi-Fi 6 AX210 160MHz, REV=0x420
[ 68.803885] iwlwifi 0000:09:00.0: Microcode SW error detected. Restarting 0x0.
[ 68.803996] iwlwifi 0000:09:00.0: Start IWL Error Log Dump:
[ 68.803999] iwlwifi 0000:09:00.0: Status: 0x00000040, count: 6
[ 68.804001] iwlwifi 0000:09:00.0: Loaded firmware version: 63.c04f3485.0 ty-a0-gf-a0-63.ucode
[ 68.804003] iwlwifi 0000:09:00.0: 0x00000071 | NMI_INTERRUPT_UMAC_FATAL
[ 68.804006] iwlwifi 0000:09:00.0: 0x002002F0 | trm_hw_status0
[ 68.804008] iwlwifi 0000:09:00.0: 0x00000000 | trm_hw_status1
[ 68.804009] iwlwifi 0000:09:00.0: 0x004DA004 | branchlink2
[ 68.804011] iwlwifi 0000:09:00.0: 0x004D07EA | interruptlink1
[ 68.804012] iwlwifi 0000:09:00.0: 0x004D07EA | interruptlink2
[ 68.804014] iwlwifi 0000:09:00.0: 0x004D8DEA | data1
[ 68.804016] iwlwifi 0000:09:00.0: 0x00000010 | data2
[ 68.804017] iwlwifi 0000:09:00.0: 0x00000000 | data3
[ 68.804019] iwlwifi 0000:09:00.0: 0x00000000 | beacon time
[ 68.804020] iwlwifi 0000:09:00.0: 0x00013757 | tsf low
[ 68.804022] iwlwifi 0000:09:00.0: 0x00000000 | tsf hi
[ 68.804023] iwlwifi 0000:09:00.0: 0x00000000 | time gp1
[ 68.804025] iwlwifi 0000:09:00.0: 0x0002859D | time gp2
[ 68.804027] iwlwifi 0000:09:00.0: 0x00000001 | uCode revision type
[ 68.804028] iwlwifi 0000:09:00.0: 0x0000003F | uCode version major
[ 68.804030] iwlwifi 0000:09:00.0: 0xC04F3485 | uCode version minor
[ 68.804032] iwlwifi 0000:09:00.0: 0x00000420 | hw version
[ 68.804033] iwlwifi 0000:09:00.0: 0x00489002 | board version
[ 68.804035] iwlwifi 0000:09:00.0: 0x8008FF00 | hcmd
[ 68.804036] iwlwifi 0000:09:00.0: 0x00020000 | isr0
[ 68.804038] iwlwifi 0000:09:00.0: 0x60000000 | isr1
[ 68.804040] iwlwifi 0000:09:00.0: 0x58F00002 | isr2
[ 68.804041] iwlwifi 0000:09:00.0: 0x00C0000C | isr3
[ 68.804043] iwlwifi 0000:09:00.0: 0x00000000 | isr4
[ 68.804045] iwlwifi 0000:09:00.0: 0x00000000 | last cmd Id
[ 68.804046] iwlwifi 0000:09:00.0: 0x004D8DEA | wait_event
[ 68.804048] iwlwifi 0000:09:00.0: 0x00000000 | l2p_control
[ 68.804050] iwlwifi 0000:09:00.0: 0x00000000 | l2p_duration
[ 68.804051] iwlwifi 0000:09:00.0: 0x00000000 | l2p_mhvalid
[ 68.804053] iwlwifi 0000:09:00.0: 0x00000000 | l2p_addr_match
[ 68.804054] iwlwifi 0000:09:00.0: 0x00000009 | lmpm_pmg_sel
[ 68.804056] iwlwifi 0000:09:00.0: 0x00000000 | timestamp
[ 68.804058] iwlwifi 0000:09:00.0: 0x00000024 | flow_handler
[ 68.804112] iwlwifi 0000:09:00.0: Start IWL Error Log Dump:
[ 68.804113] iwlwifi 0000:09:00.0: Status: 0x00000040, count: 7
[ 68.804115] iwlwifi 0000:09:00.0: 0x2010070D | ADVANCED_SYSASSERT
[ 68.804117] iwlwifi 0000:09:00.0: 0x00000000 | umac branchlink1
[ 68.804118] iwlwifi 0000:09:00.0: 0x8045CF40 | umac branchlink2
[ 68.804120] iwlwifi 0000:09:00.0: 0x0108E0B2 | umac interruptlink1
[ 68.804122] iwlwifi 0000:09:00.0: 0x00000000 | umac interruptlink2
[ 68.804124] iwlwifi 0000:09:00.0: 0x00000005 | umac data1
[ 68.804125] iwlwifi 0000:09:00.0: 0xDEADBEEF | umac data2
[ 68.804127] iwlwifi 0000:09:00.0: 0xDEADBEEF | umac data3
[ 68.804128] iwlwifi 0000:09:00.0: 0x0000003F | umac major
[ 68.804130] iwlwifi 0000:09:00.0: 0xC04F3485 | umac minor
[ 68.804132] iwlwifi 0000:09:00.0: 0x00028596 | frame pointer
[ 68.804133] iwlwifi 0000:09:00.0: 0xC0885E90 | stack pointer
[ 68.804135] iwlwifi 0000:09:00.0: 0x00010C00 | last host cmd
[ 68.804137] iwlwifi 0000:09:00.0: 0x00000000 | isr status reg
[ 68.804165] iwlwifi 0000:09:00.0: IML/ROM dump:
[ 68.804166] iwlwifi 0000:09:00.0: 0x00000B03 | IML/ROM error/state
[ 68.804185] iwlwifi 0000:09:00.0: 0x000086A0 | IML/ROM data1
[ 68.804197] iwlwifi 0000:09:00.0: 0x00000080 | IML/ROM WFPM_AUTH_KEY_0
[ 68.804204] iwlwifi 0000:09:00.0: Fseq Registers:
[ 68.804216] iwlwifi 0000:09:00.0: 0x20000000 | FSEQ_ERROR_CODE
[ 68.804228] iwlwifi 0000:09:00.0: 0x80440002 | FSEQ_TOP_INIT_VERSION
[ 68.804240] iwlwifi 0000:09:00.0: 0x00080009 | FSEQ_CNVIO_INIT_VERSION
[ 68.804252] iwlwifi 0000:09:00.0: 0x0000A652 | FSEQ_OTP_VERSION
[ 68.804264] iwlwifi 0000:09:00.0: 0x00000002 | FSEQ_TOP_CONTENT_VERSION
[ 68.804276] iwlwifi 0000:09:00.0: 0x4552414E | FSEQ_ALIVE_TOKEN
[ 68.804288] iwlwifi 0000:09:00.0: 0x00400410 | FSEQ_CNVI_ID
[ 68.804300] iwlwifi 0000:09:00.0: 0x00400410 | FSEQ_CNVR_ID
[ 68.804312] iwlwifi 0000:09:00.0: 0x00400410 | CNVI_AUX_MISC_CHIP
[ 68.804326] iwlwifi 0000:09:00.0: 0x00400410 | CNVR_AUX_MISC_CHIP
[ 68.804340] iwlwifi 0000:09:00.0: 0x00009061 | CNVR_SCU_SD_REGS_SD_REG_DIG_DCDC_VTRIM
[ 68.804354] iwlwifi 0000:09:00.0: 0x00000061 | CNVR_SCU_SD_REGS_SD_REG_ACTIVE_VDIG_MIRROR
[ 68.804370] iwlwifi 0000:09:00.0: WRT: Collecting data: ini trigger 13 fired (delay=0ms).
[ 69.743608] iwlwifi 0000:09:00.0: Failed to run INIT ucode: -5
I have tried finding solutions for this symptom here and in other fora, but nothing seems like quite the same problem to me so far. For example, this question concerns the same WiFi HW, but the error messages are different and the suggested solution of hiding the *.pnvm file does not solve my problem).
Do you have any good ideas for solving this one?
Update
Additional info:
$ ls -al /usr/lib/firmware/*.pnvm
-rw-r--r-- 1 root root 41804 jan 10 11:19 /usr/lib/firmware/iwlwifi-so-a0-gf-a0.pnvm
$ ls -al /usr/lib/firmware/*.bak
-rw-r--r-- 1 root root 27456 jan 10 11:19 /usr/lib/firmware/iwlwifi-ty-a0-gf-a0.bak
As suggested in the comments, I have tried renaming "usr/lib/firmware/iwlwifi-so-a0-gf-a0.pnvm" to "usr/lib/firmware/iwlwifi-so-a0-gf-a0.pnvm.bak" to hide it, but this has not solved my problem after a reboot.
Update 2
By booting with a previously installed kernel, I can now see that WiFi works under kernel "5.11.0-46-generic", but does not under "5.13.0-25-generic" nor "5.13.0-27-generic".
Kernel 5.11.0-46-generic says (in dmesg
):
iwlwifi 0000:09:00.0: loaded firmware version 59.601f3a66.0 ty-a0-gf-a0-59.ucode op_mode iwlmvm
and it works.
Kernel 5.13.0-27-generic says:
iwlwifi 0000:09:00.0: loaded firmware version 63.c04f3485.0 ty-a0-gf-a0-63.ucode op_mode iwlmvm
and that does not work.
My conclusion so far is that something broke between those two combinations of kernel version and WiFi firmware version. So far, it solves my problem to stay at kernel 5.11.0-46, but I will of course need a solution going forward so that I can use newer kernels.
I have reported this to Ubuntu as a bug.