• Login
  • Register
  • Login Register
    Login
    Username/Email:
    Password:
    Or login with a social network below
  • Forum
  • Website
  • GitHub
  • Status
  • Translation
  • Features
  • Team
  • Rules
  • Help
  • Feeds
User Links
  • Login
  • Register
  • Login Register
    Login
    Username/Email:
    Password:
    Or login with a social network below

    Useful Links Forum Website GitHub Status Translation Features Team Rules Help Feeds
    Jellyfin Forum Support Guides, Walkthroughs & Tutorials Flash Intel Arc GPU Firmware in Linux

    Pages (3): 1 2 3 Next »

     
    • 1 Vote(s) - 5 Average

    Flash Intel Arc GPU Firmware in Linux

    *****PROCEED AT YOUR OWN RISK*****
    TheDreadPirate
    Offline

    Community Moderator

    Posts: 15,375
    Threads: 10
    Joined: 2023 Jun
    Reputation: 460
    Country:United States
    #1
    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.

    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 (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.
    Jellyfin 10.10.7 (Docker)
    Ubuntu 24.04.2 LTS w/HWE
    Intel i3 12100
    Intel Arc A380
    OS drive - SK Hynix P41 1TB
    Storage
        4x WD Red Pro 6TB CMR in RAIDZ1
    [Image: GitHub%20Sponsors-grey?logo=github]
    1
    1
    Host-in-the-Shell
    Online

    Member

    Posts: 166
    Threads: 10
    Joined: 2023 Jun
    Reputation: 14
    #2
    2024-06-10, 01:29 AM
    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!
    Server specs => OS: Debian 12 | GPU: Arc A380 | CPU: Ryzen 5 5600X | 64GB RAM | 56TB
    1
    TheDreadPirate
    Offline

    Community Moderator

    Posts: 15,375
    Threads: 10
    Joined: 2023 Jun
    Reputation: 460
    Country:United States
    #3
    2024-06-10, 01:55 AM
    @Host-in-the-Shell

    Check out Intel's git for the build instructions.

    https://github.com/intel/igsc
    Jellyfin 10.10.7 (Docker)
    Ubuntu 24.04.2 LTS w/HWE
    Intel i3 12100
    Intel Arc A380
    OS drive - SK Hynix P41 1TB
    Storage
        4x WD Red Pro 6TB CMR in RAIDZ1
    [Image: GitHub%20Sponsors-grey?logo=github]
    bitmap
    Offline

    Community Moderator

    Posts: 766
    Threads: 9
    Joined: 2023 Jul
    Reputation: 24
    #4
    2024-06-10, 02:21 AM
    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...
    Jellyfin 10.10.7 LSIO Docker | Ubuntu 24.04 LTS | i7-13700K | Arc A380 6 GB | 64 GB RAM | 79 TB Storage

    [Image: AIL4fc84QG6uSnTDEZiCCtosg7uAA8x9j1myFaFs...qL0Q=w2400]
    Host-in-the-Shell
    Online

    Member

    Posts: 166
    Threads: 10
    Joined: 2023 Jun
    Reputation: 14
    #5
    2024-06-10, 02:46 AM (This post was last modified: 2024-06-10, 02:47 AM by Host-in-the-Shell. Edited 1 time in total.)
    @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.
    Server specs => OS: Debian 12 | GPU: Arc A380 | CPU: Ryzen 5 5600X | 64GB RAM | 56TB
    TheDreadPirate
    Offline

    Community Moderator

    Posts: 15,375
    Threads: 10
    Joined: 2023 Jun
    Reputation: 460
    Country:United States
    #6
    2024-06-10, 03:22 AM
    Can you post the instructions you followed successfully and I'll append my post with it.
    Jellyfin 10.10.7 (Docker)
    Ubuntu 24.04.2 LTS w/HWE
    Intel i3 12100
    Intel Arc A380
    OS drive - SK Hynix P41 1TB
    Storage
        4x WD Red Pro 6TB CMR in RAIDZ1
    [Image: GitHub%20Sponsors-grey?logo=github]
    anthonylavado
    Offline

    Core Team

    Posts: 30
    Threads: 0
    Joined: 2023 Jun
    Reputation: 3
    #7
    2024-06-10, 03:45 AM (This post was last modified: 2024-06-10, 04:06 AM by anthonylavado. Edited 2 times in total.)
    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.
    Host-in-the-Shell
    Online

    Member

    Posts: 166
    Threads: 10
    Joined: 2023 Jun
    Reputation: 14
    #8
    2024-06-10, 05:17 AM (This post was last modified: 2024-06-10, 05:21 AM by Host-in-the-Shell. Edited 1 time in total.)
    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.
    Server specs => OS: Debian 12 | GPU: Arc A380 | CPU: Ryzen 5 5600X | 64GB RAM | 56TB
    anthonylavado
    Offline

    Core Team

    Posts: 30
    Threads: 0
    Joined: 2023 Jun
    Reputation: 3
    #9
    2024-06-10, 05:41 AM
    That's a good call out - I forgot I had those installed because of other build work Grinning-face
    TheDreadPirate
    Offline

    Community Moderator

    Posts: 15,375
    Threads: 10
    Joined: 2023 Jun
    Reputation: 460
    Country:United States
    #10
    2024-06-10, 12:33 PM (This post was last modified: 2024-06-10, 12:36 PM by TheDreadPirate.)
    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
    Jellyfin 10.10.7 (Docker)
    Ubuntu 24.04.2 LTS w/HWE
    Intel i3 12100
    Intel Arc A380
    OS drive - SK Hynix P41 1TB
    Storage
        4x WD Red Pro 6TB CMR in RAIDZ1
    [Image: GitHub%20Sponsors-grey?logo=github]
    Pages (3): 1 2 3 Next »

    « Next Oldest | Next Newest »

    Users browsing this thread: 1 Guest(s)


    • View a Printable Version
    • Subscribe to this thread
    Forum Jump:

    Home · Team · Help · Contact
    © Designed by D&D - Powered by MyBB
    L


    Jellyfin

    The Free Software Media System

    Linear Mode
    Threaded Mode