3

On ubuntu 17.10, I installed recent Intel graphics firmware:

skl_dmc_ver1_26
skl_guc_ver6_1
skl_huc_ver01_07_1398

from https://01.org/linuxgraphics/downloads/firmware using the install.sh scripts. After upgrading to ubuntu 18.04, I noticed that the newer versions of this firmware are already in /lib/firmware/i915.

Now I am not sure which firmware versions are in use - old or new?

dmesg | grep skl_

returns ... skl_dmc_ver1_26.bin (v1.26)

  • Does this mean that the old version is in use?
  • What about guc and huc?
  • How do I change it to the new version?
Bradzzv
  • 107

1 Answers1

2

Short Answer

To change the drivers in use you need to change your kernel version. However you shouldn't do this unless there are specific reasons to do so.

Long Answer

The install.sh scripts have been deprecated and are no longer used. Now there are blobs (Binary Large Objects) that simply need to be downloaded and then copied to /lib/firmware/i915. If you follow the link you posted you will see it has been changed from the last time you downloaded.

For instructions on installing the new blobs see: Updated kernel to 4.8 now missing firmware warnings

As far as quickly seeing which i915 drivers for Skylake you have installed (but not necessarily active for current boot) use:

$ locate i915/skl_
/lib/firmware/i915/skl_dmc_ver1.bin
/lib/firmware/i915/skl_dmc_ver1_23.bin
/lib/firmware/i915/skl_dmc_ver1_26.bin
/lib/firmware/i915/skl_guc_ver1.bin
/lib/firmware/i915/skl_guc_ver1_1059.bin
/lib/firmware/i915/skl_guc_ver4.bin
/lib/firmware/i915/skl_guc_ver4_3.bin
/lib/firmware/i915/skl_guc_ver6.bin
/lib/firmware/i915/skl_guc_ver6_1.bin
/lib/firmware/i915/skl_guc_ver9_33.bin
/lib/firmware/i915/skl_huc_ver01_07_1398.bin

I noticed in your link a new version skl_dmc_ver1_27.bin so I downloaded it and then ran:

$ sudo updatedb
[sudo] password for rick:          
───────────────────────────────────────────────────────────────────────────────────────────
rick@alien:~$ locate dmc_ver1_27
/home/rick/Downloads/skl_dmc_ver1_27.bin
───────────────────────────────────────────────────────────────────────────────────────────
rick@alien:~$ sudo mv /lib/firmware/i915/skl_dmc_ver1_26.bin /lib/firmware/i915/skl_dmc_ver1_26.bin.old
───────────────────────────────────────────────────────────────────────────────────────────
rick@alien:~$ sudo mv /home/rick/Downloads/skl_dmc_ver1_27.bin /lib/firmware/i915/skl_dmc_ver1_27.bin
───────────────────────────────────────────────────────────────────────────────────────────
rick@alien:~$ sudo update-initramfs -u -k `uname -r`
update-initramfs: Generating /boot/initrd.img-4.14.42-041442-generic
W: Possible missing firmware /lib/firmware/i915/skl_dmc_ver1_26.bin for module i915
Adding /lib/firmware/i915/skl_guc_ver9_33.bin

So even though skl_dmc_ver1_27.bin is available it doesn't work with the Kernel 4.14 chain and it still looks for skl_dmc_ver1_26.bin. Ubuntu 18.04 uses the 4.15 kernel chain so apparently it is using skl_dmc_ver1_26.bin as well.


I just downloaded Kernel 4.17 which came out two days ago and it uses the new skl_dmc_ver1_27.bin driver:

$ sudo mv /lib/firmware/i915/skl_dmc_ver1_27.bin /lib/firmware/i915/skl_dmc_ver1_27.bin.old
$ sudo update-initramfs -u -k 4.17.0-041700-generic
update-initramfs: Generating /boot/initrd.img-4.17.0-041700-generic
W: Possible missing firmware /lib/firmware/i915/skl_dmc_ver1_27.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_dmc_ver1_04.bin for module i915
W: Possible missing firmware /lib/firmware/i915/cnl_dmc_ver1_07.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_39.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver9_29.bin for module i915
Adding /lib/firmware/i915/skl_guc_ver9_33.bin

Notice how it's looking for /lib/firmware/i915/skl_dmc_ver1_27.bin


Summary

  • Kernel 4.14 uses skl_dmc_ver1_26.bin.
  • Kernel 4.17 uses skl_dmc_ver1_27.bin.
  • /lib/firmware/i915/skl_guc_ver9_33.bin is used by both Kernels 4.14 and 4.17.

You also asked: "What about guc and huc?" guc is answered immediately above. As far as huc is concerned the same version is used from Kernel 4.14 (and earlier) to Kernel 4.17:

rick@alien:~/Downloads$ sudo mv /lib/firmware/i915/skl_huc_ver01_07_1398.bin /lib/firmware/i915/skl_huc_ver01_07_1398.bin.old
───────────────────────────────────────────────────────────────────────────────────────────
rick@alien:~/Downloads$ sudo update-initramfs -u -k `uname -r`
update-initramfs: Generating /boot/initrd.img-4.14.42-041442-generic
W: Possible missing firmware /lib/firmware/i915/skl_dmc_ver1_26.bin for module i915
W: Possible missing firmware /lib/firmware/i915/skl_huc_ver01_07_1398.bin for module i915
Adding /lib/firmware/i915/skl_guc_ver9_33.bin
  • So there is no direct way to see what version is used (?), I have to remove the firmware from /i915, update-initramfs and look at the warnings - that's cumbersome - thank you for doing it! Seems like it would not make sense deleting the old versions when updating the kernel since they are small and useful in case I revert to the default kernel. – Bradzzv Jun 07 '18 at 08:30
  • There probably is a way of listing what drivers are referenced by initram. The only thing I've found so far doesn't list everything: cat /boot/initrd.img-4.14.42-041442-generic | cpio -t – WinEunuuchs2Unix Jun 07 '18 at 11:00
  • Unfortunately, this command does not list any graphics driver for kernel 4.15. – Bradzzv Jun 11 '18 at 20:03