I just started a dnf update and noticed, that it downloads amd-gpu-firmware as well as nvidia-gpu-firmware on my intel Laptop with an integrated intel GPU.
Now I am wondering why it downloads those packages that I would suppose are not needed for my system.
Can anyone explain this to me?
Can I just disable the updates for those packages to save bandwidth?
I can tell you the reason why they are being downloaded; they are subpackages of linux-firmware. I can’t tell you how not to download them though. Someone with more command-line-fu with dnf will be along shortly.
Not currently needed for your system but they are installed by default, so you could move your hard drive to AMD/NVIDIA system and it would still work…
Or you could add an AMD / NVIDIA GPU to your system and it would be working out of the box
You could remove them but they would reinstalled when you receive an update of the linux-firmware package.
I guess that’s why every subpackage under linux-firmware is there. A catch-all so when performing an install it provides all the basic firmware and drivers to support most systems. I just performed an rpm -qa check for nvidia and intel and have the nvidia-gpu-firmware and several intel packages and my system is all AMD. I have never even noticed them being installed / updated before. I could understand someone with little space might want to not bulk download a whole bunch of packages, but I’ve a 1TB nvme drive in my laptop, so space isn’t an issue. And bandwidth isn’t an issue either. I’ve no limits on my home fibre, and my phone provider gives me 200GB a month.
Reading that article I see mention of a dnf plugin to use the Supplements metadata which is for hardware detection. I’m assuming since I’m on Fedora 42 and still have the subpackages downloaded from linux-firmware, that nothing was done for dnf5?
So it wouldn’t just be a matter of splitting up the existing firmware packages, but also creating a plugin for dnf.
If your system dies you may want to move your drive to a new system. There is a tradeoff between (cheap) mass storage space, download size, and time and effort expenditures by a) packagers to minimize download times and space requirements and b) users to recover after a major failure.
Such tradeoffs may not suit everyone. If your use case is a mass deployment for a cubicle farm, you may want something different because you will spare systems in reserve. If you have very expensive internet access, you would put a higher priority on reducing download size.
Thanks for the replies.
So I get now why it installs all those firmware’s that I don’t need.
Since I’m on a very slow Internet connection, it would be great to find a way to only download those updates that I really need. (nvidia-gpu-firmware is more than 100MB for example, and I’d love to skip those)
Is it possible to setup the system in retrospect to do this, or would the correct way to set it up during installation?
Edit: “in retrospect”, not “in advance”
This may be possible with a kickstarter file and appending packages to exclude. Kickstart isn’t something I’ve delved into very deeply. But a quick look at the syntax reference shows that --excludepkgs= is an option.
Oops, I meant “in retrospect”, not “in advance”.
there’s no packages that depend on nvidia-gpu-firmware
Removing:
nvidia-gpu-firmware noarch 20250708-1.fc42 updates 101.0 MiB
Transaction Summary:
Removing: 1 package
After this operation, 101 MiB will be freed (install 0 B, remove 101 MiB).
Is this ok [y/N]: n
Alright, I don’t have the patience to figure all that stuff out right now, I guess I’ll just live with downloading some extra stuff that I don’t need for now.
Thanks everyone for your replies.
you can get the same list by dnf
dnf group info hardware-support
I guess its only the GPU firmware that is rather big the other wouldn’t matter so much IMHO
For the vast majority of users, the volume of Fedora downloads is tiny compared to that of other activities.
If linux becomes popular enough that mainstream vendors ofter systems with pre-installed linux, there may provide stripped down versions of distros, not only to reduce mass storage space requirements, security risks, and update download size, but because it would be harder for users to switch brands when they want to replace an old or broken system.
Unless I’m mistaken the above is mostly but not completely correct. A lot of firmware packages are indeed installed since they are recommended, not required, by linux-firmware. The difference matters here. When you install a package that recommends other packages, these other packages are normally (can be overridden) also installed, just as if they had been required. But when you upgrade the first package, it will not install things that are not already there. This was changed in dnf a few years ago.
So if you do run the dnf remove you tried above, for any firmware packages you don’t need, I believe you will get what you want. They will not get reinstalled or upgraded.
Just be sure you really don’t need them! ![]()
It is my understanding that the linux-firmware package may be different since it is metadata and pulls in the other firmware packages. It seems that the user may remove different packages that are pulled in by that package, but when there is an update to linux-firmware it seems that everything is reinstalled.
Apparently the only way to prevent the reinstall of the removed firmware packages when doing an update may be to use the dnf --exclude option for each of those packages that were removed. This would be cumbersome to the user and the relatively tiny amount of drive space saved probably makes such an action counterproductive in practice.
I’m giving it a try, will report back after the next update to linux-firmware whether it reinstalls those packages or not.
Wrong, removed packages are not reinstalled on updates in case of linux-firmware. So you can remove i.e nvidia and amd firmware packages on intel only systems.
EDIT: from the linux-firmware.spec file (src.fedorapriject.org)
Requires: linux-firmware-whence = %{version}-%{release}
Requires: ((linux-firmware = %{version}-%{release}) if linux-firmware)
Recommends: amd-gpu-firmware
Recommends: amd-ucode-firmware
Recommends: atheros-firmware
Recommends: brcmfmac-firmware
Recommends: cirrus-audio-firmware
Recommends: intel-audio-firmware
Recommends: intel-gpu-firmware
Recommends: mt7xxx-firmware
Recommends: nvidia-gpu-firmware
Recommends: nxpwireless-firmware
Recommends: realtek-firmware
Recommends: tiwilink-firmware
most of this stuff can be removed in VMs.
It was like that at first when the weak dependencies were introduced. But later on it was modified in the change proposal I mentioned above.
Once we move to a model where the base OS is immutable and consists solely of hardware enablement bits and eveyrthing else can implemented as layered runtimes… on top of that…we can possibly avoid the lockin trap you elude to at the end there. Linux as a 100 layer crepe cake.
But for sure the idea of a removable internal harddrive are defining dying out in the consumer space… soldered on drives reduce manufacturing complexity and cost compared to anything replacable the trend there isn’t going to change.
To sum things up, the reason the packages were installed and updated is because they are recommended by the linux-firmware package.
To save bandwith and disk space, the solution for me was to just remove the unwanted packages.
Contrary to popular belief, the packages will not be reinstalled on the next linux-firmware update.
Thanks to @anotheruser and @goeran for the clarification.