Jump to content

Linux firmware

From ArchWiki

Linux firmware is a collection of firmware binary blobs distributed alongside the kernel, necessary for partial or full functionality of certain hardware devices. These binary blobs were never permitted to include in a GPL'd work, but have been permitted to redistribute under separate cover.

Typical kinds of hardware requiring firmware:

Installation

Install the linux-firmware meta package to pull all commonly used firmware. This is the recommended way for most users. To save some space you could opt into installing firmware only for individual hardware vendors your system uses.

Warning Lack of necessary firmware could make your system inoperable.

Primary packages pulled by linux-firmware:

Optional packages:

Third-party packages:

Tips and tricks

Detecting loaded firmware

Sometimes you want to know what firmware is loaded by your system, for debugging or to pick firmware packages to install.

That could be achieved using dynamic debug:

# journalctl -kg 'loaded f'
Jan 01 00:00:00 example kernel: amdgpu 0000:03:00.0: Loaded FW: amdgpu/psp_13_0_0_sos.bin, sha256: <sha_sum>
Jan 01 00:00:00 example kernel: amdgpu 0000:6d:00.0: Loaded FW: amdgpu/vcn_3_1_2.bin, sha256: <sha_sum>
...
Jan 01 00:00:00 example kernel: bluetooth hci0: Loaded FW: mediatek/BT_RAM_CODE_MT7922_1_1_hdr.bin, sha256: <sha_sum>
Jan 01 00:00:00 example kernel: mt7921e 0000:0a:00.0: Loaded FW: mediatek/WIFI_RAM_CODE_MT7922_1.bin, sha256: <sha_sum>
...

Note: This output has been modified for readability.

See also