Hey,
I had no luck with the "Qu-b0-hr-b0-48" firmware. But if I changed to
"Qu-c0-hr-b0-48" and that seems to work. Here it is the changes I had to do to
get it working. I might have done something wrong here so please point it out
to me.
Index: if_iwx.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/if_iwx.c,v
retrieving revision 1.49
diff -u -p -u -p -r1.49 if_iwx.c
--- if_iwx.c 17 Jan 2021 14:24:00 -0000 1.49
+++ if_iwx.c 28 Feb 2021 07:18:44 -0000
@@ -7710,6 +7710,7 @@ static const struct pci_matchid iwx_devi
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_WL_22500_1 },
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_WL_22500_2 },
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_WL_22500_3 },
+ { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_WL_22500_4,},
};
static const struct pci_matchid iwx_subsystem_id_ax201[] = {
@@ -7749,6 +7750,7 @@ iwx_match(struct device *parent, iwx_mat
return 1; /* match any device */
case PCI_PRODUCT_INTEL_WL_22500_2: /* AX201 */
case PCI_PRODUCT_INTEL_WL_22500_3: /* AX201 */
+ case PCI_PRODUCT_INTEL_WL_22500_4: /* AX201 */
for (i = 0; i < nitems(iwx_subsystem_id_ax201); i++) {
if (svid == iwx_subsystem_id_ax201[i].pm_vid &&
spid == iwx_subsystem_id_ax201[i].pm_pid)
@@ -7951,6 +7953,17 @@ iwx_attach(struct device *parent, struct
sc->sc_tx_with_siso_diversity = 0;
sc->sc_uhb_supported = 0;
break;
+ case PCI_PRODUCT_INTEL_WL_22500_4:
+ sc->sc_fwname = "iwx-Qu-c0-hr-b0-48";
+ sc->sc_device_family = IWX_DEVICE_FAMILY_22000;
+ sc->sc_fwdmasegsz = IWX_FWDMASEGSZ_8000;
+ sc->sc_integrated = 1;
+ sc->sc_ltr_delay = IWX_SOC_FLAGS_LTR_APPLY_DELAY_200;
+ sc->sc_low_latency_xtal = 0;
+ sc->sc_xtal_latency = 5000;
+ sc->sc_tx_with_siso_diversity = 0;
+ sc->sc_uhb_supported = 0;
+ break;
default:
printf("%s: unknown adapter type\n", DEVNAME(sc));
return;
Index: pcidevs
===================================================================
RCS file: /cvs/src/sys/dev/pci/pcidevs,v
retrieving revision 1.1959
diff -u -p -u -p -r1.1959 pcidevs
--- pcidevs 27 Feb 2021 03:00:54 -0000 1.1959
+++ pcidevs 28 Feb 2021 07:18:44 -0000
@@ -5942,6 +5942,7 @@ product INTEL 500SERIES_LP_XHCI 0xa0ed 5
product INTEL 500SERIES_LP_XDCI 0xa0ee 500 Series xDCI
product INTEL 500SERIES_LP_SRAM 0xa0ef 500 Series Shared SRAM
product INTEL WL_22500_3 0xa0f0 Wi-Fi 6 AX201
+product INTEL WL_22500_4 0x34f0 Killer Wi-Fi AX1650i (201NGW)
product INTEL 500SERIES_LP_GSPI_3 0xa0fb 500 Series GSPI
product INTEL 500SERIES_LP_ISH 0xa0fc 500 Series ISH
product INTEL 500SERIES_LP_GSPI_4 0xa0fd 500 Series GSPI
Index: pcidevs.h
===================================================================
RCS file: /cvs/src/sys/dev/pci/pcidevs.h,v
retrieving revision 1.1953
diff -u -p -u -p -r1.1953 pcidevs.h
--- pcidevs.h 27 Feb 2021 03:01:25 -0000 1.1953
+++ pcidevs.h 28 Feb 2021 07:18:44 -0000
@@ -5947,6 +5947,7 @@
#define PCI_PRODUCT_INTEL_500SERIES_LP_XDCI 0xa0ee /* 500
Series xDCI */
#define PCI_PRODUCT_INTEL_500SERIES_LP_SRAM 0xa0ef /* 500
Series Shared SRAM */
#define PCI_PRODUCT_INTEL_WL_22500_3 0xa0f0 /* Wi-Fi 6
AX201 */
+#define PCI_PRODUCT_INTEL_WL_22500_4 0x34f0 /* Killer Wi-Fi
6 AX16501i (201NGW) */
#define PCI_PRODUCT_INTEL_500SERIES_LP_GSPI_3 0xa0fb /* 500
Series GSPI */
#define PCI_PRODUCT_INTEL_500SERIES_LP_ISH 0xa0fc /* 500
Series ISH */
#define PCI_PRODUCT_INTEL_500SERIES_LP_GSPI_4 0xa0fd /* 500
Series GSPI */
Index: pcidevs_data.h
===================================================================
RCS file: /cvs/src/sys/dev/pci/pcidevs_data.h,v
retrieving revision 1.1948
diff -u -p -u -p -r1.1948 pcidevs_data.h
--- pcidevs_data.h 27 Feb 2021 03:01:25 -0000 1.1948
+++ pcidevs_data.h 28 Feb 2021 07:18:45 -0000
@@ -21208,6 +21208,10 @@ static const struct pci_known_product pc
"500 Series Shared SRAM",
},
{
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_WL_22500_4,
+ "Killer Wi-Fi 6 AX1650i (201NGW)",
+ },
+ {
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_WL_22500_3,
"Wi-Fi 6 AX201",
},
On Fri, Feb 5, 2021 at 3:12 PM Stefan Sperling <[email protected]> wrote:
On Fri, Feb 05, 2021 at 11:38:24AM +0100, Fredrik Engberg wrote:
> Hey
>
> I got myself a Surface Pro 7 and thought it had a supported AX201 wifi chip
> in it but after some looking around in the source I couldn’t find the device
> ID in there so I tried myself to add it to pcidevs and pcidevs.h.
> I also added the pci_products to if_iwx.c and pcidevs_data.h. I got it to
> show up in dmesg. But I get “iwx0: unsupported AX201 adapter". I think Im in
> a bit of deep water here and my knowledge is to low for it. Im wondering if
> someone else has gotten this AX1650 card to work?
>
> Here is pcidump from the machine:
>
> 0:20:3: Intel unknown
> 0x0000: Vendor ID: 8086, Product ID: 34f0
> 0x0004: Command: 0006, Status: 0010
> 0x0008: Class: 02 Network, Subclass: 80 Miscellaneous,
> Interface: 00, Revision: 30
> 0x000c: BIST: 00, Header Type: 80, Latency Timer: 00,
> Cache Line Size: 00
> 0x0010: BAR mem 64bit addr: 0x0000006002134000/0x00004000
> 0x0018: BAR empty (00000000)
> 0x001c: BAR empty (00000000)
> 0x0020: BAR empty (00000000)
> 0x0024: BAR empty (00000000)
> 0x0028: Cardbus CIS: 00000000
> 0x002c: Subsystem Vendor ID: 8086 Product ID: 0074
> 0x0030: Expansion ROM Base Address: 00000000
> 0x0038: 00000000
> 0x003c: Interrupt Pin: 01 Line: ff Min Gnt: 00 Max Lat: 00
> 0x00c8: Capability 0x01: Power Management
> State: D0
> 0x00d0: Capability 0x05: Message Signalled Interrupts (MSI)
> Enabled: no
> 0x0040: Capability 0x10: PCI Express
> Max Payload Size: 128 / 128 bytes
> Max Read Request Size: 128 bytes
> 0x0100: Enhanced Capability 0x18: Latency Tolerance Reporting
> 0x0164: Enhanced Capability 0x0b: Vendor-Specific
> 0x0080: Capability 0x11: Extended Message Signalled Interrupts (MSI-X)
> Enabled: yes; table size 16 (BAR 0:8192)
>
>
> //Fredrik Engberg
>
>
This device needs firmware "Qu-b0-hr-b0-48"
You can find the firmware image here:
https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
The iwx driver will need corresponding changes to detect your device
and load this specific firmware image. Then it will hopefully work.