2024-06-09, 11:55 PM
(This post was last modified: 2024-10-26, 11:44 PM by TheDreadPirate. Edited 18 times in total.)
For whatever reason, Intel only bundles firmware updates with their Windows driver packages. Leaving us Linux users to either periodically boot into Windows just for firmware updates or manually update firmware.
Why would we need to update firmware? If you have an Arc GPU that is performing poorly compared to what others have posted, its possible the firmware your Arc GPU is running is the problem. We found out that old firmware was the cause of this user's poor transcoding performance.
https://forum.jellyfin.org/t-help-with-t...ing?page=3
This guide will walk you through the process of updating your Intel Arc GPU's firmware on the Linux command line.
Credit goes to this Level 1 Techs forum thread. This walk through is purely for awareness in the Jellyfin community and distilling down the process.
https://forum.level1techs.com/t/remember...nux/208736
*****DISCLAIMER*****
Do not interrupt the firmware update process once it has begun, period.
Do not start this process during a storm.
Ideally, your server is connected to a UPS. Just in case.
Proceed at your own risk.
**************************
Before we begin, verify which version of glibc is on your system. The pre-compiled binaries we will be using require glibc 2.38 and newer. Debian 12 and other older distros may not have a new enough glibc.
To check your glibc version type "ldd --version" in a terminal. The output will look like this.
If your system is running 2.38+ you can continue following this guide. If your system is running an older glibc scroll down to the bottom of this post and read the appendix to manually build the igsc tool from Intel's git.
Now that you've downloaded all the files you need, we can proceed with flashing your Arc GPU's firmware.
The steps below will be the commands I used.
********
All text in bold+underlined need to be substituted with your device path and file names you downloaded for your model.
********
First we need the device path.
It will be something like "/dev/mei2".
Now we will flash the SOC firmware. This will be the .bin file you downloaded.
Now we will flash the OPROM data. This will be the .rom file you downloaded.
Now we will flash the OPROM code.
Now we will flash the fw-data. The file we need will be in the zip file we expanded earlier.
Reboot and you're done.
####### Appendix - Manually build igsc #######
You will need to install a few packages to build igsc from Intel's git.
libudev-dev
ninja-build
cmake
git
On Debian/Ubuntu this would be done with
If you're not on Debian/Ubuntu, replace apt with whatever package manager your distro uses.
Now we are going to clone Intel's igsc git.
Cd into the igsc directory this created and build the executable and library
Now we that have our executable and library, move them to another folder in your home where you will also be downloading all the binaries and roms to.
The igsc executable should already have execute permissions, but we are ensuring is has execute permissions before moving it.
Now you can proceed with the rest of the walk through.
Why would we need to update firmware? If you have an Arc GPU that is performing poorly compared to what others have posted, its possible the firmware your Arc GPU is running is the problem. We found out that old firmware was the cause of this user's poor transcoding performance.
https://forum.jellyfin.org/t-help-with-t...ing?page=3
This guide will walk you through the process of updating your Intel Arc GPU's firmware on the Linux command line.
Credit goes to this Level 1 Techs forum thread. This walk through is purely for awareness in the Jellyfin community and distilling down the process.
https://forum.level1techs.com/t/remember...nux/208736
*****DISCLAIMER*****
Do not interrupt the firmware update process once it has begun, period.
Do not start this process during a storm.
Ideally, your server is connected to a UPS. Just in case.
Proceed at your own risk.
**************************
Before we begin, verify which version of glibc is on your system. The pre-compiled binaries we will be using require glibc 2.38 and newer. Debian 12 and other older distros may not have a new enough glibc.
To check your glibc version type "ldd --version" in a terminal. The output will look like this.
Code:
chris@rat-trap:~$ ldd --version
ldd (Ubuntu GLIBC 2.39-0ubuntu8.2) 2.39
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
If your system is running 2.38+ you can continue following this guide. If your system is running an older glibc scroll down to the bottom of this post and read the appendix to manually build the igsc tool from Intel's git.
- Download "igsc" from this github page. These are pre-compiled binaries. Save igsc and libigsc into the same folder.
- chmod 700 igsc
- Go to this Tech Power Up forum page. At the bottom of the first post, click on "Spoiler: Firmware Matrix" to expand the table with all the firmware and binary downloads.
- I would recommend not downloading beta firmwares. Stick with the latest non-beta.
- You will need to download four files from this table. The "SOC" firmware for your particular model (A380, A550, etc), the "OPROM" data for your specific vendor and model (Asrock Challenger A380, for example), the OPROM code (labeled "DG2" in the OPROM column), and the fwdata pack. The fwdata pack download link is in the same column as the OPROM at the bottom. You will need to unzip the fwdata pack first.
Now that you've downloaded all the files you need, we can proceed with flashing your Arc GPU's firmware.
The steps below will be the commands I used.
********
All text in bold+underlined need to be substituted with your device path and file names you downloaded for your model.
********
First we need the device path.
- sudo ./igsc list-devices
It will be something like "/dev/mei2".
Now we will flash the SOC firmware. This will be the .bin file you downloaded.
- sudo ./igsc fw update --device /dev/mei2 --image dg2_gfx_fwupdate_SOC2.bin
Now we will flash the OPROM data. This will be the .rom file you downloaded.
- sudo ./igsc oprom-data update --device /dev/mei2 --image dg2_d_asrock_challenger-a380_oprom-data.rom
Now we will flash the OPROM code.
- sudo ./igsc oprom-code update --device /dev/mei2 --image dg2_c_oprom.rom
Now we will flash the fw-data. The file we need will be in the zip file we expanded earlier.
- sudo ./igsc fw-data update --device /dev/mei2 --image fwdata/dg2_asrock_challenger-a380_config-data.bin
Reboot and you're done.
####### Appendix - Manually build igsc #######
You will need to install a few packages to build igsc from Intel's git.
libudev-dev
ninja-build
cmake
git
On Debian/Ubuntu this would be done with
- sudo apt install cmake ninja-build libudev-dev git
If you're not on Debian/Ubuntu, replace apt with whatever package manager your distro uses.
Now we are going to clone Intel's igsc git.
- git clone https://github.com/intel/igsc.git
Cd into the igsc directory this created and build the executable and library
- cmake -G Ninja -S . -B builddir
- ninja -v -C builddir
Now we that have our executable and library, move them to another folder in your home where you will also be downloading all the binaries and roms to.
- chmod u+x builddir/src/igsc
- cp -p builddir/src/igsc /path/to/download/folder
- cp -p builddir/lib/libigsc.so.0 /path/to/download/folder
The igsc executable should already have execute permissions, but we are ensuring is has execute permissions before moving it.
Now you can proceed with the rest of the walk through.