upgraded 14.2 to 14.3 on my laptop and iwlwifi stop working

Just for context. My laptop is MSI GS65 Stealth 9SE. Not a shiny new, but still kind of a modern thing. As for wifi it runs Intel Wireless-AC-9560, which is seems to be supported by if_iwlwifi.
And it worked good enough with 14.2-RELEASE and if_iwlwifi driver, with no bluetooth, though, but this is the story for the next time.

Once I tried to upgrade to 14.3-RELEASE it reportedly claims
Code:
The following files will be removed as part of updating to 14.3-RELEASE-p0:
...
/boot/kernel/iwlwifi-9000-pu-b0-jf-b0-46.ucode.ko
...
Uh.. ok. As I learned, this is kernel-dependent and probably should load appropriate version during upgrade, maybe?
It also promised
Code:
The following files will be updated as part of updating 14.3-RELEASE-p0:
...
/boot/kernel/if_iwlwifi.ko
...

But no, after the upgrade completed it won't work and in dmesg I see the following:
Code:
...
iwlwifi0: <iwlwifi> mem 0xad414000-0xad417fff at device 20.3 on pci0
iwlwifi0: Detected crf-id 0x2816, cnv-id 0x1000100 wfpm id 0x80000000
iwlwifi0: PCI dev a370/0034, rev=0x312, rfid=0x105110
iwlwifi0: Detected Intel(R) Wireless-AC 9560 160MHz
iwlwifi-9000-pu-b0-jf-b0-46.ucode: could not load binary firmware /boot/firmware/iwlwifi-9000-pu-b0-jf-b0-46.ucode either
iwlwifi-9000-pu-b0-jf-b0-46.ucode: could not load binary firmware /boot/firmware/iwlwifi-9000-pu-b0-jf-b0-46.ucode either
iwlwifi-9000-pu-b0-jf-b0-46_ucode: could not load binary firmware /boot/firmware/iwlwifi-9000-pu-b0-jf-b0-46_ucode either
iwlwifi_9000_pu_b0_jf_b0_46_ucode: could not load binary firmware /boot/firmware/iwlwifi_9000_pu_b0_jf_b0_46_ucode either
iwlwifi0: could not load firmware image 'iwlwifi-9000-pu-b0-jf-b0-46.ucode'
iwlwifi0: File size way too small!
...
iwlwifi0: no suitable firmware found!
iwlwifi0: minimum version required: iwlwifi-9000-pu-b0-jf-b0-30
iwlwifi0: maximum version supported: iwlwifi-9000-pu-b0-jf-b0-46
iwlwifi0: check git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
...

Well, after announced "removal" /boot/firmware have as much as 0 firmwares. Ok, I tried a dumb-trick and copied deleted file from kernel.old to kernel. But no miracles this time - it just didn't work:
Code:
KLD iwlwifi-9000-pu-b0-jf-b0-46.ucode.ko: depends on kernel - not available or version mismatch

If I got it right, it means that I need somehow to get firmware, which should be downloaded during upgrade, but didn't. But after the upgrade I have no internet, and can't do that. And I decided to stop here.
There is must be something wrong. Whether my original installation was corrupted or upgrade 14.2 to 14.3 broke things. I don't know.
It's just inconvenient enough to lose wifi, in my case, the only internet connection, just after getting the new RELEASE.
Sure, I can rollback and get 14.2 working with wifi. But, well, I would prefer to finish the upgrade and get my wifi back. And I'll be glad to hear any hints.
 
Last edited by a moderator:
In 14.3 all the firmware files were removed from Base and must be installed from ports.


Wireless Networking​

The LinuxKPI, particularly for 802.11, has been enhanced to support crypto offload and 802.11n and 802.11ac standards. The iwlwifi(4) wireless driver is the first to make use of these new features supporting 802.11ac for some Intel Wi-Fi 5, and all of Intel Wi-Fi 6 and Wi-Fi 7 hardware. (Sponsored by The FreeBSD Foundation)
The rtw88(4) driver was made to work (associate) again and a memory leak got resolved. (Sponsored by The FreeBSD Foundation)
Following other drivers iwlwififw(4) firmware was removed from the base system in favor of the ports based solution and fwget(8) support. (Sponsored by The FreeBSD Foundation)
 
I think the real problem here is that you can't install something when you don't have working network (wireless) interface because the upgrade process removed the firmware.
 
Yeah, that's why you should really read the release notes and the errata before upgrading. A possible solution is to mount a 14.2 / 14.3 ISO and install the firmware package from there, reboot and upgrade the firmware with pkg.
 
If you can't have an emergency Ethernet wire it is worth keeping a wifi hub that can act as a client. More secure by far anyway.
 
Or just use a/your smartphone with USB tethering.
A cheap USB-to-Ethernet dongle is also worth having around. Saved me from pain more than once.
 
Yeah, that's why you should really read the release notes and the errata before upgrading.
Reading that doesn't help as it doesn't outline the required steps. Are you supposed to install the port prior to upgrading? Won't it conflict with old firmware that is still there? Should freebsd-update take care of running fwget (while it still has the connection)?
 
For laptops that don't have wired network, there seems to be a disconnect between:
  • tethering to get on the internet in the first place
  • fwget for the right firmware
  • a pkg repo that has the latest kmods
This needs to be considered before upgrade, and is not in the handbook.
 
Thank all of you for tips and hints!
Having fwget before the doing upgrade do the trick.
It's solved now. Thanks once again and sorry for being inattentive to Release Notes.
 
Back
Top