Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ipu6-camera-app

A fix for the Dell Precision 5680 camera not working on Ubuntu (and other Intel IPU6 laptops hitting the same problem): a minimal native camera app that actually shows you the picture, using plain V4L2/GStreamer -- no libcamera, no PipeWire camera capture, no Cheese/qvidcap abstractions. Built and tested on a Dell Precision 5680 running Ubuntu 24.04.

Live preview, Take Photo, Start/Stop Recording. Nothing else.

Why this exists

Intel IPU6 cameras on Linux don't show up as normal webcams, so most camera apps (Cheese, GNOME's own camera picker, browser video calls) can't see them directly. The usual fix is a bridge that presents the camera as a regular /dev/videoN device via v4l2loopback. Once that bridge exists, you still need something that actually opens that device and shows you the picture -- this is that something, built specifically to be simple and to work around a v4l2loopback/GStreamer buffer-pool interaction that trips up the "obvious" pipeline (see docs/CAMERA_PIPELINE.md).

Requirements

  • A working V4L2 capture device at /dev/video0 (1280x720 YUYV @ 30fps by default). On IPU6 hardware this means you need a bridge running first -- this app was built and tested against ipu6-camera-daemon, which handles the IPU6 <-> v4l2loopback side and exposes /dev/video0 on demand. Any equivalent icamerasrc ! ... ! v4l2sink bridge should work too.
  • Ubuntu 24.04 (or similar), GTK 4, GStreamer 1.x, Python 3.

Tested on

  • Dell Precision 5680
  • Intel IPU6 camera, OV02C10 sensor
  • Ubuntu 24.04, kernel 7.0.0-30-generic
  • v4l2loopback 0.15.3, exclusive_caps=1

Install

git clone https://github.com/NANlinear/ipu6-camera-app.git
cd ipu6-camera-app
./install.sh

This installs the required apt packages, makes main.py executable, and adds a "Camera" entry to your application menu.

Run

From the app menu ("Camera"), or directly:

python3 main.py

Usage

  • Take Photo saves a JPEG to ~/Pictures/IMG_<timestamp>.jpg.
  • Start/Stop Recording saves a WebM (VP8, no audio) to ~/Videos/VID_<timestamp>.webm.
  • The status line at the top reports camera state and errors. If the camera feed drops, the app automatically retries every 1.5s.
  • The preview window is freely resizable and keeps the camera's aspect ratio; it scales cleanly on high-DPI and 4K displays. Photos and recordings are always saved at the native capture resolution -- the window size never affects them.

Configuration

Capture device/resolution are set at the top of main.py, or can be overridden at launch without editing the file:

CAMERA_DEVICE=/dev/video2 CAMERA_WIDTH=1920 CAMERA_HEIGHT=1080 python3 main.py

Technical notes

The non-obvious part of this app is entirely in how it talks to /dev/video0 -- see docs/CAMERA_PIPELINE.md for why the pipeline looks the way it does, what failed first, and how recording avoids opening a second connection to the camera.

Acknowledgments

The IPU6 <-> v4l2loopback bridge this app relies on -- ipu6-camera-daemon by Gregory Havenga -- is what makes /dev/video0 usable at all on this hardware. This app doesn't include or modify any of its code; it's simply built and tested against it as the recommended companion piece. If you're setting this up from scratch, install that first.

License

MIT, see LICENSE.

About

Fix for Dell Precision 5680 (and other Intel IPU6 laptop) camera not working on Ubuntu -- minimal GTK4/GStreamer camera app with live preview, photo, and recording

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages