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

From: Tomoaki AOKI <junchoon_at_dec.sakura.ne.jp>
Date: Tue, 01 Apr 2025 13:08:28 UTC
On Tue, 1 Apr 2025 13:51:07 +0200
ltning-freebsd-wireless@anduin.net wrote:

> 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

FYI: For me,

% pkg info -l net/wifi-firmware-iwlwifi-kmod     
wifi-firmware-iwlwifi-kmod-20241017.1402504_2:
	/boot/firmware/iwlwifi-3160-17.ucode
	/boot/firmware/iwlwifi-3168-29.ucode
	/boot/firmware/iwlwifi-7260-17.ucode
	/boot/firmware/iwlwifi-7265-17.ucode
	/boot/firmware/iwlwifi-7265D-29.ucode

    (snip)

	/boot/firmware/iwlwifi-9000-pu-b0-jf-b0-46.ucode
	/boot/firmware/iwlwifi-9260-th-b0-jf-b0-46.ucode

    (snip)

	/boot/firmware/iwlwifi-so-a0-gf-a0-77.ucode
	/boot/firmware/iwlwifi-so-a0-gf-a0-83.ucode
	/boot/firmware/iwlwifi-so-a0-gf-a0-89.ucode
	/boot/firmware/iwlwifi-so-a0-gf-a0.pnvm
	/boot/firmware/iwlwifi-so-a0-gf4-a0-77.ucode
	/boot/firmware/iwlwifi-so-a0-gf4-a0.pnvm

    (snip)

	/usr/local/share/licenses/wifi-firmware-iwlwifi-kmod-20241017.1402504_2/LICENSE
	/usr/local/share/licenses/wifi-firmware-iwlwifi-kmod-20241017.1402504_2/catalog.mk
	/usr/local/share/licenses/wifi-firmware-iwlwifi-kmod-20241017.1402504_2/primary
	/usr/local/share/licenses/wifi-firmware-iwlwifi-kmod-20241017.1402504_2/whence

iwlwifi-so-a0-gf-a0-77.ucode is listed as above.

Note that my WiFi chip is AC9560 as shown below and cannot work with
iwx driver. Currently, crash on boot are significantly reduced compared
with the time I've reported to bz@ in early phase of iwlwifi
introduction, but still unstable (fail to hear beacon as above [not
always], crash when repeatedly switching back and force with wired
em0, etc.). Maybe specific with some parts of AC9560, including mine.

% dmesg | grep
iwl iwlwifi0: <iwlwifi> mem 0x404a10c000-0x404a10ffff at device 20.3 on
pci0
iwlwifi0: Detected crf-id 0x2816, cnv-id 0x1000100 wfpm id 0x80000000
iwlwifi0: PCI dev a370/0030, rev=0x312, rfid=0x105110
iwlwifi0: Detected Intel(R) Wireless-AC 9560 160MHz
iwlwifi0: successfully loaded firmware image
'iwlwifi-9000-pu-b0-jf-b0-46.ucode'

    (snip)

iwl-debug-yoyo.bin: could not load binary
firmware /boot/firmware/iwl-debug-yoyo.bin either
iwl-debug-yoyo.bin: could not load binary
firmware /boot/firmware/iwl-debug-yoyo.bin either
iwl-debug-yoyo_bin: could not load binary
firmware /boot/firmware/iwl-debug-yoyo_bin either
iwl_debug_yoyo_bin: could not load binary
firmware /boot/firmware/iwl_debug_yoyo_bin either
iwlwifi0: loaded firmware version 46.ff18e32a.0
9000-pu-b0-jf-b0-46.ucode op_mode iwlmvm
iwlwifi0: base HW address: **:**:**:**:**:**, OTP minor version: 0x4
iwlwifi0: No beacon heard and the time event is over already...
iwlwifi0: linuxkpi_ieee80211_connection_loss: vif 0xfffffe0181e16ec0
vap 0xfffffe0181e16010 state RUN
iwlwifi0: fail to flush all tx fifo queues Q 5
iwlwifi0: Queue 5 is active on fifo 3 and stuck for 10000 ms. SW [2, 3]
HW [2, 3] FH TRB=0x080305001
% 


> 
> 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>


-- 
Tomoaki AOKI    <junchoon@dec.sakura.ne.jp>