Re: Intel Wi-Fi: scope of iwx(4) on FreeBSD

From: <ltning-freebsd-wireless_at_anduin.net>
Date: Tue, 01 Apr 2025 11:51:07 UTC
Tested this on my Framework 13 (Intel) yesterday. Driver binds to the 
card but cannot find/load the firmware, despite iwlwifi firmwares being 
installed.

On first try, it's clear that the file does not exist (checked 
/boot/firmware):

iwx0: <Wi-Fi 6 AX210> mem 0x7a200000-0x7a203fff at device 0.0 on pci2
iwlwifi-so-a0-gf-a0-77.ucode: could not load firmware image, error 2
iwx0: could not read firmware iwlwifi-so-a0-gf-a0-77.ucode
iwx0: failed to load init firmware
iwx0: failed to stop device

I then copied the firmware from the OpenBSD package, and renamed to 
iwlwifi and added a .ucode suffix (no idea if it was the correct file):

iwx0: <Wi-Fi 6 AX210> mem 0x7a200000-0x7a203fff at device 0.0 on pci2
iwlwifi-so-a0-gf-a0-77.ucode: could not load firmware image, error 8
iwx0: could not load firmware, 35
iwx0: failed to load init firmware
iwx0: failed to stop device

After a few attempts at this, I gave up and reverted to iwlwifi (which 
gave me a whole new set of headaches since I can no longer disable 
HT/VHT, so I have to cold reboot every few hours to restore network).

It's gotta get worse before it gets better, I'm told ;)

/Eirik

On 01.04.2025 13:23, Tomoaki AOKI wrote:
> Hi.
> 
> For firmwares, IIUC, iwx seems to be sharing them with iwlwifi, looking
> into its commit messages.
> 
>    https://cgit.freebsd.org/ports/commit/net/wifi-firmware-iwlwifi-kmod?id=ef3fa2a325a592baa6573782a72cf0d833589ffa
> 
> And looking into sys/dev/iwx/if_iwx.c in D49259, especially around the
> definition of the array iwx_devices[] (struct iwx_devices) around line
> 217 (198 through 238 including #define's), only AX200, 201 and 211
> including their variants seems to be supported.
> 
> And I don't have AX series of WiFi chips/cards, so cannot test.
> 
> 
> On Tue, 01 Apr 2025 10:40:20 +0000
> Jonathan Vasquez <jon@xyinn.org> wrote:
> 
>> Hey Graham,
>>
>> I haven't tested this but I see in the code review page that you need to grab and install openbsd's firmware for iwx. See if it works after installing them.
>>
>> https://reviews.freebsd.org/D49259
>>
>> Jonathan Vasquez
>> PGP: 34DA 858C 1447 509E C77A  D49F FB85 90B7 C4CA 5279
>> Sent with ProtonMail Secure Email
>>
>>
>> -------- Original Message --------
>> On 4/1/25 01:37, Graham Perrin <grahamperrin@gmail.com> wrote:
>>
>>>   Yesterday's
>>>   <https://github.com/freebsd/freebsd-src/commit/2ad0f7e91582dde5475ceb1a1942930549e5c628>
>>>   mentions support for many recent cards.
>>>   
>>>   Should we assume that all less recent hardware is out of scope?
>>>   
>>>   Alternatively, is my rc.conf file mis-configured? The wlan4 lines below.
>>>   
>>>   Thanks
>>>   
>>>   
>>>   root@mowa219-gjp4-zbook-freebsd:~ # sysrc devmatch_blocklist
>>>   devmatch_blocklist: i915kms if_iwlwifi iwm
>>>   root@mowa219-gjp4-zbook-freebsd:~ # kldload iwx
>>>   kldload: can't load iwx: No such file or directory
>>>   root@mowa219-gjp4-zbook-freebsd:~ # ls -hln /boot/kernel/*iwx*
>>>   -r--r--r--  1 0 0  227K Mar 31 22:01 /boot/kernel/if_iwx.ko
>>>   root@mowa219-gjp4-zbook-freebsd:~ # kldload if_iwx
>>>   kldload: can't load if_iwx: module already loaded or in kernel
>>>   root@mowa219-gjp4-zbook-freebsd:~ # ifconfig iwx0
>>>   ifconfig: interface iwx0 does not exist
>>>   root@mowa219-gjp4-zbook-freebsd:~ # grep wlan4 /etc/rc.conf
>>>   wlans_iwx0="wlan4"
>>>   create_args_wlan4="wlanmode sta country GB regdomain etsi"
>>>   create_args_wlan4="country GB regdomain etsi"
>>>   ifconfig_wlan4="WPA DHCP"
>>>   root@mowa219-gjp4-zbook-freebsd:~ # uname -mvKU
>>>   FreeBSD 15.0-CURRENT main-n276197-680d34896c36 GENERIC-NODEBUG amd64
>>>   1500035 1500035
>>>   root@mowa219-gjp4-zbook-freebsd:~ # grep SIOCIFCREATE /var/log/console.log
>>>   Apr  1 05:41:20 mowa219-gjp4-zbook-freebsd kernel: ifconfig:
>>>   SIOCIFCREATE2 (wlan4): Device not configured
>>>   root@mowa219-gjp4-zbook-freebsd:~ # apropos iwx
>>>   apropos: nothing appropriate
>>>   root@mowa219-gjp4-zbook-freebsd:~ #
>>>   
>>>   
>>>   iwx.4 in OpenBSD-current: <https://man.openbsd.org/iwx.4>
> 
>