Skip to content

Instantly share code, notes, and snippets.

@jmkim
Created August 21, 2025 04:51
Show Gist options
  • Select an option

  • Save jmkim/011e7f4c96200b93f955aa8f689bcf49 to your computer and use it in GitHub Desktop.

Select an option

Save jmkim/011e7f4c96200b93f955aa8f689bcf49 to your computer and use it in GitHub Desktop.
Install the IPU6 Webcam Driver on Debian 13 (Trixie)

Install the IPU6 Webcam Driver on Debian 13 (Trixie)

Since kernel 6.10, the IPU6 driver has been included in the mainline kernel. This guide explains how to install the driver on Debian 13 and its derivatives.

Tested Environment

  • PC: Lenovo ThinkPad X1 Carbon Gen 12
    • Camera: UHD 8.0MP + IR discrete, with privacy shutter, MIPI, fixed focus, Computer Vision, temporal noise reduction
  • OS: Debian GNU/Linux 13 “Trixie”
    • Kernel: 6.12.38+deb13-amd64

Installation Steps

  1. Install the required packages

    sudo apt install linux-headers-amd64 dkms git
  2. Clone the driver source

    git clone https://github.com/intel/ipu6-drivers
    cd ipu6-drivers
  3. Add the DKMS module

    sudo dkms add .
  4. Build and install the module

    sudo dkms build ipu6-drivers/0.0.0
    sudo dkms install ipu6-drivers/0.0.0

    Or, simply run:

    sudo dkms autoinstall ipu6-drivers/0.0.0

References

@obiwankennedy
Copy link

obiwankennedy commented Oct 28, 2025

Is it enough to get the camera available in userspace (via v4l2) ?

I installed the driver, then the camera-bins and camera hal.

@jmkim
Copy link
Author

jmkim commented Oct 28, 2025

@obiwankennedy which distro did you use? Some distros may have the driver already

@obiwankennedy
Copy link

obiwankennedy commented Oct 28, 2025

Debian trixie, fresh install. I got: this error: deferred probe pending: intel-ipu6: IPU6 bridge init failed
Among many lines :

[ 36.850183] intel-ipu6 0000:00:05.0: IPU6 in secure mode touch 0x80000000 mask 0x0
[ 36.857739] intel-ipu6 0000:00:05.0: FW version: 20230925

I just installed the camera-bins and camera hal. then I got the same message with :

[ 49.068914] intel-ipu6 0000:00:05.0: Found supported sensor OVTI02E1:00
[ 49.068952] intel-ipu6 0000:00:05.0: Connected 1 cameras
[ 49.070072] intel-ipu6 0000:00:05.0: Sending BOOT_LOAD to CSE
[ 49.108534] intel-ipu6 0000:00:05.0: Sending AUTHENTICATE_RUN to CSE
[ 49.158548] intel-ipu6 0000:00:05.0: CSE authenticate_run done
[ 49.158567] intel-ipu6 0000:00:05.0: IPU6-v4[7d19] hardware version 6

So it seems to be better. But still no application can see a camera.

v4l2-ctl --all:

Driver Info:
	Driver name      : isys
	Card type        : ipu6
	Bus info         : PCI:0000:00:05.0
	Driver version   : 6.12.48
	Capabilities     : 0xa4a00001
		Video Capture
		Metadata Capture
		I/O MC
		Streaming
		Extended Pix Format
		Device Capabilities
	Device Caps      : 0x24a00001
		Video Capture
		Metadata Capture
		I/O MC
		Streaming
		Extended Pix Format
Media Driver Info:
	Driver name      : intel-ipu6
	Model            : ipu6
	Serial           : 
	Bus info         : PCI:0000:00:05.0
	Media version    : 6.12.48
	Hardware revision: 0x10280cc8 (271060168)
	Driver version   : 6.12.48
Interface Info:
	ID               : 0x03000003
	Type             : V4L Video
Entity Info:
	ID               : 0x00000001 (1)
	Name             : Intel IPU6 ISYS Capture 0
	Function         : V4L2 I/O
	Pad 0x01000002   : 0: Sink, Must Connect
	  Link 0x020000fd: from remote pad 0x10000c3 of entity 'Intel IPU6 CSI2 0' (Video Interface Bridge): Data
Priority: 2
Video input : 0 (Intel IPU6 ISYS Capture 0: ok)
Format Video Capture:
	Width/Height      : 1280/720
	Pixel Format      : 'YUYV' (YUYV 4:2:2)
	Field             : Any
	Bytes per Line    : 0
	Size Image        : 0
	Colorspace        : Default
	Transfer Function : Default (maps to Rec. 709)
	YCbCr/HSV Encoding: Default (maps to ITU-R 601)
	Quantization      : Default (maps to Limited Range)
	Flags             : 
Format Metadata Capture:
	Sample Format   : 'MET8' (8-bit Generic Metadata)
	Buffer Size     : 9600

@jmkim
Copy link
Author

jmkim commented Oct 28, 2025

@obiwankennedy I will ping you when I get it worked with Debian Trixie. Mine did not work neither with this way.

Sorry, I published this invalid draft :( Maybe helpful for finding the hint..

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment