Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test EDUP PCIe Intel AX200 WiFi 6 Card #22

Closed
geerlingguy opened this issue Nov 9, 2020 · 45 comments
Closed

Test EDUP PCIe Intel AX200 WiFi 6 Card #22

geerlingguy opened this issue Nov 9, 2020 · 45 comments

Comments

@geerlingguy
Copy link
Owner

geerlingguy commented Nov 9, 2020

I bought an EDUP PCIe Intel AX200 WiFi 6 Card, which uses the Intel AX200 chip, which is supposedly friendlier with Linux than the Realtek chip I tried integrating in the ASUS PCE-AC51 over in #20.

DSC_2961

Note: It should work with the iwlwifi driver—supposedly.

@geerlingguy
Copy link
Owner Author

$ sudo lspci -vvv
...
01:00.0 Network controller: Intel Corporation Device 2723 (rev 1a)
	Subsystem: Intel Corporation Device 0084
	Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Interrupt: pin A routed to IRQ 0
	Region 0: Memory at 600000000 (64-bit, non-prefetchable) [disabled] [size=16K]
	Capabilities: [c8] Power Management version 3
		Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [d0] MSI: Enable- Count=1/1 Maskable- 64bit+
		Address: 0000000000000000  Data: 0000
	Capabilities: [40] Express (v2) Endpoint, MSI 00
		DevCap:	MaxPayload 128 bytes, PhantFunc 0, Latency L0s <512ns, L1 unlimited
			ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 0.000W
		DevCtl:	Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
			RlxdOrd+ ExtTag- PhantFunc- AuxPwr+ NoSnoop+ FLReset-
			MaxPayload 128 bytes, MaxReadReq 128 bytes
		DevSta:	CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
		LnkCap:	Port #0, Speed 5GT/s, Width x1, ASPM L1, Exit Latency L0s <4us, L1 <8us
			ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- CommClk-
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Range B, TimeoutDis+, LTR+, OBFF Via WAKE#
		DevCtl2: Completion Timeout: 16ms to 55ms, TimeoutDis-, LTR-, OBFF Disabled
		LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-, EqualizationPhase1-
			 EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
	Capabilities: [80] MSI-X: Enable- Count=16 Masked-
		Vector table: BAR=0 offset=00002000
		PBA: BAR=0 offset=00003000
	Capabilities: [100 v1] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
		AERCap:	First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
	Capabilities: [14c v1] Latency Tolerance Reporting
		Max snoop latency: 0ns
		Max no snoop latency: 0ns
	Capabilities: [154 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
			  PortCommonModeRestoreTime=30us PortTPowerOnTime=18us
		L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
			   T_CommonMode=0us LTR1.2_Threshold=0ns
		L1SubCtl2: T_PwrOn=10us

@geerlingguy
Copy link
Owner Author

Rebuilding the kernel, here's where the driver is according to menuconfig:

 Symbol: IWLWIFI [=n]                                                                                            │   
  │ Type  : tristate                                                                                                │   
  │ Prompt: Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi)                           │   
  │   Location:                                                                                                     │   
  │     -> Device Drivers                                                                                           │   
  │       -> Network device support (NETDEVICES [=y])                                                               │   
  │         -> Wireless LAN (WLAN [=y])                                                                             │   
  │ (1)       -> Intel devices (WLAN_VENDOR_INTEL [=y])                                                             │   
  │   Defined at drivers/net/wireless/intel/iwlwifi/Kconfig:2                                                       │   
  │   Depends on: NETDEVICES [=y] && WLAN [=y] && WLAN_VENDOR_INTEL [=y] && PCI [=y] && HAS_IOMEM [=y] && CFG80211  │   
  │   Selects: FW_LOADER [=y] 

@geerlingguy
Copy link
Owner Author

geerlingguy commented Nov 13, 2020

From dmesg:

[    0.900858] brcm-pcie fd500000.pcie: host bridge /scb/pcie@7d500000 ranges:
[    0.900892] brcm-pcie fd500000.pcie:   No bus range found for /scb/pcie@7d500000, using [bus 00-ff]
[    0.900966] brcm-pcie fd500000.pcie:      MEM 0x0600000000..0x0603ffffff -> 0x00f8000000
[    0.901044] brcm-pcie fd500000.pcie:   IB MEM 0x0000000000..0x00ffffffff -> 0x0100000000
[    0.932348] brcm-pcie fd500000.pcie: link up, 5 GT/s x1 (SSC)
[    0.932656] brcm-pcie fd500000.pcie: PCI host bridge to bus 0000:00
[    0.932685] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.932711] pci_bus 0000:00: root bus resource [mem 0x600000000-0x603ffffff] (bus address [0xf8000000-0xfbffffff])
[    0.932779] pci 0000:00:00.0: [14e4:2711] type 01 class 0x060400
[    0.933008] pci 0000:00:00.0: PME# supported from D0 D3hot
[    0.936621] pci 0000:00:00.0: bridge configuration invalid ([bus ff-ff]), reconfiguring
[    0.936846] pci 0000:01:00.0: [8086:2723] type 00 class 0x028000
[    0.936945] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00003fff 64bit]
[    0.937231] pci 0000:01:00.0: PME# supported from D0 D3hot D3cold
[    0.940708] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01
[    0.940759] pci 0000:00:00.0: BAR 8: assigned [mem 0x600000000-0x6000fffff]
[    0.940790] pci 0000:01:00.0: BAR 0: assigned [mem 0x600000000-0x600003fff 64bit]
[    0.940841] pci 0000:00:00.0: PCI bridge to [bus 01]
[    0.940869] pci 0000:00:00.0:   bridge window [mem 0x600000000-0x6000fffff]

So it seems to init correctly, but then when the driver loads:

[    3.925098] Intel(R) Wireless WiFi driver for Linux
[    3.925112] Copyright(c) 2003- 2015 Intel Corporation
[    3.925532] pci 0000:00:00.0: enabling device (0000 -> 0002)
[    3.925563] iwlwifi 0000:01:00.0: enabling device (0000 -> 0002)
[    3.929671] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-cc-a0-50.ucode failed with error -2
[    3.929760] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-cc-a0-49.ucode failed with error -2
[    3.929824] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-cc-a0-48.ucode failed with error -2
[    3.929884] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-cc-a0-47.ucode failed with error -2
[    3.929944] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-cc-a0-46.ucode failed with error -2
[    3.930006] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-cc-a0-45.ucode failed with error -2
[    3.930064] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-cc-a0-44.ucode failed with error -2
[    3.930123] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-cc-a0-43.ucode failed with error -2
[    3.930180] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-cc-a0-42.ucode failed with error -2
[    3.930354] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-cc-a0-41.ucode failed with error -2
[    3.930418] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-cc-a0-40.ucode failed with error -2
[    3.930477] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-cc-a0-39.ucode failed with error -2
[    3.930495] iwlwifi 0000:01:00.0: no suitable firmware found!
[    3.930507] iwlwifi 0000:01:00.0: minimum version required: iwlwifi-cc-a0-39
[    3.930518] iwlwifi 0000:01:00.0: maximum version supported: iwlwifi-cc-a0-50
[    3.930527] iwlwifi 0000:01:00.0: check git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git

Looks like I need to install some firmware...

@geerlingguy
Copy link
Owner Author

Looking at Intel's page https://wireless.wiki.kernel.org/en/users/Drivers/iwlwifi — it looks like it needs MVM (which I have installed, as well as the firmware linked in the table for Intel® Wi-Fi 6 AX200 160MHz.

$ wget https://wireless.wiki.kernel.org/_media/en/users/drivers/iwlwifi/iwlwifi-cc-46.3cfab8da.0.tgz
$ tar -xvzf iwlwifi-cc-46.3cfab8da.0.tgz
$ cd iwlwifi-cc-46.3cfab8da.0/
$ sudo cp iwlwifi-*.ucode /lib/firmware
$ sudo reboot

@geerlingguy
Copy link
Owner Author

geerlingguy commented Nov 13, 2020

Yikes, tons of error output, going to have to blacklist the module and load it manually to see what's going on...

$ sudo nano /etc/modprobe.d/blacklist-iwlwifi.conf
(contents of file below:)
blacklist iwlwifi

$ sudo reboot

@geerlingguy
Copy link
Owner Author

$ sudo modprobe iwlwifi

Then concurrently, dmesg starts spewing:

[   49.784664] Intel(R) Wireless WiFi driver for Linux
[   49.784677] Copyright(c) 2003- 2015 Intel Corporation
[   49.785037] pci 0000:00:00.0: enabling device (0000 -> 0002)
[   49.785064] iwlwifi 0000:01:00.0: enabling device (0000 -> 0002)
[   49.788534] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-cc-a0-50.ucode failed with error -2
[   49.788599] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-cc-a0-49.ucode failed with error -2
[   49.788654] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-cc-a0-48.ucode failed with error -2
[   49.788704] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-cc-a0-47.ucode failed with error -2
[   49.817473] iwlwifi 0000:01:00.0: loaded firmware version 46.3cfab8da.0 op_mode iwlmvm
[   49.923040] iwlwifi 0000:01:00.0: Detected Intel(R) Wi-Fi 6 AX200 160MHz, REV=0x340
[   50.082225] iwlwifi 0000:01:00.0: base HW address: e0:d4:e8:49:ff:e8
[   50.097951] thermal thermal_zone1: failed to read out thermal zone (-61)
[   50.522448] iwlwifi 0000:01:00.0: Microcode SW error detected.  Restarting 0x2000000.
[   50.522555] iwlwifi 0000:01:00.0: Start IWL Error Log Dump:
[   50.522619] iwlwifi 0000:01:00.0: Status: 0x00000040, count: 6
[   50.522619] iwlwifi 0000:01:00.0: Loaded firmware version: 46.3cfab8da.0
[   50.522629] iwlwifi 0000:01:00.0: 0x00000071 | NMI_INTERRUPT_UMAC_FATAL    
[   50.522633] iwlwifi 0000:01:00.0: 0x00A0BEF5 | trm_hw_status0
[   50.522638] iwlwifi 0000:01:00.0: 0x00000000 | trm_hw_status1
[   50.522639] iwlwifi 0000:01:00.0: 0x004FC308 | branchlink2
[   50.522639] iwlwifi 0000:01:00.0: 0x004E8926 | interruptlink1
[   50.522639] iwlwifi 0000:01:00.0: 0x004E8926 | interruptlink2
[   50.522639] iwlwifi 0000:01:00.0: 0x00016F7E | data1
[   50.522639] iwlwifi 0000:01:00.0: 0x00001000 | data2
[   50.522660] iwlwifi 0000:01:00.0: 0xF0000008 | data3
[   50.522660] iwlwifi 0000:01:00.0: 0x00000000 | beacon time
[   50.522669] iwlwifi 0000:01:00.0: 0x0004DC44 | tsf low
[   50.522674] iwlwifi 0000:01:00.0: 0x00000000 | tsf hi
[   50.522679] iwlwifi 0000:01:00.0: 0x00000000 | time gp1
[   50.522679] iwlwifi 0000:01:00.0: 0x0004DC44 | time gp2
[   50.522679] iwlwifi 0000:01:00.0: 0x00000001 | uCode revision type
[   50.522691] iwlwifi 0000:01:00.0: 0x0000002E | uCode version major
[   50.522691] iwlwifi 0000:01:00.0: 0x3CFAB8DA | uCode version minor
[   50.522691] iwlwifi 0000:01:00.0: 0x00000340 | hw version
[   50.522703] iwlwifi 0000:01:00.0: 0x18C89000 | board version
[   50.522704] iwlwifi 0000:01:00.0: 0x800CF500 | hcmd
[   50.522704] iwlwifi 0000:01:00.0: 0xA0120000 | isr0
[   50.522715] iwlwifi 0000:01:00.0: 0x00000000 | isr1
[   50.522715] iwlwifi 0000:01:00.0: 0x08F00002 | isr2
[   50.522715] iwlwifi 0000:01:00.0: 0x00C0000C | isr3
[   50.522725] iwlwifi 0000:01:00.0: 0x00000000 | isr4
[   50.522728] iwlwifi 0000:01:00.0: 0x000301D1 | last cmd Id
[   50.522728] iwlwifi 0000:01:00.0: 0x00016F7E | wait_event
[   50.522728] iwlwifi 0000:01:00.0: 0x00000000 | l2p_control
[   50.522728] iwlwifi 0000:01:00.0: 0x00002820 | l2p_duration
[   50.522728] iwlwifi 0000:01:00.0: 0x00000000 | l2p_mhvalid
[   50.522728] iwlwifi 0000:01:00.0: 0x00000000 | l2p_addr_match
[   50.522752] iwlwifi 0000:01:00.0: 0x00000009 | lmpm_pmg_sel
[   50.522756] iwlwifi 0000:01:00.0: 0x16042142 | timestamp
[   50.522762] iwlwifi 0000:01:00.0: 0x00000828 | flow_handler
[   50.522856] iwlwifi 0000:01:00.0: Start IWL Error Log Dump:
[   50.522865] iwlwifi 0000:01:00.0: Status: 0x00000040, count: 7
[   50.522871] iwlwifi 0000:01:00.0: 0x20000034 | NMI_INTERRUPT_WDG
[   50.522873] iwlwifi 0000:01:00.0: 0x00000000 | umac branchlink1
[   50.522881] iwlwifi 0000:01:00.0: 0xC008B1C0 | umac branchlink2
[   50.522884] iwlwifi 0000:01:00.0: 0x8048BC5C | umac interruptlink1
[   50.522889] iwlwifi 0000:01:00.0: 0xC0084264 | umac interruptlink2
[   50.522894] iwlwifi 0000:01:00.0: 0x00000004 | umac data1
[   50.522901] iwlwifi 0000:01:00.0: 0xC0084264 | umac data2
[   50.522906] iwlwifi 0000:01:00.0: 0xDEADBEEF | umac data3
[   50.522909] iwlwifi 0000:01:00.0: 0x0000002E | umac major
[   50.522913] iwlwifi 0000:01:00.0: 0x3CFAB8DA | umac minor
[   50.522913] iwlwifi 0000:01:00.0: 0x0004DC2B | frame pointer
[   50.522921] iwlwifi 0000:01:00.0: 0xC08869B4 | stack pointer
[   50.522930] iwlwifi 0000:01:00.0: 0x0006050D | last host cmd
[   50.522933] iwlwifi 0000:01:00.0: 0x00000000 | isr status reg
[   50.522943] iwlwifi 0000:01:00.0: Fseq Registers:
[   50.522949] iwlwifi 0000:01:00.0: 0xE0000000 | FSEQ_ERROR_CODE
[   50.522955] iwlwifi 0000:01:00.0: 0x80290001 | FSEQ_TOP_INIT_VERSION
[   50.522959] iwlwifi 0000:01:00.0: 0x80050008 | FSEQ_CNVIO_INIT_VERSION
[   50.522959] iwlwifi 0000:01:00.0: 0x0000A503 | FSEQ_OTP_VERSION
[   50.522959] iwlwifi 0000:01:00.0: 0x80000003 | FSEQ_TOP_CONTENT_VERSION
[   50.522972] iwlwifi 0000:01:00.0: 0x4552414E | FSEQ_ALIVE_TOKEN
[   50.522978] iwlwifi 0000:01:00.0: 0x00100530 | FSEQ_CNVI_ID
[   50.522978] iwlwifi 0000:01:00.0: 0x00000532 | FSEQ_CNVR_ID
[   50.522978] iwlwifi 0000:01:00.0: 0x00100530 | CNVI_AUX_MISC_CHIP
[   50.522978] iwlwifi 0000:01:00.0: 0x00000532 | CNVR_AUX_MISC_CHIP
[   50.523005] iwlwifi 0000:01:00.0: 0x05B0905B | CNVR_SCU_SD_REGS_SD_REG_DIG_DCDC_VTRIM
[   50.523007] iwlwifi 0000:01:00.0: 0x0000025B | CNVR_SCU_SD_REGS_SD_REG_ACTIVE_VDIG_MIRROR
[   50.523126] iwlwifi 0000:01:00.0: Collecting data: trigger 2 fired.
[   50.523137] ieee80211 phy1: Hardware restart was requested
[   50.523161] iwlwifi 0000:01:00.0: FW error in SYNC CMD RFH_QUEUE_CONFIG_CMD
[   50.523167] CPU: 0 PID: 618 Comm: wpa_supplicant Tainted: G         C        5.4.75-v8+ #4
[   50.523173] Hardware name: Raspberry Pi Compute Module 4 Rev 1.0 (DT)
[   50.523177] Call trace:
[   50.523186]  dump_backtrace+0x0/0x148
[   50.523193]  show_stack+0x24/0x30
[   50.523197]  dump_stack+0xdc/0x158
[   50.523214]  iwl_trans_pcie_gen2_send_hcmd+0x490/0x498 [iwlwifi]
[   50.523255]  iwl_trans_send_cmd+0x68/0x108 [iwlwifi]
[   50.523289]  iwl_mvm_send_cmd+0x28/0x50 [iwlmvm]
[   50.523302]  iwl_configure_rxq+0x104/0x170 [iwlmvm]
[   50.523323]  iwl_mvm_up+0x3ec/0x698 [iwlmvm]
[   50.523340]  __iwl_mvm_mac_start+0x34/0x210 [iwlmvm]
[   50.523355]  iwl_mvm_mac_start+0x34/0x50 [iwlmvm]
[   50.523431]  drv_start+0x44/0x1c8 [mac80211]
[   50.523461]  ieee80211_do_open+0x37c/0x880 [mac80211]
[   50.523504]  ieee80211_open+0x4c/0x68 [mac80211]
[   50.523509]  __dev_open+0xfc/0x1a8
[   50.523509]  __dev_change_flags+0x16c/0x1d0
[   50.523516]  dev_change_flags+0x3c/0x78
[   50.523520]  devinet_ioctl+0x3f0/0x750
[   50.523524]  inet_ioctl+0x208/0x380
[   50.523529]  sock_do_ioctl+0x58/0x2c0
[   50.523533]  sock_ioctl+0x330/0x4d8
[   50.523534]  do_vfs_ioctl+0xc4/0xaa0
[   50.523542]  ksys_ioctl+0x84/0xb8
[   50.523545]  __arm64_sys_ioctl+0x28/0xc8
[   50.523550]  el0_svc_common.constprop.1+0x98/0x1a0
[   50.523554]  el0_svc_handler+0x34/0xa0
[   50.523560]  el0_svc+0x8/0x204
[   50.523610] iwlwifi 0000:01:00.0: Failed to configure RX queues: -5
[   50.523615] iwlwifi 0000:01:00.0: Firmware not running - cannot dump error
[   50.895687] iwlwifi 0000:01:00.0: Microcode SW error detected.  Restarting 0x2000000.
[   50.895816] iwlwifi 0000:01:00.0: Start IWL Error Log Dump:
[   50.895816] iwlwifi 0000:01:00.0: Status: 0x00000050, count: 6
[   50.895816] iwlwifi 0000:01:00.0: Loaded firmware version: 46.3cfab8da.0
[   50.895830] iwlwifi 0000:01:00.0: 0x00000071 | NMI_INTERRUPT_UMAC_FATAL    
[   50.895830] iwlwifi 0000:01:00.0: 0x00A03EF5 | trm_hw_status0
[   50.895830] iwlwifi 0000:01:00.0: 0x00000000 | trm_hw_status1
[   50.895830] iwlwifi 0000:01:00.0: 0x004FC308 | branchlink2
[   50.895830] iwlwifi 0000:01:00.0: 0x004E8926 | interruptlink1
[   50.895830] iwlwifi 0000:01:00.0: 0x004E8926 | interruptlink2
[   50.895830] iwlwifi 0000:01:00.0: 0x00016F7E | data1
[   50.895830] iwlwifi 0000:01:00.0: 0x00001000 | data2
[   50.895830] iwlwifi 0000:01:00.0: 0xF0000008 | data3
[   50.895830] iwlwifi 0000:01:00.0: 0x00000000 | beacon time
[   50.895830] iwlwifi 0000:01:00.0: 0x0004DEFD | tsf low
[   50.895830] iwlwifi 0000:01:00.0: 0x00000000 | tsf hi
[   50.895876] iwlwifi 0000:01:00.0: 0x00000000 | time gp1
[   50.895876] iwlwifi 0000:01:00.0: 0x0004DEFD | time gp2
[   50.895876] iwlwifi 0000:01:00.0: 0x00000001 | uCode revision type
[   50.895876] iwlwifi 0000:01:00.0: 0x0000002E | uCode version major
[   50.895876] iwlwifi 0000:01:00.0: 0x3CFAB8DA | uCode version minor
[   50.895876] iwlwifi 0000:01:00.0: 0x00000340 | hw version
[   50.895876] iwlwifi 0000:01:00.0: 0x18C89000 | board version
[   50.895876] iwlwifi 0000:01:00.0: 0x800BF500 | hcmd
[   50.895876] iwlwifi 0000:01:00.0: 0x80120000 | isr0
[   50.895913] iwlwifi 0000:01:00.0: 0x00000000 | isr1
[   50.895913] iwlwifi 0000:01:00.0: 0x08F00002 | isr2
[   50.895913] iwlwifi 0000:01:00.0: 0x00C0000C | isr3
[   50.895913] iwlwifi 0000:01:00.0: 0x00000000 | isr4
[   50.895929] iwlwifi 0000:01:00.0: 0x00000000 | last cmd Id
[   50.895929] iwlwifi 0000:01:00.0: 0x00016F7E | wait_event
[   50.895929] iwlwifi 0000:01:00.0: 0x00000000 | l2p_control
[   50.895929] iwlwifi 0000:01:00.0: 0x00002820 | l2p_duration
[   50.895929] iwlwifi 0000:01:00.0: 0x00000000 | l2p_mhvalid
[   50.895929] iwlwifi 0000:01:00.0: 0x00000000 | l2p_addr_match
[   50.895951] iwlwifi 0000:01:00.0: 0x00000009 | lmpm_pmg_sel
[   50.895956] iwlwifi 0000:01:00.0: 0x16042142 | timestamp
[   50.895956] iwlwifi 0000:01:00.0: 0x00000028 | flow_handler
[   50.895986] iwlwifi 0000:01:00.0: Start IWL Error Log Dump:
[   50.895986] iwlwifi 0000:01:00.0: Status: 0x00000050, count: 7
[   50.895986] iwlwifi 0000:01:00.0: 0x20000034 | NMI_INTERRUPT_WDG
[   50.895986] iwlwifi 0000:01:00.0: 0x00000000 | umac branchlink1
[   50.895986] iwlwifi 0000:01:00.0: 0xC008B1C0 | umac branchlink2
[   50.895986] iwlwifi 0000:01:00.0: 0x8048BC5C | umac interruptlink1
[   50.895986] iwlwifi 0000:01:00.0: 0xC0084264 | umac interruptlink2
[   50.895986] iwlwifi 0000:01:00.0: 0x00000004 | umac data1
[   50.895986] iwlwifi 0000:01:00.0: 0xC0084264 | umac data2
[   50.895986] iwlwifi 0000:01:00.0: 0xDEADBEEF | umac data3
[   50.895986] iwlwifi 0000:01:00.0: 0x0000002E | umac major
[   50.895986] iwlwifi 0000:01:00.0: 0x3CFAB8DA | umac minor
[   50.895986] iwlwifi 0000:01:00.0: 0x0004DEE6 | frame pointer
[   50.895986] iwlwifi 0000:01:00.0: 0xC08869B4 | stack pointer
[   50.895986] iwlwifi 0000:01:00.0: 0x0005050D | last host cmd
[   50.895986] iwlwifi 0000:01:00.0: 0x00000000 | isr status reg
[   50.896122] iwlwifi 0000:01:00.0: Fseq Registers:
[   50.896122] iwlwifi 0000:01:00.0: 0xE0000000 | FSEQ_ERROR_CODE
[   50.896131] iwlwifi 0000:01:00.0: 0x80290001 | FSEQ_TOP_INIT_VERSION
[   50.896131] iwlwifi 0000:01:00.0: 0x80050008 | FSEQ_CNVIO_INIT_VERSION
[   50.896131] iwlwifi 0000:01:00.0: 0x0000A503 | FSEQ_OTP_VERSION
[   50.896131] iwlwifi 0000:01:00.0: 0x80000003 | FSEQ_TOP_CONTENT_VERSION
[   50.896131] iwlwifi 0000:01:00.0: 0x4552414E | FSEQ_ALIVE_TOKEN
[   50.896131] iwlwifi 0000:01:00.0: 0x00100530 | FSEQ_CNVI_ID
[   50.896161] iwlwifi 0000:01:00.0: 0x00000532 | FSEQ_CNVR_ID
[   50.896161] iwlwifi 0000:01:00.0: 0x00100530 | CNVI_AUX_MISC_CHIP
[   50.896161] iwlwifi 0000:01:00.0: 0x00000532 | CNVR_AUX_MISC_CHIP
[   50.896177] iwlwifi 0000:01:00.0: 0x05B0905B | CNVR_SCU_SD_REGS_SD_REG_DIG_DCDC_VTRIM
[   50.896177] iwlwifi 0000:01:00.0: 0x0000025B | CNVR_SCU_SD_REGS_SD_REG_ACTIVE_VDIG_MIRROR
[   50.896189] iwlwifi 0000:01:00.0: Firmware error during reconfiguration - reprobe!
[   50.896216] iwlwifi 0000:01:00.0: FW error in SYNC CMD RFH_QUEUE_CONFIG_CMD
[   50.896227] CPU: 0 PID: 618 Comm: wpa_supplicant Tainted: G         C        5.4.75-v8+ #4
[   50.896227] Hardware name: Raspberry Pi Compute Module 4 Rev 1.0 (DT)
[   50.896234] Call trace:
[   50.896245]  dump_backtrace+0x0/0x148
[   50.896245] iwlwifi 0000:01:00.0: LED command failed: -5
[   50.896251]  show_stack+0x24/0x30
[   50.896251]  dump_stack+0xdc/0x158
[   50.896294]  iwl_trans_pcie_gen2_send_hcmd+0x490/0x498 [iwlwifi]
[   50.896305]  iwl_trans_send_cmd+0x68/0x108 [iwlwifi]
[   50.896318] iwlwifi 0000:01:00.0: LED command failed: -5
[   50.896341]  iwl_mvm_send_cmd+0x28/0x50 [iwlmvm]
[   50.896361]  iwl_configure_rxq+0x104/0x170 [iwlmvm]
[   50.896376]  iwl_mvm_up+0x3ec/0x698 [iwlmvm]
[   50.896391]  __iwl_mvm_mac_start+0x34/0x210 [iwlmvm]
[   50.896404]  iwl_mvm_mac_start+0x34/0x50 [iwlmvm]
[   50.896484]  drv_start+0x44/0x1c8 [mac80211]
[   50.896514]  ieee80211_do_open+0x37c/0x880 [mac80211]
[   50.896551]  ieee80211_open+0x4c/0x68 [mac80211]
[   50.896554]  __dev_open+0xfc/0x1a8
[   50.896557]  __dev_change_flags+0x16c/0x1d0
[   50.896562]  dev_change_flags+0x3c/0x78
[   50.896562]  devinet_ioctl+0x3f0/0x750
[   50.896562]  inet_ioctl+0x208/0x380
[   50.896562]  sock_do_ioctl+0x58/0x2c0
[   50.896562]  sock_ioctl+0x330/0x4d8
[   50.896562]  do_vfs_ioctl+0xc4/0xaa0
[   50.896586]  ksys_ioctl+0x84/0xb8
[   50.896586]  __arm64_sys_ioctl+0x28/0xc8
[   50.896586]  el0_svc_common.constprop.1+0x98/0x1a0
[   50.896586]  el0_svc_handler+0x34/0xa0
[   50.896586]  el0_svc+0x8/0x204
[   50.898495] iwlwifi 0000:01:00.0: Failed to configure RX queues: -5
[   51.002010] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-cc-a0-50.ucode failed with error -2
[   51.002036] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-cc-a0-49.ucode failed with error -2
[   51.002047] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-cc-a0-48.ucode failed with error -2
[   51.002075] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-cc-a0-47.ucode failed with error -2
[   51.006742] iwlwifi 0000:01:00.0: loaded firmware version 46.3cfab8da.0 op_mode iwlmvm
[   51.007659] iwlwifi 0000:01:00.0: Detected Intel(R) Wi-Fi 6 AX200 160MHz, REV=0x340
[   51.166347] iwlwifi 0000:01:00.0: base HW address: e0:d4:e8:49:ff:e8
[   51.180362] thermal thermal_zone1: failed to read out thermal zone (-61)
[   51.598815] iwlwifi 0000:01:00.0: Microcode SW error detected.  Restarting 0x2000000.

@geerlingguy
Copy link
Owner Author

First see:

[   50.097951] thermal thermal_zone1: failed to read out thermal zone (-61)

And just noting:

$ grep . /sys/class/thermal/*/*
/sys/class/thermal/thermal_zone0/available_policies:step_wise 
grep: /sys/class/thermal/thermal_zone0/hwmon0: Is a directory
/sys/class/thermal/thermal_zone0/integral_cutoff:0
/sys/class/thermal/thermal_zone0/k_d:0
/sys/class/thermal/thermal_zone0/k_i:0
/sys/class/thermal/thermal_zone0/k_po:0
/sys/class/thermal/thermal_zone0/k_pu:0
/sys/class/thermal/thermal_zone0/mode:enabled
/sys/class/thermal/thermal_zone0/offset:410040
/sys/class/thermal/thermal_zone0/passive:0
/sys/class/thermal/thermal_zone0/policy:step_wise
grep: /sys/class/thermal/thermal_zone0/power: Is a directory
/sys/class/thermal/thermal_zone0/slope:-487
grep: /sys/class/thermal/thermal_zone0/subsystem: Is a directory
/sys/class/thermal/thermal_zone0/sustainable_power:0
/sys/class/thermal/thermal_zone0/temp:46251
/sys/class/thermal/thermal_zone0/type:cpu-thermal

lol, there's an open bug from a few years back for this thermal issue: https://bugzilla.kernel.org/show_bug.cgi?id=201761

But moving on, I also see:

$ iw list
Wiphy phy288
  max # scan SSIDs: 20
  max scan IEs length: 365 bytes
  max # sched scan SSIDs: 20
  max # match sets: 11
  max # scan plans: 2
  max scan plan interval: 65535
  max scan plan iterations: 254
  Retry short limit: 7
  Retry long limit: 4
  Coverage class: 0 (up to 0m)
  Device supports RSN-IBSS.
  Device supports AP-side u-APSD.
  Device supports T-DLS.
  Supported Ciphers:
    * WEP40 (00-0f-ac:1)
    * WEP104 (00-0f-ac:5)
    * TKIP (00-0f-ac:2)
    * CCMP-128 (00-0f-ac:4)
    * GCMP-128 (00-0f-ac:8)
    * GCMP-256 (00-0f-ac:9)
    * CMAC (00-0f-ac:6)
    * GMAC-128 (00-0f-ac:11)
    * GMAC-256 (00-0f-ac:12)
  Available Antennas: TX 0 RX 0
  Supported interface modes:
     * IBSS
     * managed
     * AP
     * AP/VLAN
     * monitor
     * P2P-client
     * P2P-GO
     * P2P-device
  Band 1:
    Capabilities: 0x19ef
      RX LDPC
      HT20/HT40
      SM Power Save disabled
      RX HT20 SGI
      RX HT40 SGI
      TX STBC
      RX STBC 1-stream
      Max AMSDU length: 7935 bytes
      DSSS/CCK HT40
    Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
    Minimum RX AMPDU time spacing: 4 usec (0x05)
    HT Max RX data rate: 300 Mbps
    HT TX/RX MCS rate indexes supported: 0-15
    Bitrates (non-HT):
      * 1.0 Mbps
      * 2.0 Mbps (short preamble supported)
      * 5.5 Mbps (short preamble supported)
      * 11.0 Mbps (short preamble supported)
      * 6.0 Mbps
      * 9.0 Mbps
      * 12.0 Mbps
      * 18.0 Mbps
      * 24.0 Mbps
      * 36.0 Mbps
      * 48.0 Mbps
      * 54.0 Mbps
    Frequencies:
      * 2412 MHz [1] (22.0 dBm)
      * 2417 MHz [2] (22.0 dBm)
      * 2422 MHz [3] (22.0 dBm)
      * 2427 MHz [4] (22.0 dBm)
      * 2432 MHz [5] (22.0 dBm)
      * 2437 MHz [6] (22.0 dBm)
      * 2442 MHz [7] (22.0 dBm)
      * 2447 MHz [8] (22.0 dBm)
      * 2452 MHz [9] (22.0 dBm)
      * 2457 MHz [10] (22.0 dBm)
      * 2462 MHz [11] (22.0 dBm)
      * 2467 MHz [12] (22.0 dBm)
      * 2472 MHz [13] (22.0 dBm)
      * 2484 MHz [14] (22.0 dBm)
  Band 2:
    Capabilities: 0x19ef
      RX LDPC
      HT20/HT40
      SM Power Save disabled
      RX HT20 SGI
      RX HT40 SGI
      TX STBC
      RX STBC 1-stream
      Max AMSDU length: 7935 bytes
      DSSS/CCK HT40
    Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
    Minimum RX AMPDU time spacing: 4 usec (0x05)
    HT Max RX data rate: 300 Mbps
    HT TX/RX MCS rate indexes supported: 0-15
    VHT Capabilities (0x039071f6):
      Max MPDU length: 11454
      Supported Channel Width: 160 MHz
      RX LDPC
      short GI (80 MHz)
      short GI (160/80+80 MHz)
      TX STBC
      SU Beamformee
      MU Beamformee
    VHT RX MCS set:
      1 streams: MCS 0-9
      2 streams: MCS 0-9
      3 streams: not supported
      4 streams: not supported
      5 streams: not supported
      6 streams: not supported
      7 streams: not supported
      8 streams: not supported
    VHT RX highest supported: 0 Mbps
    VHT TX MCS set:
      1 streams: MCS 0-9
      2 streams: MCS 0-9
      3 streams: not supported
      4 streams: not supported
      5 streams: not supported
      6 streams: not supported
      7 streams: not supported
      8 streams: not supported
    VHT TX highest supported: 0 Mbps
    Bitrates (non-HT):
      * 6.0 Mbps
      * 9.0 Mbps
      * 12.0 Mbps
      * 18.0 Mbps
      * 24.0 Mbps
      * 36.0 Mbps
      * 48.0 Mbps
      * 54.0 Mbps
    Frequencies:
      * 5180 MHz [36] (22.0 dBm)
      * 5200 MHz [40] (22.0 dBm)
      * 5220 MHz [44] (22.0 dBm)
      * 5240 MHz [48] (22.0 dBm)
      * 5260 MHz [52] (22.0 dBm)
      * 5280 MHz [56] (22.0 dBm)
      * 5300 MHz [60] (22.0 dBm)
      * 5320 MHz [64] (22.0 dBm)
      * 5340 MHz [68] (22.0 dBm)
      * 5360 MHz [72] (22.0 dBm)
      * 5380 MHz [76] (22.0 dBm)
      * 5400 MHz [80] (22.0 dBm)
      * 5420 MHz [84] (22.0 dBm)
      * 5440 MHz [88] (22.0 dBm)
      * 5460 MHz [92] (22.0 dBm)
      * 5480 MHz [96] (22.0 dBm)
      * 5500 MHz [100] (22.0 dBm)
      * 5520 MHz [104] (22.0 dBm)
      * 5540 MHz [108] (22.0 dBm)
      * 5560 MHz [112] (22.0 dBm)
      * 5580 MHz [116] (22.0 dBm)
      * 5600 MHz [120] (22.0 dBm)
      * 5620 MHz [124] (22.0 dBm)
      * 5640 MHz [128] (22.0 dBm)
      * 5660 MHz [132] (22.0 dBm)
      * 5680 MHz [136] (22.0 dBm)
      * 5700 MHz [140] (22.0 dBm)
      * 5720 MHz [144] (22.0 dBm)
      * 5745 MHz [149] (22.0 dBm)
      * 5765 MHz [153] (22.0 dBm)
      * 5785 MHz [157] (22.0 dBm)
      * 5805 MHz [161] (22.0 dBm)
      * 5825 MHz [165] (22.0 dBm)
      * 5845 MHz [169] (22.0 dBm)
      * 5865 MHz [173] (22.0 dBm)
      * 5885 MHz [177] (22.0 dBm)
      * 5905 MHz [181] (22.0 dBm)
  Supported commands:
     * new_interface
     * set_interface
     * new_key
     * start_ap
     * new_station
     * new_mpath
     * set_mesh_config
     * set_bss
     * authenticate
     * associate
     * deauthenticate
     * disassociate
     * join_ibss
     * join_mesh
     * remain_on_channel
     * set_tx_bitrate_mask
     * frame
     * frame_wait_cancel
     * set_wiphy_netns
     * set_channel
     * set_wds_peer
     * tdls_mgmt
     * tdls_oper
     * start_sched_scan
     * probe_client
     * set_noack_map
     * register_beacons
     * start_p2p_device
     * set_mcast_rate
     * connect
     * disconnect
     * channel_switch
     * set_qos_map
     * add_tx_ts
     * set_multicast_to_unicast
  Supported TX frame types:
     * IBSS: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
     * managed: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
     * AP: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
     * AP/VLAN: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
     * mesh point: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
     * P2P-client: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
     * P2P-GO: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
     * P2P-device: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
  Supported RX frame types:
     * IBSS: 0x40 0xb0 0xc0 0xd0
     * managed: 0x40 0xd0
     * AP: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
     * AP/VLAN: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
     * mesh point: 0xb0 0xc0 0xd0
     * P2P-client: 0x40 0xd0
     * P2P-GO: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
     * P2P-device: 0x40 0xd0
  software interface modes (can always be added):
     * AP/VLAN
     * monitor
  valid interface combinations:
     * #{ managed } <= 1, #{ AP, P2P-client, P2P-GO } <= 1, #{ P2P-device } <= 1,
       total <= 3, #channels <= 2
  HT Capability overrides:
     * MCS: ff ff ff ff ff ff ff ff ff ff
     * maximum A-MSDU length
     * supported channel width
     * short GI for 40 MHz
     * max A-MPDU length exponent
     * min MPDU start spacing
  Device supports TX status socket option.
  Device supports HT-IBSS.
  Device supports SAE with AUTHENTICATE command
  Device supports low priority scan.
  Device supports scan flush.
  Device supports per-vif TX power setting
  P2P GO supports CT window setting
  P2P GO supports opportunistic powersave setting
  Driver supports full state transitions for AP/GO clients
  Driver supports a userspace MPM
  Driver/device bandwidth changes during BSS lifetime (AP/GO mode)
  Device adds DS IE to probe requests
  Device can update TPC Report IE
  Device supports static SMPS
  Device supports dynamic SMPS
  Device supports WMM-AC admission (TSPECs)
  Device supports configuring vdev MAC-addr on create.
  Device supports randomizing MAC-addr in scans.
  Device supports randomizing MAC-addr in sched scans.
  Device supports randomizing MAC-addr in net-detect scans.
  Supported extended features:
    * [ VHT_IBSS ]: VHT-IBSS
    * [ RRM ]: RRM
    * [ MU_MIMO_AIR_SNIFFER ]: MU-MIMO sniffer
    * [ SCAN_START_TIME ]: scan start timestamp
    * [ BSS_PARENT_TSF ]: BSS last beacon/probe TSF
    * [ SET_SCAN_DWELL ]: scan dwell setting
    * [ FILS_STA ]: STA FILS (Fast Initial Link Setup)
    * [ CONTROL_PORT_OVER_NL80211 ]: control port over nl80211
    * [ TXQS ]: FQ-CoDel-enabled intermediate TXQs

@geerlingguy
Copy link
Owner Author

ip address shows:

443: wlan1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether e0:d4:e8:49:ff:e8 brd ff:ff:ff:ff:ff:ff

And every time the driver resets itself, it increments (now it's up to 464... waiting a few seconds, now it's 482...)

@geerlingguy
Copy link
Owner Author

Related? QubesOS/qubes-issues#5615

@geerlingguy
Copy link
Owner Author

geerlingguy commented Nov 13, 2020

Maybe this patch will help—that's where the error is coming from, anyways... https://lore.kernel.org/linux-wireless/3cab5072-17a2-4d9a-2077-93788971c6c4@invisiblethingslab.com/T/#u

diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
index 98263cd37944..943831c9b685 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
@@ -1111,15 +1111,6 @@ int iwl_mvm_up(struct iwl_mvm *mvm)
 		goto error;

 	/* Init RSS configuration */
-	if (mvm->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_22000) {
-		ret = iwl_configure_rxq(mvm);
-		if (ret) {
-			IWL_ERR(mvm, "Failed to configure RX queues: %d\n",
-				ret);
-			goto error;
-		}
-	}
-
 	if (iwl_mvm_has_new_rx_api(mvm)) {
 		ret = iwl_send_rss_cfg_cmd(mvm);
 		if (ret) {

@geerlingguy
Copy link
Owner Author

geerlingguy commented Nov 13, 2020

In my cross-compile environment:

$ nano iwlwifi.patch
(paste in contents of the previous comment patch)

$ git apply -v iwlwifi.patch
Checking patch drivers/net/wireless/intel/iwlwifi/mvm/fw.c...
Hunk #1 succeeded at 1367 (offset 256 lines).
Applied patch drivers/net/wireless/intel/iwlwifi/mvm/fw.c cleanly.

Note: that patch causes the following warning to emit during compilation:

  CC [M]  drivers/net/wireless/intel/iwlwifi/mvm/fw.o
drivers/net/wireless/intel/iwlwifi/mvm/fw.c:128:12: warning: ‘iwl_configure_rxq’ defined but not used [-Wunused-functio]
 static int iwl_configure_rxq(struct iwl_mvm *mvm)
            ^~~~~~~~~~~~~~~~~

Recompiling the kernel the 18th time this week :D

@geerlingguy
Copy link
Owner Author

Well heck. What do you know?

$ dmesg
[   39.933592] Intel(R) Wireless WiFi driver for Linux
[   39.933606] Copyright(c) 2003- 2015 Intel Corporation
[   39.933984] pci 0000:00:00.0: enabling device (0000 -> 0002)
[   39.934010] iwlwifi 0000:01:00.0: enabling device (0000 -> 0002)
[   39.937178] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-cc-a0-50.ucode failed with error -2
[   39.937242] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-cc-a0-49.ucode failed with error -2
[   39.937298] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-cc-a0-48.ucode failed with error -2
[   39.937348] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-cc-a0-47.ucode failed with error -2
[   39.966176] iwlwifi 0000:01:00.0: loaded firmware version 46.3cfab8da.0 op_mode iwlmvm
[   40.069057] iwlwifi 0000:01:00.0: Detected Intel(R) Wi-Fi 6 AX200 160MHz, REV=0x340
[   40.234560] iwlwifi 0000:01:00.0: base HW address: e0:d4:e8:49:ff:e8
[   40.259091] thermal thermal_zone1: failed to read out thermal zone (-61)

And:

$ ip addr
4: wlan1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether e0:d4:e8:49:ff:e8 brd ff:ff:ff:ff:ff:ff

The Pi seems much happier. Now, to connect to my WiFi...

@geerlingguy
Copy link
Owner Author

Hmm... this isn't super encouraging though:

root@raspberrypi:/home/pi# wpa_cli
wpa_cli v2.8-devel
Copyright (c) 2004-2019, Jouni Malinen <j@w1.fi> and contributors

This software may be distributed under the terms of the BSD license.
See README for more details.


Selected interface 'p2p-dev-wlan1'

Interactive mode

> scan
OK
> scan_results
bssid / frequency / signal level / flags / ssid
> 

@geerlingguy
Copy link
Owner Author

But... after setting up config in wpa_supplicant.conf, I am seeing:

$ ip addr
...
4: wlan1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether e0:d4:e8:49:ff:e8 brd ff:ff:ff:ff:ff:ff
    inet 10.0.100.211/24 brd 10.0.100.255 scope global dynamic noprefixroute wlan1
       valid_lft 86396sec preferred_lft 75596sec
    inet6 fe80::194d:561c:5428:3250/64 scope link 
       valid_lft forever preferred_lft forever

So... 🤷‍♂️

Let's get some performance testing!

@geerlingguy
Copy link
Owner Author

geerlingguy commented Nov 14, 2020

On the Pi:

$ sudo apt install -y iperf
$ iperf -s

On my Mac:

$ iperf -c 10.0.100.211
------------------------------------------------------------
Client connecting to 10.0.100.211, TCP port 5001
TCP window size:  129 KByte (default)
------------------------------------------------------------
[  4] local 10.0.100.118 port 64560 connected with 10.0.100.211 port 5001
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.0 sec   784 MBytes   658 Mbits/sec

As I used to say in college: "Noice!"

Compared the the maximum 80 Mbits/sec I can get via the CM4's internal WiFi, even with an external antenna... that's rather speedy!

Edit: A few tests:

Run Result
1 658 Mbits/sec
2 686 Mbits/sec
3 666 Mbits/sec
Average 670 Mbits/sec

(For comparison, wired interface gives ~940 Mbits/sec.)

Edit 2: OOH... if I reverse the roles (Pi is client, Mac is server), I can pump through 928 Mbits/sec over WiFi! Nice—that's faster than I can get through my old Mac mini to my new MacBook pro...

Run Result
1 928 Mbits/sec
2 927 Mbits/sec
3 931 Mbits/sec
Average 929 Mbits/sec

@geerlingguy
Copy link
Owner Author

geerlingguy commented Nov 14, 2020

Dangit, now that I finally had some success I should probably make a video about it. But who has the time!?

I think the other thing I want to test and see how it works is using the PCIe splitter/switch with this WiFi card and my Samsung 970 EVO Plus, and see if I can max out the WiFi bandwidth and write a full ~650 Mbps (80 MB/sec) so we could have a worthy little WiFi-only NAS that still competes with a wired NAS (for general usage... not gonna be pumping ProRes RAW through one of these little dudes!).

@geerlingguy
Copy link
Owner Author

atop output while the Pi is running the iperf server:

Screen Shot 2020-11-13 at 6 11 44 PM

So with all the defaults, ~675 Mbps while Pi is doing the serving, ~930 Mbps when not. It's gonna be interesting to see how real-world copies work on this, but I'll have to wait as dinner calls!

@geerlingguy
Copy link
Owner Author

So... I was thinking, "hey, it would be a great idea to test this WiFi card on a real WiFi 6 network, using a router that works with a 10G network interface, allowing me to test the full throughput against my Mac over 10G wired network..."

Then I was glancing around at the (very few, so far) good WiFi 6 ax routers with 10G network ports, and they all cost $450+ and are out of stock pretty much everywhere. I was looking mostly at the ASUS RT-AX89X, mostly because I've stuck with ASUS wireless gear for like 5 years now and never had an issue... but it's out of stock everywhere.

So I'll stick with testing over my ASUS AC2900-based 802.11ac network for now.

I mean, getting 1 gig over my current network is nothing shabby, as that's also probably hitting the max throughput I've seen through two of my Macs (a 2016 MBP and a 2019 MBP) over the same network... Heck, maybe my Mac is the slower of the two devices in terms of raw potential throughput!

All that to say, I think the 'year of WiFi 6' in the Geerling household is not in 2020. Unless maybe I can get ASUS to sponsor a video (a video for a router, eh?).

@PixlRainbow
Copy link

How much would it cost to just have a direct ad-hoc connection between two Wi-Fi 6 clients, instead of buying a router?

@geerlingguy
Copy link
Owner Author

@PixlRainbow - I've been looking around unsuccessfully—does anyone make a WiFi 6 / ax adapter for ThunderBolt 3, USB-C/3.2, or any other connection besides internal/PCIe?

I don't have any other devices currently that support PCI express :(

@PixlRainbow
Copy link

PixlRainbow commented Nov 15, 2020

Your Mac is a laptop? Or a desktop? I'm guessing it's an older model that doesn't have WiFi 6 built in.
Some laptops and desktops may have a "WiFi card" slot which you may be able to install a WiFi 6 card into. But some newer devices aren't really made to allow end users to open them up and configure their hardware.

Unfortunately, it appears the speed of WiFi 6 doesn't really allow regular USB to be used, and there aren't direct thunderbolt WiFi adapters either, not even for older WiFi standards. I presume the manufacturers are assuming that the general thunderbolt user would already have wifi integrated in their device. I did find thunderbolt to PCIE adapters but they are still quite pricy.

@geerlingguy
Copy link
Owner Author

geerlingguy commented Nov 15, 2020

Both my Mac and Dell are laptops, and I just realized the Dell has a replaceable WiFi module—so I just ordered a AX200NGW Wireless Card in M.2/NGFF, and it's coming tomorrow.

Getting ready to do a little surgery on my XPS 13 again (I upgraded the SSD a couple years ago), and I'll let you know how it goes. It looks like iperf is also available on Windows, so I'll have to see what happens! (Totally unfamiliar with Windows' networking stack since the last time I did anything networking-related was probably around the time Windows NT was the new hotness).

@geerlingguy
Copy link
Owner Author

The card works great! Working on a short video now just to show the process of upgrading the Dell card.

@geerlingguy
Copy link
Owner Author

Upgraded the Dell, made a video: How to Upgrade a Dell XPS 13 to WiFi 6 (802.11ax).

@geerlingguy
Copy link
Owner Author

Heh. This is probably the most expensive of all the tests so far. I figured...

  • I'm going to be upgrading my home network to 10G soon (at least my office drop).
  • I now have two 802.11ax devices.
  • I might as well upgrade my WiFi router for the time when I inevitably get an M1 Mac that has built-in WiFi 6.

So I ran and grabbed an ASUS RT-AX86U AX5700 WiFi 6 router, which is not the top of the heap, and is only dual band... but is better than my older ac router, and has a 2.5 Gbps LAN uplink port (which can be swapped for the WAN port—though here in St. Louis it'll probably be 50 years before we end up getting gigabit ethernet to the home!). I installed it, got it configured, and now I'm planning on doing some more testing from 10G wired to AX wireless on both my Dell laptop and the CM4.

But that has to wait a bit as I'm trying to finish up my NAS explorations with the SATA card first!

@mo-g
Copy link

mo-g commented Nov 22, 2020

This is exceedingly interesting. So - similar to Danish Guy's project, I've also been thinking about how the Pi CM4 and recent kernel patches now make a Pi-based Laptop feasible. This suggests that the best way to implement Wi-Fi on such a device would actually not be through the CM4's SDIO chipset, but through a standard m.2 card.

I guess the ideal approach would be to design the laptop to allow an antenna cable to be routed to either a PCIe card or a Wireless CM4; and offer the former through one of those fancy m.2 slots with three screws that could take anything from a wifi card to an NVMe drive?

@geerlingguy
Copy link
Owner Author

@mo-g yes, I think that would be ideal. Basically give the user some flexibility.

@Dygear
Copy link

Dygear commented Dec 6, 2020

@geerlingguy We need to stop running into each other like this. People will talk.

Yeah, I'm actually having the same problem as you had here but on a Razer Blade Stealth that I'm using while waiting for my System76 laptop be be delivered. I really don't want to have to recompile the Kernel as you had done here. Surely that shouldn't be the solution given the fact that I'm ...

  1. On an x86_64 platform.
  2. Should therefore not have a customer kernel from the Pi foundation that's stripped down.
  3. Did all of the things that you short of recompiling the kernel and yet here I am and it's still not working.
    And yet here I am anyway trying to figure at this problem as well. I don't think the AX200 platform cards are as Linux friendly as they seem to claim.

Will update once I've got this working.

@st0nedB
Copy link

st0nedB commented Dec 13, 2020

Hey, just stumbled across this after watching your latest video! Regarding the testing of raw 802.11ax performance with iperf and ASUS network gear discussed above:
Why not throw Merlin WRT on an ASUS router, enable Entware, then install and run iperf server on the router? This way you could exclude the wired connection (which, as you said, might be a bottleneck).
Just did a quick test with my Phone and RT88AX and got around 900 MBit/s without any further optimizations at a reasonable distance (some meters). Steps are quite simple.

  1. Download and install Merlin WRT [1], which is a simple as upgrading the default Asus firmware.
  2. Plug a USB drive into the router, enable Entware by running the included entware-setup.sh or use amtm maintained by [2] (depending how much extras you want to throw on your router, see below).
  3. Install iperf3 via opkg package manager with opkg install iperf3
  4. Run iperf3 -s, profit!

If you are using Asus network gear, you might be able to make use of some other community-developed tools running directly on the router (adblocking, improved firewalls, ...).

[1] - MerlinWRT
[2] - amtm

@geerlingguy
Copy link
Owner Author

Interesting... after upgrading my router, I retested everything today, and I can get 875-900 Mbps both ways, regardless of which host is the iperf3 server now.

Further testing is warranted—I now have a 10 GbE interface hooked up to my Mac, a 2.5 Gbps connection to my WiFi router, and a 10 GbE switch (though I'm not sure if it can drop to 2.5G on the router connection, so that'll have to be something I test later).

I'm guessing I could push more bandwidth through this card with my new router :-O

@geerlingguy
Copy link
Owner Author

Now that iperf3 has --bidir (see esnet/iperf#780), I should also do a test with that mode: iperf3 -c [ip address] --bidir

@geerlingguy
Copy link
Owner Author

geerlingguy commented Dec 19, 2020

Testing with the Merlin firmware:

  1. Downloaded beta version for AX86U from here: https://www.asuswrt-merlin.net/download
  2. Follow the Installation guide (basically update firmware to the downloaded version).
  3. Restart the router, verify things still work fine.

Screen Shot 2020-12-19 at 7 04 39 PM

Format a USB flash drive to set up Entware:

  1. Enable SSH in the router admin (I disabled password login, did LAN only, and added my pubkey).
  2. Log in with user@[router address]
  3. Make sure a USB flash drive (with nothing on it you care about) is plugged in.
  4. Run entware-setup.sh which runs amtm.
  5. Use option fd to format the attached USB drive.

(After formatting, the router reboots.) Now install Entware so you can install iperf3.

  1. Log back in via SSH.
  2. Run entware-setup.sh which runs amtm.
  3. Install Entware using option et.
  4. Install iperf3 via opkg: opkg install iperf3

Thanks again to @st0nedB for the suggestion! First quick run from my Mac over ac:

$ iperf3 -c 10.0.1.100
...
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec   673 MBytes   565 Mbits/sec                  sender
[  5]   0.00-10.00  sec   672 MBytes   564 Mbits/sec                  receiver

@geerlingguy
Copy link
Owner Author

geerlingguy commented Dec 20, 2020

Hmm... the version installed via opkg is:

# iperf3 --version
iperf 3.1.3

It looks like that's a fairly outdated version though, and doesn't support --bidir.

On my Mac:

$ iperf3 --version
iperf 3.9 (cJSON 1.7.13)

@geerlingguy
Copy link
Owner Author

geerlingguy commented Dec 20, 2020

Regular old iperf allows --dualtest:

$ iperf -c 10.0.100.1 --dualtest
...
[ ID] Interval       Transfer     Bandwidth
[  5]  0.0-10.0 sec  78.4 MBytes  65.5 Mbits/sec
[  7]  0.0-10.1 sec   556 MBytes   463 Mbits/sec

(Just noting these results and the ones above are from my Mac in a non-optimal location; can do better if I'm closer to the router. This is just me debugging the process.)

@geerlingguy
Copy link
Owner Author

geerlingguy commented Dec 20, 2020

On the Pi:

iperf -c 10.0.100.1 --bind 10.0.100.211 --dualtest
...
[ ID] Interval       Transfer     Bandwidth
[  5]  0.0-10.0 sec   265 MBytes   222 Mbits/sec
[  4]  0.0-10.0 sec  1.40 GBytes  1.20 Gbits/sec

iperf3 from Pi to Router: 928 Mbits/sec (with --reverse, 1.34 Gbits/sec)

Monitoring with atop (sudo apt-get install -y atop):

Screen Shot 2020-12-19 at 8 02 05 PM

So the CPU isn't causing any bottleneck—it seems like this card can pump quite a few wireless bits through, beating even my MacBook Pro from a similar range! (The MBP gets ~900 Mbps in the same spot as the Pi).

I'm guessing I could tweak some things, move some things around, and get more, but 1.2+ Gbps on WiFi on the Pi is pretty darn toasty!

@geerlingguy
Copy link
Owner Author

@geerlingguy
Copy link
Owner Author

And a blog post: WiFi 6 gets 1.34 Gbps on the Raspberry Pi CM4.

@christofer-f
Copy link

Hi! I just stumbled over your excellent youtube channel.
I am thinking that it would be really cool to build an open-source python-based system for wifi 6 access points.

So here are my question...
Is it possible to query the wifi 6 card about:

  1. Users connected and there signal strength
  2. Disconnect a user
  3. Connect a user

If so then one could build a wifi system that automatically passes a connected user around between different access points.

Cisco sells these kind of systems so I thought that it would be fun to build an open source version.

I was thinking that you could build a rest like interface with fastapi to run on the rasberry and the control all ap:s from a webserver.

@geerlingguy
Copy link
Owner Author

@christofer-f - It seems the AX200 might not be the best chip for the purpose (though it probably can be made to work). It would be cool to be able to do an open source setup like that, though!

@geerlingguy
Copy link
Owner Author

geerlingguy commented Jan 2, 2021

All right, after going through another round of testing for the Intel AX200 Desktop Kit adapted by the MZHOU WiFi/BT adapter in #38, I'm going to re-run the benchmarks today, this time both with the wired network enabled and disabled, and see what kind of results I get:

First testing with iperf and --dualtest:

$ iperf -c 10.0.100.1 --bind 10.0.100.168 --dualtest
------------------------------------------------------------
Server listening on TCP port 5001
Binding to local address 10.0.100.168
TCP window size:  128 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Client connecting to 10.0.100.1, TCP port 5001
Binding to local address 10.0.100.168
TCP window size:  187 KByte (default)
------------------------------------------------------------
[  5] local 10.0.100.168 port 51947 connected with 10.0.100.1 port 5001
[  4] local 10.0.100.168 port 5001 connected with 10.0.100.1 port 53119
[ ID] Interval       Transfer     Bandwidth
[  5]  0.0-10.0 sec   237 MBytes   198 Mbits/sec
[  4]  0.0-10.0 sec  1.40 GBytes  1.19 Gbits/sec

Then with iperf3:

  • eth0 disabled (sudo ip link set eth0 down):
    • iperf3 from Pi to router: 436 Mbits/sec
    • iperf3 from router to Pi (--reverse): 1.07 Gbits/sec
  • eth0 enabled (sudo ip link set eth0 up):
    • iperf3 from Pi to router: 933 Mbits/sec
    • iperf3 from router to Pi (--reverse): 941 Gbits/sec

So... this card is not breaking the gigabit barrier (except for RX traffic from the router to the Pi), and I think it would be safe to say I can get better speeds than the same card in my Dell XPS 13 (likely due to the larger external antennae), but even my i9 MacBook Pro can get about the same speeds over 802.11ac (again, likely due to it's well-designed antennae).

Oopsie! I'll have to work on a correction video. Don't want to mislead people! See #38 for more speculation and links to reasons why this happened.

@geerlingguy
Copy link
Owner Author

geerlingguy commented Jan 8, 2021

Hmm...

$ iw dev wlan1 info
Interface wlan1
	ifindex 4
	wdev 0x1
	addr e0:d4:e8:49:ff:e8
	ssid geerling-acn
	type managed
	wiphy 0
	channel 149 (5745 MHz), width: 80 MHz, center1: 5775 MHz
	txpower 22.00 dBm
	multicast TXQ:
		qsz-byt	qsz-pkt	flows	drops	marks	overlmt	hashcol	tx-bytes	tx-packets
		0	0	0	0	0	0	0	0		0

It's using 80 MHz, why not 160 MHz?

Source: Dmitri Arekhta's comment indicated I might not be seeing the full potential of the AX200...

@geerlingguy
Copy link
Owner Author

Closing issues where testing is at least mostly complete, to keep the issue queue tidy.

I'm going to move the rest of the testing of the AX200 with 80 vs 160 MHz over to #56.

@lealog
Copy link

lealog commented May 18, 2021

The URL for amazon is not working.

@geerlingguy
Copy link
Owner Author

@lealog - That's weird. Even if I go into my order history on Amazon, and click through the order link, it gives me a Page Not Found... I guess EDUP dropped the card or something :(

@belden
Copy link

belden commented Jan 2, 2024

What a fun repo to have found!

The Amazon link does work again now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

8 participants