Jellyfin Forum
Flash Intel Arc GPU Firmware in Linux - Printable Version

+- Jellyfin Forum (https://forum.jellyfin.org)
+-- Forum: Support (https://forum.jellyfin.org/f-support)
+--- Forum: Guides, Walkthroughs & Tutorials (https://forum.jellyfin.org/f-guides-walkthroughs-tutorials)
+--- Thread: Flash Intel Arc GPU Firmware in Linux (/t-flash-intel-arc-gpu-firmware-in-linux)

Pages: 1 2


Flash Intel Arc GPU Firmware in Linux - TheDreadPirate - 2024-06-09

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-transcoding?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-to-update-your-intel-arc-firmware-on-linux/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
*****If you had to manually build igsc, proceed from here*****
  • 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 (at the top of 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.
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.


RE: Flash Intel Arc GPU Firmware in Linux - Host-in-the-Shell - 2024-06-10

Unfortunately Debian stable is still on glibc 2.36 and the igsc binary requires 2.38, so I was unable to try this. Maybe there's a way of compiling it for Debian, but I did not see any docs for it on the git repo. Anyway, transcoding performance is pretty solid for me so I suppose I shouldn't mess with this in the first place.

Thanks for the comprehensive guide, though!


RE: Flash Intel Arc GPU Firmware in Linux - TheDreadPirate - 2024-06-10

@Host-in-the-Shell

Check out Intel's git for the build instructions.

https://github.com/intel/igsc


RE: Flash Intel Arc GPU Firmware in Linux - bitmap - 2024-06-10

Well shit. I found this just as a storm is rolling in. I wouldn't be gun shy but I had three brownouts that caused my UPS to kick in last night. I need a better UPS, too...


RE: Flash Intel Arc GPU Firmware in Linux - Host-in-the-Shell - 2024-06-10

@TheDreadPirate

Thanks! Compiled and firmware upgraded successfully without issues. All transcoding working great after rebooting and I do feel some improvement in speeds. Went smoother than I imagined. Perhaps adding a small note for Debian 12 users about these extra steps in the original post could be useful.


RE: Flash Intel Arc GPU Firmware in Linux - TheDreadPirate - 2024-06-10

Can you post the instructions you followed successfully and I'll append my post with it.


RE: Flash Intel Arc GPU Firmware in Linux - anthonylavado - 2024-06-10

So far for me, on Debian 12 (Bookworm):

sudo apt-get update
sudo apt-get install libudev-dev ninja-build

git clone https://github.com/intel/igsc.git

cd igsc/

cmake -G Ninja -S . -B builddir
ninja -v -C builddir

cp builddir/lib/libigsc.so.0 {location of original download}


It's also worth mentioning that I don't have an Intel CPU with iGPU, so for me the device was always mei1.


RE: Flash Intel Arc GPU Firmware in Linux - Host-in-the-Shell - 2024-06-10

That's pretty much it, except I also had to install the package build-essential for the compilation to be successful.

Edit: Oh, and also had to install cmake.


RE: Flash Intel Arc GPU Firmware in Linux - anthonylavado - 2024-06-10

That's a good call out - I forgot I had those installed because of other build work Grinning-face


RE: Flash Intel Arc GPU Firmware in Linux - TheDreadPirate - 2024-06-10

For clarification, you were able to use the pre-compiled igsc executable from the Solaris17 git but had to build libigsc from source, correct?

Nm. I found the executable the build produced.

igsc/builddir/src/igsc