Intel Arc GPU configuration & hardware control issues (fan speed, temp sensor, firmware upgrades)

I bought an Intel Arc A750, this is my configuration, any comments? It builds, but does it make sense?

{ config, lib, pkgs, ...}:
{
	# Enable OpenGL
	hardware.graphics.enable = true; # automatic

	hardware.intel-gpu-tools.enable = true;

	# allow shared intel gpu in VMs
	virtualisation.kvmgt.enable = true;

	# video playback hardware acceleration
	#ffmpeg.hwaccel_args = "preset-vaapi";	# WHERE TO SET THIS??
	
	hardware.graphics.extraPackages = with pkgs; [
		intel-media-driver # for newer hardware broadwell (2014) and newer

        vpl-gpu-rt # QSV runtime, may cause kernel to recompile, works


		# intel-ocl # official OpenCL runtime
	];

	environment.systemPackages = with pkgs; [
		nvtopPackages.intel
		inteltool # provides info about system

		igsc # graphics system controller firmware update library
		haskellPackages.intel-powermon

		# OpenCL
		#intel-compute-runtime
		#intel-graphics-compiler
	];
}

I don’t think libvpl or embree make sense, they’re just libraries, from my understanding you’d need drivers/runtimes that use them. For example vpl-gqu-rt is a runtime that uses libvpl and implements QSV. Also, intel-compute-runtime replaces intel-ocl here, the latter is deprecated iirc.

1 Like

Okay, card is in and doing graphics without issues. But the fan speed is at max all the time, and fan speed, name and temperature are not displayed correctly in sensors or a plasma applet I use.

$ sensors
...
i915-pci-0300
Adapter: PCI adapter
in0:         738.00 mV 
fan1:           0 RPM
power1:           N/A  (max = 180.00 W, rated max =   0.00 W)
energy1:      38.40 kJ
...

Currently I use the older longterm kernel, switching to 6.18 now

boot.kernelPackages = pkgs.linuxPackages_6_18;

Do I need to load the iHD module manually? Afaik it is the newer one, where i965 is the legacy one with rather bad support.

boot.kernelModules = [ "iHD" ];

Kernel 6.18, no change.

$ sensors
i915-pci-0300
Adapter: PCI adapter
in0:           0.00 V
fan1:           0 RPM
temp1:        +37.0°C
power1:           N/A  (max = 180.00 W, rated max =   0.00 W)
energy1:      12.37 kJ
  • fan speed still max and no reporting
  • no voltage or power usage shown

but temperature works now, lol.

Graphics and audio work fine

$ lspci
03:00.0 VGA compatible controller: Intel Corporation DG2 [Arc A750] (rev 08)
04:00.0 Audio device: Intel Corporation DG2 Audio Controller

It also seems I cannot upgrade the firmware with fwupd, and igsc seems buggy, complicated or not supported, I couldnt even check the status of the GPU

$ run0 fish

# igsc -V
igsc version 0.9.6.0

# igsc help
shows all available commands

#  igsc list-devices
Device [1] '/dev/mei2': 8086:56a1 1025:b102 0000:03:00.00

# igsc fw-data version --device 1025:b102
Error: Failed to get fwdata version from device: 1025:b102
Firmware status: Success (0x0)

# igsc fw version --device 1025:b102
Error: Cannot retrieve firmware version from device: 1025:b102
Firmware status: Success (0x0)

# igsc fw status 1
Firmware Status[1] = 0x84100008
# igsc fw status 4
Firmware Status[4] = 0xe0020003
(no idea what this means)

Even booted up an external windows drive (WinToUSB, trustworthy link but proprietary afaik), installed the official intel driver assistant and upgraded the firmware of the card, no change.

Links

Reddit Thread confirming that the fan is not controllable and does what it wants in a really bad way

This seems to be the hardware control library

Jellyfin docs on intel GPUs

1 Like

I had to use this instead:

boot.kernelParams = [ "i915" ];
environment.variables.LIBVA_DRIVER_NAME = "iHD";

But if you’re using jellyfin that envvar (2nd line, for va-api support) may need passing to the system service directly.

1 Like

I will try those, but the GPU side seems to work.

Just fan control…

Hate to be bearer of bad news, but I can tell you first hand that at least for A310 you’re out of luck. Looks like it might be that case for A750 as well. You might try reading those links and giving upgrading firmware a go (igsc is there in nixpkgs):

but at least for my card it did not help.

1 Like

I will see if I can change the fan curve on windows and if it persists.

Otherwise I might do some very hacky things like using a pwm fan splitter and controlling the GPU fans via my case fans, as those are pretty silent.

I might need a pwm fan dummy like this to plug into the GPU so it doesn’t complain.

Don’t go hardware hacking like that for what is clearly fixable in software. Eventually intel will solve it; complain to their customer support if you want to have something actionable to do.

@jaen is anyway comparing behavior across Windows/Linux, chances are slim it’s actually the same issue on both platforms.

1 Like

I guess I must’ve scrounged up the wrong link from my browsing history then, because at least my issue is on NixOS and I’ve seen similar thread for other Linuxes, including people try to set the fan curve on windows and it not persisting across restarts (which means there is some way to do it, but nobody reverse engineered it so far). And as far as I understand from those threads the issue is in the firmware, so it’s not THAT unlikely it’s the same issue; no luck with firmware upgrade on my end, though…

Maybe hardware hacking isn’t the answer (even my A310 can’t go fanless when the only thing it was used for was PRIME, ask me how I know), but it doesn’t look like Intel is caring about the complaints either.

When I was in Arch Linux I used to follow their wiki. But, now as I’m on NixOS, it’s wiki gets my job done, the things that are necessary for me. I have had a very bitter experience with Intel’s customer support for GPUs on Linux. And, many API’s aren’t just implemented yet. After kernel 6.12 or smth there aren’t much significant changes. And, all the work now going on Xe kernel drivers. And, Xe specifically targets Battlemage GPUs. So, Alchemist GPUs aren’t in a great situation right now.

1 Like

Well, my fanspeed is still not controllable and always on max…

Today I tried playing a video through MPV with hwdec=auto and this is the output I got,

[qp@db:~]$ mpv video.webm
â—Ź Video  --vid=1               (av1 1920x1080 23.976 fps) [default]
â—Ź Audio  --aid=1  --alang=eng  (opus 2ch 48000 Hz) [default]
MESA-INTEL: warning: ../src/intel/vulkan/anv_formats.c:981: FINISHME: support more multi-planar formats with DRM modifiers
[ffmpeg/video] av1: Device does not support the VK_KHR_video_decode_queue extension!
[ffmpeg/video] av1: Your platform doesn't support hardware accelerated AV1 decoding.
[ffmpeg/video] av1: Failed to get pixel format.
[ffmpeg/video] av1: Get current frame error
Error while decoding frame (hardware decoding)!
Cannot load libcuda.so.1
Using hardware decoding (vaapi).
AO: [pipewire] 48000Hz stereo 2ch floatp
VO: [gpu-next] 1920x1080 vaapi[nv12]
AV: 00:00:02 / 00:06:14 (1%) A-V: -0.000
Exiting... (Quit)

I then checked with hwdec=vaapi and it works fine. This is the output I got of vainfo,

[qp@db:~]$ nix-shell -p libva-utils --run vainfo
this path will be fetched (0.49 MiB download, 3.45 MiB unpacked):
  /nix/store/yj3ymvw27w55s13miqlmlafwa8vi95nx-libva-utils-2.22.0
copying path '/nix/store/yj3ymvw27w55s13miqlmlafwa8vi95nx-libva-utils-2.22.0' from 'https://cache.nixos.org'...
Trying display: wayland
Trying display: x11
libva info: VA-API version 1.22.0
libva info: User environment variable requested driver 'iHD'
libva info: Trying to open /run/opengl-driver/lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.22 (libva 2.22.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 25.3.4 ()
vainfo: Supported profile and entrypoints
      VAProfileNone                   :	VAEntrypointVideoProc
      VAProfileNone                   :	VAEntrypointStats
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointEncSliceLP
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointEncSliceLP
      VAProfileJPEGBaseline           :	VAEntrypointVLD
      VAProfileJPEGBaseline           :	VAEntrypointEncPicture
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSliceLP
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointEncSliceLP
      VAProfileHEVCMain10             :	VAEntrypointVLD
      VAProfileHEVCMain10             :	VAEntrypointEncSliceLP
      VAProfileVP9Profile0            :	VAEntrypointVLD
      VAProfileVP9Profile0            :	VAEntrypointEncSliceLP
      VAProfileVP9Profile1            :	VAEntrypointVLD
      VAProfileVP9Profile1            :	VAEntrypointEncSliceLP
      VAProfileVP9Profile2            :	VAEntrypointVLD
      VAProfileVP9Profile2            :	VAEntrypointEncSliceLP
      VAProfileVP9Profile3            :	VAEntrypointVLD
      VAProfileVP9Profile3            :	VAEntrypointEncSliceLP
      VAProfileHEVCMain12             :	VAEntrypointVLD
      VAProfileHEVCMain422_10         :	VAEntrypointVLD
      VAProfileHEVCMain422_10         :	VAEntrypointEncSliceLP
      VAProfileHEVCMain422_12         :	VAEntrypointVLD
      VAProfileHEVCMain444            :	VAEntrypointVLD
      VAProfileHEVCMain444            :	VAEntrypointEncSliceLP
      VAProfileHEVCMain444_10         :	VAEntrypointVLD
      VAProfileHEVCMain444_10         :	VAEntrypointEncSliceLP
      VAProfileHEVCMain444_12         :	VAEntrypointVLD
      VAProfileHEVCSccMain            :	VAEntrypointVLD
      VAProfileHEVCSccMain            :	VAEntrypointEncSliceLP
      VAProfileHEVCSccMain10          :	VAEntrypointVLD
      VAProfileHEVCSccMain10          :	VAEntrypointEncSliceLP
      VAProfileHEVCSccMain444         :	VAEntrypointVLD
      VAProfileHEVCSccMain444         :	VAEntrypointEncSliceLP
      VAProfileAV1Profile0            :	VAEntrypointVLD
      VAProfileAV1Profile0            :	VAEntrypointEncSliceLP
      VAProfileHEVCSccMain444_10      :	VAEntrypointVLD
      VAProfileHEVCSccMain444_10      :	VAEntrypointEncSliceLP

I don’t know how to fix the first issue I encountered.

Reference: Intel Arc GPU, ffmpeg AV1 hardware encoding - #2 by ayon

I don’t think I’m facing the similar issue, I’ll let you know.

Yeah NOBODY seems to be.

I did everything possible, including using windows, no change.

I will try this “MSI afterburner” software stuff and see if that magically locked something. Would be very much preferred of course

I think, if using Windows 11 with latest driver and Arc Control, the fans aren’t controllable, this might be an issue related to hardware. Today, I installed nvtop and the MEM usage looking really weird. On the top left it’s nvtop and on the bottom left it’s intel gpu top.

If I’m using only one terminal (alacritty) and run nvtop, it uses 0.7Gi. If I open a new Terminal, it uses 1.5Gi (alacritty x 2). If I open alacritty (running nvtop) and (ungoogled) Chromium or Firefox, It uses 1.9Gi. After that, If I play a video using a browser from YouTube on 1080p, it uses 3.5Gi. If I play the same video on 4K on Firefox/mpv(from alacritty) it uses 4Gi on Firefox and N/A on Chromium. So, I also tested playing on 1440p on Chromium and it uses 7Gi.

The values I mentioned aren’t exact but around that range and they fluctuate very much and the unit I used was provided by NVTOP. Now, I want a suggestion on what I can do? Should I boot into Ubuntu, (the only supported distribution by Intel Arc) to check same if thing happens in there?

Running as root fixes the issue and shows some sensible output.