You are not logged in.
Like in subject: Do I really need all those firmware files?
I don't have amd card, so I don't need linux-firmware-amdgpu and linux-firmware-radeon, there is no firmware for my nvidia gpu in linux-firmware-nvidia, I think I don't have any mediatek component, nor broadcom, so linux-firmware-mediatek and linux-firmware-broadcom is not needed for me. I have some atheros ethernet card (use atl1 kernel module) and realtec audio codec on motherboard (Realtek ALC 882 codec, snd_hda_intel kernel module used), so this maybe should stay?: linux-firmware-atheros, linux-firmware-realtek. Do I need linux-firmware-intel for intel system, microcode package is not enough? I don't know what to do with linux-firmware-other.
So can I safely uninstall all firmware except linux-firmware-atheros, linux-firmware-realtek, linux-firmware-intel and blacklist other firmware packages?
Last edited by xerxes_ (2025-06-29 10:34:02)
Offline
Well, You basically gave the answer already.
You don't need firmwarez you don't own the hardware for;)
I indeed think 'linux-firmware-atheros, linux-firmware-realtek & linux-firmware-intel' should stay.
If you are unsure what hardware is in your machine use lshw[Extra] or go trough dsmeg output
Btw. you can always remove the atheros & realtek firmware and see if the HW still functions
Install atheros from cache if the network-card doesn't function
You don't blacklist any packages, first remove:
pacman -Rdd linux-firmware
Then install what you like
pacman -Syu linux-firmware-atheros linux-firmware-realtek linux-firmware-intel
You may need to run mkinitcpio.
Offline
No, that's why the package was split up. Remove what you don't need, mark what you do need as explicitly installed (see the -D flag for pacman).
Sakura:-
Mobo: MSI MAG X570S TORPEDO MAX // Processor: AMD Ryzen 9 5950X @4.9GHz // GFX: AMD Radeon RX 5700 XT // RAM: 32GB (4x 8GB) Corsair DDR4 (@ 3000MHz) // Storage: 1x 3TB HDD, 6x 1TB SSD, 2x 120GB SSD, 1x 275GB M2 SSD
Making lemonade from lemons since 2015.
Offline
Sorry for interpreting this wrong @WorMzy. I have indeed installed the firmware as shown above.
I don't have any problems for that matter, but think I change to your solution
Thanks for the heads-up
edit: Though, I do agree with @WorMzy, the wiki has a subject about installing individual firmware
Note the warning.
https://wiki.archlinux.org/title/Linux_ … r_packages
Last edited by qinohe (2025-06-22 19:37:07)
Offline
I checked from this link: https://wiki.archlinux.org/title/Linux_ … d_firmware and added 'dyndbg="func fw_log_firmware_info +p"' to my boot parameters and checked from root console
# dmesg | grep -F 'Loaded FW'
that no firmware were loaded! Even Intel. Is it possible? 'cat /proc/cmdline' show that dyndbg was added to grub kernel boot parameters, so I don't need any firmware? And atheros and realtek firmware is looks like for WiFi and Bluetooth.
Last edited by xerxes_ (2025-06-22 20:29:23)
Offline
That grep doesn't show anything no. There don't seem to exist a line like that.
But, you certainly need firmware for your audio and network card but more important for your hardware to function.
Check lshw as said in my first post.
Off course you can opt to not install any firmware but, you will be chrooting into your install doing just that
Offline
added 'dyndbg="func fw_log_firmware_info +p"' to my boot parameters
That grep doesn't show anything
Did you guys reboot after adding the kernel parameter? It works on 3 of my Arch systems....
$ grep dyndbg /boot/grub/grub.cfg
linux /boot/vmlinuz-linux root=UUID=5e307495-f996-48bf-90ab-940b1de1e452 rw loglevel=3 dyndbg='func fw_log_firmware_info +p'
$ sudo dmesg | grep -F 'Loaded FW'
[sudo] password for jeff:
[ 1.889709] amdgpu 0000:65:00.0: Loaded FW: amdgpu/psp_13_0_4_toc.bin, sha256: 11e3529d748e2b6b204681183360a6ead80665b8deda996dfcf35973f789fc3d
[ 1.890474] amdgpu 0000:65:00.0: Loaded FW: amdgpu/psp_13_0_4_ta.bin, sha256: 28e4c718e0471ada758ea9afa14277653729a0b867313eadd007c048edb21d4a
[ 1.891688] amdgpu 0000:65:00.0: Loaded FW: amdgpu/dcn_3_1_4_dmcub.bin, sha256: 6b2b09ac289bbf6815fa09a62d087b7b73f71b070a9dd7978f584b1758e3b359
[ 1.892334] amdgpu 0000:65:00.0: Loaded FW: amdgpu/gc_11_0_1_pfp.bin, sha256: 9b4c0ef307e14383a5f48cede0d65b37f7b8fce2a40c73c5da623ce1a20862c2
[ 1.892979] amdgpu 0000:65:00.0: Loaded FW: amdgpu/gc_11_0_1_me.bin, sha256: 15e3189965e6c7a7dbb580464bbba9683e77fc60cb4478ba0d8f2e6046a07ed8
[ 1.893480] amdgpu 0000:65:00.0: Loaded FW: amdgpu/gc_11_0_1_rlc.bin, sha256: cd751872eabf5f55f979a25f03c85bc95f19c67ee071359691896295baad60d8
[ 1.894195] amdgpu 0000:65:00.0: Loaded FW: amdgpu/gc_11_0_1_mec.bin, sha256: 90352eacdc954ba7d5c91443f59edd1cd3a639d6b2ab32e0107332f6d2bbdb04
[ 1.894546] amdgpu 0000:65:00.0: Loaded FW: amdgpu/gc_11_0_1_imu.bin, sha256: ac71f4eec713fc35b4a1fe27531e3eb04edd81eeac2cef64df01ac50d8510805
[ 1.894678] amdgpu 0000:65:00.0: Loaded FW: amdgpu/sdma_6_0_1.bin, sha256: ae345f793a47dda30c38e0ee6acd06274c37ff10118f3322a723716b431c55ab
[ 1.896012] amdgpu 0000:65:00.0: Loaded FW: amdgpu/vcn_4_0_2.bin, sha256: ad62027309cd228090a8107fc0404551842c4705057c9f76aff81d91be145bc5
[ 1.896725] amdgpu 0000:65:00.0: Loaded FW: amdgpu/gc_11_0_1_mes_2.bin, sha256: 18f4e11c1fc092dd500a28319859f46585dd1bac2f68ba8ffb54fff1ed3104f4
[ 1.897363] amdgpu 0000:65:00.0: Loaded FW: amdgpu/gc_11_0_1_mes1.bin, sha256: 9930fb834ca7ba72d5fbc6a14357bf98f5d55b18203ae4c699ae5e225fcdd1bf
[ 4.258267] iwlwifi 0000:02:00.0: Loaded FW: iwlwifi-cc-a0-77.ucode, sha256: b24c019d587659343e41b362a7299973c3bd6136c12bcd2bdc0584cd1f2c046e
[ 4.379844] bluetooth hci0: Loaded FW: intel/ibt-20-1-3.sfi, sha256: ec8f18d7bba8a64b786998ced741254fd2816a005a7fdf9606968a350787a681
[ 5.289222] r8169 0000:01:00.0: Loaded FW: rtl_nic/rtl8125b-2.fw, sha256: 529bf1c25c97ff52b401090d00ff89cc22351012336e5a0c9662728a3ee909ef
I put together this code to printout the required 'linux-firmware' packages. After verification, copy, past it into a terminal.
sudo pacman -Fy
rm -f /tmp/fw-pkgs
while read -r fw_file; do
pacman -F "/usr/lib/firmware/${fw_file%,}.zst" 2> /dev/null | tee -a /tmp/fw-pkgs
done < <(journalctl -b | grep -o 'Loaded FW: .*' | cut -d' ' -f3) | column -t
echo
echo "Required firmware packages:"
awk -F"/" '{print $6}' /tmp/fw-pkgs | awk '{print $1}' | sort -u
And the output of the above code on one of my systems:
usr/lib/firmware/amdgpu/psp_13_0_4_toc.bin.zst is owned by core/linux-firmware-amdgpu 20250613.12fe085f-6
usr/lib/firmware/amdgpu/psp_13_0_4_ta.bin.zst is owned by core/linux-firmware-amdgpu 20250613.12fe085f-6
usr/lib/firmware/amdgpu/dcn_3_1_4_dmcub.bin.zst is owned by core/linux-firmware-amdgpu 20250613.12fe085f-6
usr/lib/firmware/amdgpu/gc_11_0_1_pfp.bin.zst is owned by core/linux-firmware-amdgpu 20250613.12fe085f-6
usr/lib/firmware/amdgpu/gc_11_0_1_me.bin.zst is owned by core/linux-firmware-amdgpu 20250613.12fe085f-6
usr/lib/firmware/amdgpu/gc_11_0_1_rlc.bin.zst is owned by core/linux-firmware-amdgpu 20250613.12fe085f-6
usr/lib/firmware/amdgpu/gc_11_0_1_mec.bin.zst is owned by core/linux-firmware-amdgpu 20250613.12fe085f-6
usr/lib/firmware/amdgpu/gc_11_0_1_imu.bin.zst is owned by core/linux-firmware-amdgpu 20250613.12fe085f-6
usr/lib/firmware/amdgpu/sdma_6_0_1.bin.zst is owned by core/linux-firmware-amdgpu 20250613.12fe085f-6
usr/lib/firmware/amdgpu/vcn_4_0_2.bin.zst is owned by core/linux-firmware-amdgpu 20250613.12fe085f-6
usr/lib/firmware/amdgpu/gc_11_0_1_mes_2.bin.zst is owned by core/linux-firmware-amdgpu 20250613.12fe085f-6
usr/lib/firmware/amdgpu/gc_11_0_1_mes1.bin.zst is owned by core/linux-firmware-amdgpu 20250613.12fe085f-6
usr/lib/firmware/iwlwifi-cc-a0-77.ucode.zst is owned by core/linux-firmware-intel 20250613.12fe085f-6
usr/lib/firmware/intel/ibt-20-1-3.sfi.zst is owned by core/linux-firmware-intel 20250613.12fe085f-6
usr/lib/firmware/rtl_nic/rtl8125b-2.fw.zst is owned by core/linux-firmware-realtek 20250613.12fe085f-6
Required firmware packages:
linux-firmware-amdgpu
linux-firmware-intel
linux-firmware-realtek
I came here looking for how people are removing the unneeded packages before I resorted to '-Rdd'.
I'm also concerned about the occasionally used USB peripherals ie: usb thumb drives, cameras, etc.
Interested in any thoughts on this stuff relating to firmware.
Currently have a bunch of obviously unneeded pkgs to get started though.
$ pacman -Q --color=never | grep ^linux-firmware
linux-firmware 20250613.12fe085f-6
linux-firmware-amdgpu 20250613.12fe085f-6
linux-firmware-atheros 20250613.12fe085f-6
linux-firmware-broadcom 20250613.12fe085f-6
linux-firmware-intel 20250613.12fe085f-6
linux-firmware-liquidio 20250613.12fe085f-6
linux-firmware-mediatek 20250613.12fe085f-6
linux-firmware-mellanox 20250613.12fe085f-6
linux-firmware-nfp 20250613.12fe085f-6
linux-firmware-nvidia 20250613.12fe085f-6
linux-firmware-other 20250613.12fe085f-6
linux-firmware-qlogic 20250613.12fe085f-6
linux-firmware-radeon 20250613.12fe085f-6
linux-firmware-realtek 20250613.12fe085f-6
linux-firmware-whence 20250613.12fe085f-6
EDIT: Add info
Interesting, an unneeded AUR pkg 'mkinitcpio-firmware' that I had installed to eliminate some warnings creating 'fallback.img' mkinitcpio images held things up...
$ sp -Rdd linux-firmware
[sudo] password for jeff:
Package (1) Old Version Net Change
linux-firmware 20250613.12fe085f-6 0.00 MiB
:: Do you want to remove these packages? [Y/n] y
:: Processing package changes...
(1/1) removing linux-firmware [#######################################################] 100
$ sp -R linux-firmware-atheros linux-firmware-broadcom linux-firmware-liquidio linux-firmware-mediatek linux-firmware-mellanox linux-firmware-nfp linux-firmware-nvidia linux-firmware-qlogic linux-firmware-radeon linux-firmware-realtek
checking dependencies...
error: failed to prepare transaction (could not satisfy dependencies)
:: removing linux-firmware-qlogic breaks dependency 'linux-firmware-qlogic' required by mkinitcpio-firmware
:: removing linux-firmware-broadcom breaks dependency 'linux-firmware-bnx2x' required by mkinitcpio-firmware
:: removing linux-firmware-liquidio breaks dependency 'linux-firmware-liquidio' required by mkinitcpio-firmware
:: removing linux-firmware-mellanox breaks dependency 'linux-firmware-mellanox' required by mkinitcpio-firmware
:: removing linux-firmware-nfp breaks dependency 'linux-firmware-nfp' required by mkinitcpio-firmware
EDIT2: Reworded above and added line below for clarity.
Removed AUR 'mkinitcpio-firmware' to proceed.
Last edited by NuSkool (2025-06-24 02:23:25)
Scripts I Use : https://github.com/Cody-Learner
grep -m1 'model name' /proc/cpuinfo : AMD Ryzen 7 8745HS w/ Radeon 780M Graphics
grep -m1 'model name' /proc/cpuinfo : Intel(R) N95
grep -m1 'model name' /proc/cpuinfo : AMD Ryzen 5 PRO 2400GE w/ Radeon Vega Graphics
Offline
Did you guys reboot after adding the kernel parameter? It works on 3 of my Arch systems....
Yes, I added the line to my boot parameters, rebooted but there was no output...
I came here looking for how people are removing the unneeded packages before I resorted to '-Rdd'.
I'm also concerned about the occasionally used USB peripherals ie: usb thumb drives, cameras, etc.
Interested in any thoughts on this stuff relating to firmware
Also used '-Rdd' and after that installed what I needed and rebooted OC
Everything was OK after rebooting, though, I needed to reboot twice for some voodoo reason
You may need to install some firmware for other hardware, but if you 'normally' needed nothing more than the linux-firmware then everything is split into these few packages. Only thing needed is you figuring out which hardware is in the machine and install the needed firmware.
If you needed to install firmwarez from AUR than the same applies as the line below
Interesting, an unneeded AUR pkg 'mkinitcpio-firmware' that I had installed to eliminate some warnings creating 'fallback.img' mkinitcpio images held things up...
Yeah, that would be remove and rebuild afterwards
Offline
If you are unsure what hardware is in your machine use lshw[Extra] or go trough dsmeg output
This is a good start. For many this is a rather vague instruction.
Would you recommend a specific command to run in order to check what firmware is present, e.g. grepping journal kernel messages for tokens from firmware package names e.g. '(intel|amdgpu|...)'?
Or maybe the path is to install ALL firmware packages and then somehow determine which ones are NOT in use?
EDIT. Please ignore this. I can see there is a solution already proposed above, although that solution seems to be far from ideal, but I understand, it is a phase the community needs to go through on the path to a better system design
Last edited by cherio (2025-06-23 15:21:16)
Offline
Remove what you don't need, mark what you do need as explicitly installed (see the -D flag for pacman).
So, after remove unneeded firmware by 'pacman -Rdd unneeded_firmware1 unneeded_firmware2' do 'pacman -D --asexplicit wanted-firmware1 wanted-firmware2', but if I would need other firmware in future I would install it by 'pacman -S needed_firmware' and do 'pacman -D --asdeps needed_firmware' ? (Corrected)
Last edited by xerxes_ (2025-06-29 10:33:24)
Offline
"--asdeps" of what?
The firmware packages are typically explicitly installed ("I want this because I have this hardware") - it's just that rn all the subpackages exist as dependency of the meta package (formerly the only firmware package)
That's all you need to resolve by marking the desired firmware packages you already have as explicit, then you can also remove linux-firmware w/o losing the individual firmware packages you marked as explicit.
From there on it's business as usual - if you explicitly install something, it ends up in the database as explicit and for the firmware packages that's what you typically want.
Online