Nixos of Intel Core Ultra

Anyone out there got their hands on the new Intel Core Ultra chips and made it work? My setup’s graphics keeps lagging and wifi is absent. Any idea of a work around?

i used the following to get it to recognize the relevant graphics driver but the graphics is lagging and theres presence of ghosting:
https://nixos.wiki/wiki/Intel_Graphics

1 Like

The link is actually Intel Graphics - NixOS Wiki now.
So far I haven’t gotten access to this generation and no one has shown up to contribute to a laptop with it in nixos-hardware: GitHub - NixOS/nixos-hardware: A collection of NixOS modules covering hardware quirks.

I believe the driver for your system should be the new xe driver? I merged yesterday a configuration for a laptop, where you had to i915.enable_psr=0 as kernel boot parameter to make it less lagging. See details here: add Dell Latitude 9430 by jheidbrink · Pull Request #967 · NixOS/nixos-hardware · GitHub

For wifi support make sure you got firmware enabled: hardware.enableRedistributableFirmware = true;. Usually you can see kernel modules complaining about that in dmesg. Also try to use the latest kernel like this:

{
  boot.kernelPackages = pkgs.linuxPackages_latest;
}

@Mic92 So I got everything working by updating to the latest 24.05 channel and rebuilding (while using the latest linux kernel). On wayland trackpad gestures are working well but on X11 they are not. Also camera is not being detected. Beside that experience is as smooth as the rest. Appreciate all the work gone into making it compatible.

I’m using dell latitude 7350 btw :slight_smile:

Maybe you need hardware.ipu6.enable = true;? Also this is just a wild guess, I just saw it here: add Dell Latitude 9430 by jheidbrink · Pull Request #967 · NixOS/nixos-hardware · GitHub

Also pull requests to nixos-hardware are welcome.

@Mic92 upon adding these I get the following error when rebuilding with the latest linux kernel. However if I use the default kernel it rebuilds fine but the gnome’s graphics performance is drastically affected. Camera does not work irregardless of the linux kernel :
hardware.ipu6.enable = true;
hardware.ipu6.platform = “ipu6epmtl”;

seems that the driver is using depriciated variables when interacting with the kernel

cc1: some warnings being treated as errors
make[4]: *** [/nix/store/r7r9y5fzxdd4fzv2j5spvj98g2mciibz-linux-6.9.4-dev/lib/modules/6.9.4/source/scripts/Makefile.build:244: /build/source/drivers/media/i2c/ov02c10.o] Error 1
  CC [M]  /build/source/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.o
/build/source/drivers/media/i2c/ov2740.c: In function 'ov2740_set_format':
/build/source/drivers/media/i2c/ov2740.c:1119:18: error: implicit declaration of function 'v4l2_subdev_get_try_format'; did you mean 'v4l2_subdev_get_fmt'? [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Werror=implicit-function-declaration8;;]
 1119 |                 *v4l2_subdev_get_try_format(sd, sd_state, fmt->pad) = fmt->format;
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~
      |                  v4l2_subdev_get_fmt
/build/source/drivers/media/i2c/ov2740.c:1119:17: error: invalid type argument of unary '*' (have 'int')
 1119 |                 *v4l2_subdev_get_try_format(sd, sd_state, fmt->pad) = fmt->format;
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/build/source/drivers/media/i2c/ov2740.c: In function 'ov2740_get_format':
/build/source/drivers/media/i2c/ov2740.c:1161:31: error: invalid type argument of unary '*' (have 'int')
 1161 |                 fmt->format = *v4l2_subdev_get_try_format(&ov2740->sd,
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1162 |                                                           sd_state,
      |                                                           ~~~~~~~~~
 1163 |                                                           fmt->pad);
      |                                                           ~~~~~~~~~
/build/source/drivers/media/i2c/ov2740.c: In function 'ov2740_open':
/build/source/drivers/media/i2c/ov2740.c:1235:34: warning: passing argument 2 of 'ov2740_update_pad_format' makes pointer from integer without a cast [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wint-conversion-Wint-conversion8;;]
 1235 |                                  v4l2_subdev_get_try_format(sd, fh->state, 0));
      |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                  |
      |                                  int
/build/source/drivers/media/i2c/ov2740.c:844:65: note: expected 'struct v4l2_mbus_framefmt *' but argument is of type 'int'
  844 |                                      struct v4l2_mbus_framefmt *fmt)
      |                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
/build/source/drivers/media/i2c/hm2170.c: In function 'hm2170_set_format':
/build/source/drivers/media/i2c/hm2170.c:1068:18: error: implicit declaration of function 'v4l2_subdev_get_try_format'; did you mean 'v4l2_subdev_get_fmt'? [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Werror=implicit-function-declaration8;;]
 1068 |                 *v4l2_subdev_get_try_format(sd, sd_state, fmt->pad) = fmt->format;
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~
      |                  v4l2_subdev_get_fmt
/build/source/drivers/media/i2c/hm2170.c:1068:17: error: invalid type argument of unary '*' (have 'int')
 1068 |                 *v4l2_subdev_get_try_format(sd, sd_state, fmt->pad) = fmt->format;
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/build/source/drivers/media/i2c/hm2170.c: In function 'hm2170_get_format':
/build/source/drivers/media/i2c/hm2170.c:1100:31: error: invalid type argument of unary '*' (have 'int')
 1100 |                 fmt->format = *v4l2_subdev_get_try_format(&hm2170->sd,
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1101 |                                                           sd_state, fmt->pad);
      |                                                           ~~~~~~~~~~~~~~~~~~~
/build/source/drivers/media/i2c/hm2170.c: In function 'hm2170_open':
/build/source/drivers/media/i2c/hm2170.c:1148:34: warning: passing argument 2 of 'hm2170_update_pad_format' makes pointer from integer without a cast [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wint-conversion-Wint-conversion8;;]
 1148 |                                  v4l2_subdev_get_try_format(sd, fh->state, 0));
      |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                  |
      |                                  int
/build/source/drivers/media/i2c/hm2170.c:894:65: note: expected 'struct v4l2_mbus_framefmt *' but argument is of type 'int'
  894 |                                      struct v4l2_mbus_framefmt *fmt)
      |                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
[  1%] Building C object CMakeFiles/camhal_static.dir/modules/ia_css/ipu6ep/src/ia_css_psys_program_group_manifest.c.o
cc1: some warnings being treated as errors
[  2%] Building C object CMakeFiles/camhal_static.dir/modules/ia_css/ipu6ep/src/ia_css_terminal.c.o
[  3%] Building C object CMakeFiles/camhal_static.dir/modules/ia_css/ipu6ep/src/ia_css_rbm.c.o
make[4]: *** [/nix/store/r7r9y5fzxdd4fzv2j5spvj98g2mciibz-linux-6.9.4-dev/lib/modules/6.9.4/source/scripts/Makefile.build:244: /build/source/drivers/media/i2c/ov2740.o] Error 1
[  4%] Building C object CMakeFiles/camhal_static.dir/modules/ia_css/ipu6ep/src/ia_css_program_group_data.c.o
[  6%] Building C object CMakeFiles/camhal_static.dir/modules/ia_css/ipu6ep/src/ia_css_psys_process_group_cmd_impl.c.o
[  6%] Building C object CMakeFiles/camhal_static.dir/modules/ia_css/ipu6ep/src/ia_css_psys_process_group.c.o
  CC [M]  /build/source/drivers/media/pci/intel/ipu6/ipu6-isys-gpc.o
[  7%] Building C object CMakeFiles/camhal_static.dir/modules/ia_css/ipu6ep/src/ia_css_psys_process.c.o
[  8%] Building C object CMakeFiles/camhal_static.dir/modules/ia_css/ipu6ep/src/vied_nci_psys_system.c.o
make[4]: *** [/nix/store/r7r9y5fzxdd4fzv2j5spvj98g2mciibz-linux-6.9.4-dev/lib/modules/6.9.4/source/scripts/Makefile.build:244: /build/source/drivers/media/i2c/hm2170.o] Error 1
[  9%] Building C object CMakeFiles/camhal_static.dir/modules/ia_css/ipu6ep/src/ia_css_psys_terminal.c.o
make[3]: *** [/nix/store/r7r9y5fzxdd4fzv2j5spvj98g2mciibz-linux-6.9.4-dev/lib/modules/6.9.4/source/scripts/Makefile.build:485: /build/source/drivers/media/i2c] Error 2
  CC [M]  /build/source/drivers/media/pci/intel/ipu6/../ipu-isys-csi2-be-soc.o
[ 10%] Building C object CMakeFiles/camhal_static.dir/modules/ia_css/ipu6ep/src/ia_css_terminal_manifest.c.o
[ 11%] Building C object CMakeFiles/camhal_static.dir/modules/ia_css/ipu6ep/src/ia_css_program_group_param.c.o
[ 12%] Building C object CMakeFiles/camhal_static.dir/modules/ia_css/ipu6ep/src/ia_css_psys_terminal_manifest.c.o
[ 13%] Building C object CMakeFiles/camhal_static.dir/modules/ia_css/ipu6ep/src/ia_css_kernel_bitmap.c.o
  CC [M]  /build/source/drivers/media/pci/intel/ipu6/../ipu-fw-isys.o
[ 14%] Building C object CMakeFiles/camhal_static.dir/modules/ia_css/ipu6ep/src/ia_css_psys_program_manifest.c.o
In file included from /build/source/modules/ia_css/ipu6ep/src/ia_css_psys_process_group.c:27:
/build/source/modules/ia_css/ipu6ep/include/ia_css_psys_process_group_impl.h: In function 'ia_css_process_group_print':
/build/source/modules/ia_css/ipu6ep/include/ia_css_psys_process_group_impl.h:535:18: warning: variable 'routing_bitmap' set but not used [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wunused-but-set-variable-Wunused-but-set-variable8;;]
  535 |     ia_css_rbm_t routing_bitmap;
      |                  ^~~~~~~~~~~~~~
/build/source/modules/ia_css/ipu6ep/include/ia_css_psys_process_group_impl.h: In function 'ia_css_can_process_group_submit':
/build/source/modules/ia_css/ipu6ep/include/ia_css_psys_process_group_impl.h:703:25: warning: variable 'buffer' set but not used [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wunused-but-set-variable-Wunused-but-set-variable8;;]
  703 |         vied_vaddress_t buffer;
      |                         ^~~~~~
/build/source/modules/ia_css/ipu6ep/include/ia_css_psys_process_group_impl.h:691:9: warning: variable 'retval' set but not used [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wunused-but-set-variable-Wunused-but-set-variable8;;]
  691 |     int retval = -1;
      |         ^~~~~~
/build/source/modules/ia_css/ipu6ep/include/ia_css_psys_process_group_impl.h: In function 'ia_css_can_enqueue_buffer_set':
/build/source/modules/ia_css/ipu6ep/include/ia_css_psys_process_group_impl.h:797:25: warning: variable 'buffer' set but not used [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wunused-but-set-variable-Wunused-but-set-variable8;;]
  797 |         vied_vaddress_t buffer;
      |                         ^~~~~~
/build/source/modules/ia_css/ipu6ep/include/ia_css_psys_process_group_impl.h:774:9: warning: variable 'retval' set but not used [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wunused-but-set-variable-Wunused-but-set-variable8;;]
  774 |     int retval = -1;
      |         ^~~~~~
/build/source/modules/ia_css/ipu6ep/include/ia_css_psys_process_group_impl.h: In function 'ia_css_can_process_group_start':
/build/source/modules/ia_css/ipu6ep/include/ia_css_psys_process_group_impl.h:856:9: warning: variable 'retval' set but not used [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wunused-but-set-variable-Wunused-but-set-variable8;;]
  856 |     int retval = -1;
      |         ^~~~~~
[ 15%] Building CXX object CMakeFiles/camhal_static.dir/src/3a/I3AControlFactory.cpp.o
[ 16%] Building CXX object CMakeFiles/camhal_static.dir/src/3a/AiqUtils.cpp.o
[ 17%] Building CXX object CMakeFiles/camhal_static.dir/src/3a/intel3a/Intel3AParameter.cpp.o
  CC [M]  /build/source/drivers/media/pci/intel/ipu6/../ipu-isys-video.o
[ 18%] Building CXX object CMakeFiles/camhal_static.dir/src/3a/AiqResult.cpp.o
[ 19%] Building CXX object CMakeFiles/camhal_static.dir/src/3a/AiqResultStorage.cpp.o
[ 20%] Building CXX object CMakeFiles/camhal_static.dir/src/3a/SensorManager.cpp.o
[ 21%] Building CXX object CMakeFiles/camhal_static.dir/src/3a/LensManager.cpp.o
  CC [M]  /build/source/drivers/media/pci/intel/ipu6/../ipu-isys-queue.o
[ 22%] Building CXX object CMakeFiles/camhal_static.dir/src/3a/AiqCore.cpp.o
/build/source/drivers/media/pci/intel/ipu6/../cio2-bridge.c:471:5: warning: no previous prototype for 'cio2_bridge_init' [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wmissing-prototypes-Wmissing-prototypes8;;]
  471 | int cio2_bridge_init(struct pci_dev *cio2)
      |     ^~~~~~~~~~~~~~~~
[ 23%] Building CXX object CMakeFiles/camhal_static.dir/src/3a/AiqEngine.cpp.o
  CC [M]  /build/source/drivers/media/pci/intel/ipu6/../ipu-isys-subdev.o
[ 24%] Building CXX object CMakeFiles/camhal_static.dir/src/3a/AiqSetting.cpp.o
  CC [M]  /build/source/drivers/media/pci/intel/ipu6/../ipu-psys.o
[ 25%] Building CXX object CMakeFiles/camhal_static.dir/src/3a/AiqUnit.cpp.o
[ 26%] Building CXX object CMakeFiles/camhal_static.dir/src/3a/MakerNote.cpp.o
[ 27%] Building CXX object CMakeFiles/camhal_static.dir/src/3a/Dvs.cpp.o
  CC [M]  /build/source/drivers/media/pci/intel/ipu6/ipu6-psys.o
  CC [M]  /build/source/drivers/media/pci/intel/ipu6/ipu-resources.o
  CC [M]  /build/source/drivers/media/pci/intel/ipu6/ipu6-psys-gpc.o
/build/source/drivers/media/pci/intel/ipu6/../ipu-isys.c: In function 'isys_register_devices':
/build/source/drivers/media/pci/intel/ipu6/../ipu-isys.c:979:9: error: implicit declaration of function 'strlcpy'; did you mean 'strncpy'? [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Werror=implicit-function-declaration8;;]
  979 |         strlcpy(isys->media_dev.model,
      |         ^~~~~~~
      |         strncpy
[ 28%] Building CXX object CMakeFiles/camhal_static.dir/src/3a/Ltm.cpp.o
  CC [M]  /build/source/drivers/media/pci/intel/ipu6/ipu6-l-scheduler.o
cc1: some warnings being treated as errors
make[5]: *** [/nix/store/r7r9y5fzxdd4fzv2j5spvj98g2mciibz-linux-6.9.4-dev/lib/modules/6.9.4/source/scripts/Makefile.build:244: /build/source/drivers/media/pci/intel/ipu6/../ipu-isys.o] Error 1
make[5]: *** Waiting for unfinished jobs....
/build/source/drivers/media/pci/intel/ipu6/../ipu-isys-subdev.c: In function '__ipu_isys_get_ffmt':
/build/source/drivers/media/pci/intel/ipu6/../ipu-isys-subdev.c:166:24: error: implicit declaration of function 'v4l2_subdev_get_try_format'; did you mean 'v4l2_subdev_get_fmt'? [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Werror=implicit-function-declaration8;;]
  166 |                 return v4l2_subdev_get_try_format(sd, state, pad);
      |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~
      |                        v4l2_subdev_get_fmt
/build/source/drivers/media/pci/intel/ipu6/../ipu-isys-subdev.c:166:24: warning: returning 'int' from a function with return type 'struct v4l2_mbus_framefmt *' makes pointer from integer without a cast [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wint-conversion-Wint-conversion8;;]
  166 |                 return v4l2_subdev_get_try_format(sd, state, pad);
      |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/build/source/drivers/media/pci/intel/ipu6/../ipu-isys-subdev.c: In function '__ipu_isys_get_selection':
/build/source/drivers/media/pci/intel/ipu6/../ipu-isys-subdev.c:204:32: error: implicit declaration of function 'v4l2_subdev_get_try_crop'; did you mean 'v4l2_subdev_state_get_crop'? [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Werror=implicit-function-declaration8;;]
  204 |                         return v4l2_subdev_get_try_crop(sd, state, pad);
      |                                ^~~~~~~~~~~~~~~~~~~~~~~~
      |                                v4l2_subdev_state_get_crop
/build/source/drivers/media/pci/intel/ipu6/../ipu-isys-subdev.c:204:32: warning: returning 'int' from a function with return type 'struct v4l2_rect *' makes pointer from integer without a cast [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wint-conversion-Wint-conversion8;;]
  204 |                         return v4l2_subdev_get_try_crop(sd, state, pad);
      |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/build/source/drivers/media/pci/intel/ipu6/../ipu-isys-subdev.c:206:32: error: implicit declaration of function 'v4l2_subdev_get_try_compose'; did you mean 'v4l2_subdev_state_get_compose'? [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Werror=implicit-function-declaration8;;]
  206 |                         return v4l2_subdev_get_try_compose(sd, state, pad);
      |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                v4l2_subdev_state_get_compose
/build/source/drivers/media/pci/intel/ipu6/../ipu-isys-subdev.c:206:32: warning: returning 'int' from a function with return type 'struct v4l2_rect *' makes pointer from integer without a cast [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wint-conversion-Wint-conversion8;;]
  206 |                         return v4l2_subdev_get_try_compose(sd, state, pad);
      |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/build/source/drivers/media/pci/intel/ipu6/../ipu-isys-subdev.c: In function 'ipu_isys_subdev_open':
/build/source/drivers/media/pci/intel/ipu6/../ipu-isys-subdev.c:760:25: warning: initialization of 'struct v4l2_mbus_framefmt *' from 'int' makes pointer from integer without a cast [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wint-conversion-Wint-conversion8;;]
  760 |                         v4l2_subdev_get_try_format(sd, fh->state, i);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~
/build/source/drivers/media/pci/intel/ipu6/../ipu-isys-subdev.c:762:25: warning: initialization of 'struct v4l2_rect *' from 'int' makes pointer from integer without a cast [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wint-conversion-Wint-conversion8;;]
  762 |                         v4l2_subdev_get_try_crop(sd, fh->state, i);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~
/build/source/drivers/media/pci/intel/ipu6/../ipu-isys-subdev.c:764:25: warning: initialization of 'struct v4l2_rect *' from 'int' makes pointer from integer without a cast [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wint-conversion-Wint-conversion8;;]
  764 |                         v4l2_subdev_get_try_compose(sd, fh->state, i);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/build/source/drivers/media/pci/intel/ipu6/../ipu-psys.c: In function 'ipu_psys_probe':
/build/source/drivers/media/pci/intel/ipu6/../ipu-psys.c:1650:9: error: implicit declaration of function 'strlcpy'; did you mean 'strncpy'? [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Werror=implicit-function-declaration8;;]
 1650 |         strlcpy(psys->caps.dev_model, IPU_MEDIA_DEV_MODEL_NAME,
      |         ^~~~~~~
      |         strncpy
/build/source/drivers/media/pci/intel/ipu6/../ipu-isys-video.c: In function 'ipu_isys_vidioc_querycap':
/build/source/drivers/media/pci/intel/ipu6/../ipu-isys-video.c:362:9: error: implicit declaration of function 'strlcpy'; did you mean 'strncpy'? [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Werror=implicit-function-declaration8;;]
  362 |         strlcpy(cap->driver, IPU_ISYS_NAME, sizeof(cap->driver));
      |         ^~~~~~~
      |         strncpy
cc1: some warnings being treated as errors
make[5]: *** [/nix/store/r7r9y5fzxdd4fzv2j5spvj98g2mciibz-linux-6.9.4-dev/lib/modules/6.9.4/source/scripts/Makefile.build:244: /build/source/drivers/media/pci/intel/ipu6/../ipu-isys-subdev.o] Error 1
[ 29%] Building CXX object CMakeFiles/camhal_static.dir/src/core/CaptureUnit.cpp.o
[ 30%] Building CXX object CMakeFiles/camhal_static.dir/src/core/DeviceBase.cpp.o
[ 31%] Building CXX object CMakeFiles/camhal_static.dir/src/core/CameraStream.cpp.o
[ 32%] Building CXX object CMakeFiles/camhal_static.dir/src/core/CameraDevice.cpp.o
[ 33%] Building CXX object CMakeFiles/camhal_static.dir/src/core/ProcessorManager.cpp.o
cc1: some warnings being treated as errors
make[5]: *** [/nix/store/r7r9y5fzxdd4fzv2j5spvj98g2mciibz-linux-6.9.4-dev/lib/modules/6.9.4/source/scripts/Makefile.build:244: /build/source/drivers/media/pci/intel/ipu6/../ipu-psys.o] Error 1
[ 34%] Building CXX object CMakeFiles/camhal_static.dir/src/core/RequestThread.cpp.o
[ 35%] Building CXX object CMakeFiles/camhal_static.dir/src/core/SwImageProcessor.cpp.o
[ 36%] Building CXX object CMakeFiles/camhal_static.dir/src/core/BufferQueue.cpp.o
[ 37%] Building CXX object CMakeFiles/camhal_static.dir/src/core/CameraBuffer.cpp.o
cc1: some warnings being treated as errors
make[5]: *** [/nix/store/r7r9y5fzxdd4fzv2j5spvj98g2mciibz-linux-6.9.4-dev/lib/modules/6.9.4/source/scripts/Makefile.build:244: /build/source/drivers/media/pci/intel/ipu6/../ipu-isys-video.o] Error 1
make[4]: *** [/nix/store/r7r9y5fzxdd4fzv2j5spvj98g2mciibz-linux-6.9.4-dev/lib/modules/6.9.4/source/scripts/Makefile.build:485: /build/source/drivers/media/pci/intel/ipu6] Error 2
make[3]: *** [/nix/store/r7r9y5fzxdd4fzv2j5spvj98g2mciibz-linux-6.9.4-dev/lib/modules/6.9.4/source/scripts/Makefile.build:485: /build/source/drivers/media/pci/intel] Error 2
make[2]: *** [/nix/store/r7r9y5fzxdd4fzv2j5spvj98g2mciibz-linux-6.9.4-dev/lib/modules/6.9.4/source/Makefile:1919: /build/source] Error 2
make[1]: *** [/nix/store/r7r9y5fzxdd4fzv2j5spvj98g2mciibz-linux-6.9.4-dev/lib/modules/6.9.4/source/Makefile:240: __sub-make] Error 2
make[1]: Leaving directory '/nix/store/r7r9y5fzxdd4fzv2j5spvj98g2mciibz-linux-6.9.4-dev/lib/modules/6.9.4/build'
make: *** [Makefile:78: all] Error 2
error: builder for '/nix/store/wk44bdaxlwps2xss7psfkra71cwdwyfd-ipu6-drivers-unstable-2023-11-24.drv' failed with exit code 2
error: 1 dependencies of derivation '/nix/store/qg801ws371hgf2pqdmxjz2akbcirq4a7-linux-6.9.4-modules.drv' failed to build
error: 1 dependencies of derivation '/nix/store/1sgvfqw1ahpbiswi09qwf3h1yffrfxgb-nixos-system-nixosLatitude1-24.05.1409.cc54fb41d137.drv' failed to build



ok. Than we need to wait for ipu6 to update to the latest kernel. But I am also unsure if this is actual the right module for your webcam.

@Mic92 is there a way that I can ascertain which is the right kernel?

Usually for new hardware, newer is better.

@Mic92 Sorry I mean how can I ascertain the right driver version for my webcam

For PCI devices, lspci -vv will print for each PCI device also the kernel driver that is used. I believe most webcams are connected over some internal usb bus. So maybe something similar works with lsusb as well? Apart from that in dmesg you can usually see the driver messages if it picked up a detected device.

@Mic92 I believe im using the right modules.

hardware.ipu6.enable = true;
hardware.ipu6.platform = “ipu6epmtl”;

here ‘ipu6epmtl’ I got it from the documentation and refers to the the Meteor Lake processor that I am using (Intel Ultra 7). Correct me if im wrong :slight_smile:

image

Checkout this issue as well: Tracking Issue: Intel MIPI/IPU6 webcam-support · Issue #225743 · NixOS/nixpkgs · GitHub

I have the system76 Lemur Pro, and it’s on that stuff. It does work great in PopOS, so I know all the hardware is good to go with regards to linux working on the thing, just have to figure out the NixOS Secrets :smiley:

1 Like

I have a thinkpad x1 g12 with a i7 155U.

Anyway, everything seems to be working with latest kernel (6.9.2 I think), xe as a kernel module, xe.force_probe and ofc enable redistributableFirmware as previously mentioned here for WiFi.

Camera quality seems a bit shitty, gonna take a closer look at that and the ipu6 settings. But generally running really well. It’s my first Linux box where the fingerprint reader worked out of the box too :rofl:

More info on my setup here: nixos-config/hosts/ndo-gb at 7a59cb4604574ad2b3631f0edd2e1a2716aee7f7 · ndom91/nixos-config · GitHub

EDIT: Looks like this SKU of the Thinkpad X1 G12 has one of those Chicony color + IR cameras, not Intel MIPI/IPU. Worked out of the box with kernel 6.6 and 6.9.2