From patchwork Sat Feb 7 11:30:04 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kieran Bingham X-Patchwork-Id: 26102 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 5144DBD78E for ; Sat, 7 Feb 2026 11:30:10 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 5C17162091; Sat, 7 Feb 2026 12:30:09 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="IohZhF/V"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 8628661F84 for ; Sat, 7 Feb 2026 12:30:08 +0100 (CET) Received: from ping.linuxembedded.co.uk (cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 09401229; Sat, 7 Feb 2026 12:29:24 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1770463764; bh=BDokM9vImddpcPoEQX2nlheMJHXu2RmswBs3TNYwNso=; h=From:Date:Subject:To:Cc:From; b=IohZhF/VF1Ds9222+33fAXZ3bUYBhBqE3Oa69yZBNmcl+ncGe8qW7OCl5h+86RMzp baC9MzqHU5AZqm0H/bvFCIJ6CNowqj8XnKYCIoWj2hx7MM/MXOiU784QVc1aKFQrw3 LQ4JEWYpQWnlGE99MVIJpdIS9NSP0z6NHwrjpMkM= From: Kieran Bingham Date: Sat, 07 Feb 2026 11:30:04 +0000 Subject: [PATCH] utils: Introduce libcamera-bug-report MIME-Version: 1.0 Message-Id: <20260207-kbingham-bug-reporter-v1-1-42f81e4ce5dc@ideasonboard.com> X-B4-Tracking: v=1; b=H4sIADsih2kC/x2MSQqAMAwAvyI5G6h1xa+Ih1ZjDWKVVEUQ/27xO AwzDwQSpgBt8oDQxYE3HyFLExhm4x0hj5FBK10prWpcLHs3mxXt6VBo3+QgweiachhVXpgJYrs LTXz/365/3w8a1BzYZwAAAA== X-Change-ID: 20260207-kbingham-bug-reporter-60285cd034af To: libcamera-devel@lists.libcamera.org Cc: Kieran Bingham X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1770463807; l=27595; i=kieran.bingham@ideasonboard.com; s=20260207; h=from:subject:message-id; bh=BDokM9vImddpcPoEQX2nlheMJHXu2RmswBs3TNYwNso=; b=OoCTamde3DQ6P4W1RGP2kHB25WCgNmWmRV3ck/8J3ct4MqCfcfCgTK9ASE/6y26jHJAYewIqU e6jveVVldY6DZ2YvvrT28XHkEa5XcSxLqKoRmUt40dHkPkb4Ta7OhMK X-Developer-Key: i=kieran.bingham@ideasonboard.com; a=ed25519; pk=FVXKN7YuwHc6UtbRUeTMAmranfsQomA+vnilfglWdaY= X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Introduce a script which can be installed into the system to aide reporting potential camera and media related issues. The script shall capture system information and store it in a temporary file - but it remains the users responsibilty to choose to share this data, and no automatic bug submissions are anticipated. Signed-off-by: Kieran Bingham --- There are many occasions where people would like to report issues with their camera, and there are always a common set of commands that we would like to run to identify potential issues. Provide a helper that will ease reporting of camera related issues especially for bringup of new cameras or when cameras do not show. An example bug report from my system follows, which itself shows a specific bug! $ ./utils/libcamera-bug-report ================================================== Report metadata ================================================== Date: 2026-02-07T11:18:58+00:00 Host: Monstersaurus User: uid=1000(kbingham) gid=1000(kbingham) groups=1000(kbingham),4(adm),20(dialout),24(cdrom),27(sudo),29(audio),30(dip),44(video),46(plugdev),108(kvm),121(lpadmin),132(lxd),133(sambashare),135(docker),998(nix-users) ================================================== Kernel & OS ================================================== $ uname -a Linux Monstersaurus 6.8.0-90-generic #91-Ubuntu SMP PREEMPT_DYNAMIC Tue Nov 18 14:14:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux $ cat /etc/os-release PRETTY_NAME="Ubuntu 24.04.3 LTS" NAME="Ubuntu" VERSION_ID="24.04" VERSION="24.04.3 LTS (Noble Numbat)" VERSION_CODENAME=noble ID=ubuntu ID_LIKE=debian HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" UBUNTU_CODENAME=noble LOGO=ubuntu-logo $ lsb_release -a Distributor ID: Ubuntu Description: Ubuntu 24.04.3 LTS Release: 24.04 Codename: noble ================================================== Media / V4L2 tools ================================================== $ media-ctl --version media-ctl 1.26.1 $ v4l2-ctl --version v4l2-ctl 1.26.1 $ v4l2-ctl --list-devices vim2m (platform:vim2m): /dev/video9 /dev/media3 vimc (platform:vimc): /dev/video2 /dev/video3 /dev/video4 /dev/media1 vivid (platform:vivid-000): /dev/video5 /dev/video6 /dev/video7 /dev/video8 /dev/radio0 /dev/radio1 /dev/vbi0 /dev/vbi1 /dev/swradio0 /dev/v4l-touch0 /dev/media2 Logitech BRIO (usb-0000:0d:00.3-3.4): /dev/video0 /dev/video1 /dev/media0 ================================================== Device nodes ================================================== $ ls -l /dev/video0 /dev/video1 /dev/video2 /dev/video3 /dev/video4 /dev/video5 /dev/video6 /dev/video7 /dev/video8 /dev/video9 /dev/v4l-subdev0 /dev/v4l-subdev1 /dev/v4l-subdev2 /dev/v4l-subdev3 /dev/v4l-subdev4 /dev/v4l-subdev5 /dev/v4l-subdev6 /dev/v4l-subdev7 /dev/v4l-touch0 /dev/media0 /dev/media1 /dev/media2 /dev/media3 crw-rw----+ 1 root video 234, 0 Jan 14 23:56 /dev/media0 crw-rw----+ 1 root video 234, 1 Jan 14 23:56 /dev/media1 crw-rw----+ 1 root video 234, 2 Jan 14 23:56 /dev/media2 crw-rw----+ 1 root video 234, 3 Jan 14 23:56 /dev/media3 crw-rw----+ 1 root video 81, 5 Jan 14 23:56 /dev/v4l-subdev0 crw-rw----+ 1 root video 81, 6 Jan 14 23:56 /dev/v4l-subdev1 crw-rw----+ 1 root video 81, 7 Jan 14 23:56 /dev/v4l-subdev2 crw-rw----+ 1 root video 81, 8 Jan 14 23:56 /dev/v4l-subdev3 crw-rw----+ 1 root video 81, 9 Jan 14 23:56 /dev/v4l-subdev4 crw-rw----+ 1 root video 81, 10 Jan 14 23:56 /dev/v4l-subdev5 crw-rw----+ 1 root video 81, 11 Jan 14 23:56 /dev/v4l-subdev6 crw-rw----+ 1 root video 81, 12 Jan 14 23:56 /dev/v4l-subdev7 crw-rw----+ 1 root video 81, 22 Jan 14 23:56 /dev/v4l-touch0 crw-rw----+ 1 root video 81, 0 Jan 14 23:56 /dev/video0 crw-rw----+ 1 root video 81, 1 Jan 14 23:56 /dev/video1 crw-rw----+ 1 root video 81, 2 Jan 14 23:56 /dev/video2 crw-rw----+ 1 root video 81, 3 Jan 14 23:56 /dev/video3 crw-rw----+ 1 root video 81, 4 Jan 14 23:56 /dev/video4 crw-rw----+ 1 root video 81, 13 Jan 14 23:56 /dev/video5 crw-rw----+ 1 root video 81, 14 Jan 14 23:56 /dev/video6 crw-rw----+ 1 root video 81, 20 Jan 14 23:56 /dev/video7 crw-rw----+ 1 root video 81, 21 Jan 14 23:56 /dev/video8 crw-rw----+ 1 root video 81, 23 Jan 14 23:56 /dev/video9 $ grep . /sys/class/video4linux/radio0/name /sys/class/video4linux/radio1/name /sys/class/video4linux/swradio0/name /sys/class/video4linux/v4l-subdev0/name /sys/class/video4linux/v4l-subdev1/name /sys/class/video4linux/v4l-subdev2/name /sys/class/video4linux/v4l-subdev3/name /sys/class/video4linux/v4l-subdev4/name /sys/class/video4linux/v4l-subdev5/name /sys/class/video4linux/v4l-subdev6/name /sys/class/video4linux/v4l-subdev7/name /sys/class/video4linux/v4l-touch0/name /sys/class/video4linux/vbi0/name /sys/class/video4linux/vbi1/name /sys/class/video4linux/video0/name /sys/class/video4linux/video1/name /sys/class/video4linux/video2/name /sys/class/video4linux/video3/name /sys/class/video4linux/video4/name /sys/class/video4linux/video5/name /sys/class/video4linux/video6/name /sys/class/video4linux/video7/name /sys/class/video4linux/video8/name /sys/class/video4linux/video9/name /sys/class/video4linux/radio0/name:vivid-000-rad-rx /sys/class/video4linux/radio1/name:vivid-000-rad-tx /sys/class/video4linux/swradio0/name:vivid-000-sdr-cap /sys/class/video4linux/v4l-subdev0/name:Sensor A /sys/class/video4linux/v4l-subdev1/name:Sensor B /sys/class/video4linux/v4l-subdev2/name:Debayer A /sys/class/video4linux/v4l-subdev3/name:Debayer B /sys/class/video4linux/v4l-subdev4/name:RGB/YUV Input /sys/class/video4linux/v4l-subdev5/name:Scaler /sys/class/video4linux/v4l-subdev6/name:Lens A /sys/class/video4linux/v4l-subdev7/name:Lens B /sys/class/video4linux/v4l-touch0/name:vivid-000-touch-cap /sys/class/video4linux/vbi0/name:vivid-000-vbi-cap /sys/class/video4linux/vbi1/name:vivid-000-vbi-out /sys/class/video4linux/video0/name:Logitech BRIO /sys/class/video4linux/video1/name:Logitech BRIO /sys/class/video4linux/video2/name:Raw Capture 0 /sys/class/video4linux/video3/name:Raw Capture 1 /sys/class/video4linux/video4/name:RGB/YUV Capture /sys/class/video4linux/video5/name:vivid-000-vid-cap /sys/class/video4linux/video6/name:vivid-000-vid-out /sys/class/video4linux/video7/name:vivid-000-meta-cap /sys/class/video4linux/video8/name:vivid-000-meta-out /sys/class/video4linux/video9/name:vim2m ================================================== Deferred devices ================================================== $ cat /sys/kernel/debug/devices_deferred cat: /sys/kernel/debug/devices_deferred: Permission denied [WARN] Command failed: cat /sys/kernel/debug/devices_deferred ================================================== V4L2 async pending subdevices ================================================== $ cat /sys/kernel/debug/v4l2-async/pending_async_subdevices cat: /sys/kernel/debug/v4l2-async/pending_async_subdevices: Permission denied [WARN] Command failed: cat /sys/kernel/debug/v4l2-async/pending_async_subdevices ================================================== Media graph topology ================================================== Parsing /dev/media0 $ media-ctl -p /dev/media0 Media controller API version 6.8.12 Media device information ------------------------ driver uvcvideo model Logitech BRIO serial 61306147 bus info usb-0000:0d:00.3-3.4 hw revision 0x17 driver version 6.8.12 Device topology - entity 1: Logitech BRIO (1 pad, 1 link) type Node subtype V4L flags 1 device node name /dev/video0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] - entity 4: Logitech BRIO (0 pad, 0 link) type Node subtype V4L flags 0 device node name /dev/video1 - entity 8: Processing 3 (2 pads, 8 links, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Camera 1":0 [ENABLED,IMMUTABLE] pad1: Source -> "Logitech BRIO":0 [ENABLED,IMMUTABLE] -> "Extension 14":0 [ENABLED,IMMUTABLE] -> "Extension 6":0 [ENABLED,IMMUTABLE] -> "Extension 8":0 [ENABLED,IMMUTABLE] -> "Extension 9":0 [ENABLED,IMMUTABLE] -> "Extension 10":0 [ENABLED,IMMUTABLE] -> "Extension 11":0 [ENABLED,IMMUTABLE] - entity 11: Extension 14 (2 pads, 1 link, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] pad1: Source - entity 14: Extension 6 (2 pads, 1 link, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] pad1: Source - entity 17: Extension 8 (2 pads, 1 link, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] pad1: Source - entity 20: Extension 9 (2 pads, 1 link, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] pad1: Source - entity 23: Extension 10 (2 pads, 1 link, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] pad1: Source - entity 26: Extension 11 (2 pads, 1 link, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] pad1: Source - entity 29: Camera 1 (1 pad, 1 link, 0 routes) type V4L2 subdev subtype Sensor flags 0 pad0: Source -> "Processing 3":0 [ENABLED,IMMUTABLE] Parsing /dev/media1 $ media-ctl -p /dev/media1 Media controller API version 6.8.12 Media device information ------------------------ driver uvcvideo model Logitech BRIO serial 61306147 bus info usb-0000:0d:00.3-3.4 hw revision 0x17 driver version 6.8.12 Device topology - entity 1: Logitech BRIO (1 pad, 1 link) type Node subtype V4L flags 1 device node name /dev/video0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] - entity 4: Logitech BRIO (0 pad, 0 link) type Node subtype V4L flags 0 device node name /dev/video1 - entity 8: Processing 3 (2 pads, 8 links, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Camera 1":0 [ENABLED,IMMUTABLE] pad1: Source -> "Logitech BRIO":0 [ENABLED,IMMUTABLE] -> "Extension 14":0 [ENABLED,IMMUTABLE] -> "Extension 6":0 [ENABLED,IMMUTABLE] -> "Extension 8":0 [ENABLED,IMMUTABLE] -> "Extension 9":0 [ENABLED,IMMUTABLE] -> "Extension 10":0 [ENABLED,IMMUTABLE] -> "Extension 11":0 [ENABLED,IMMUTABLE] - entity 11: Extension 14 (2 pads, 1 link, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] pad1: Source - entity 14: Extension 6 (2 pads, 1 link, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] pad1: Source - entity 17: Extension 8 (2 pads, 1 link, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] pad1: Source - entity 20: Extension 9 (2 pads, 1 link, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] pad1: Source - entity 23: Extension 10 (2 pads, 1 link, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] pad1: Source - entity 26: Extension 11 (2 pads, 1 link, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] pad1: Source - entity 29: Camera 1 (1 pad, 1 link, 0 routes) type V4L2 subdev subtype Sensor flags 0 pad0: Source -> "Processing 3":0 [ENABLED,IMMUTABLE] Parsing /dev/media2 $ media-ctl -p /dev/media2 Media controller API version 6.8.12 Media device information ------------------------ driver uvcvideo model Logitech BRIO serial 61306147 bus info usb-0000:0d:00.3-3.4 hw revision 0x17 driver version 6.8.12 Device topology - entity 1: Logitech BRIO (1 pad, 1 link) type Node subtype V4L flags 1 device node name /dev/video0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] - entity 4: Logitech BRIO (0 pad, 0 link) type Node subtype V4L flags 0 device node name /dev/video1 - entity 8: Processing 3 (2 pads, 8 links, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Camera 1":0 [ENABLED,IMMUTABLE] pad1: Source -> "Logitech BRIO":0 [ENABLED,IMMUTABLE] -> "Extension 14":0 [ENABLED,IMMUTABLE] -> "Extension 6":0 [ENABLED,IMMUTABLE] -> "Extension 8":0 [ENABLED,IMMUTABLE] -> "Extension 9":0 [ENABLED,IMMUTABLE] -> "Extension 10":0 [ENABLED,IMMUTABLE] -> "Extension 11":0 [ENABLED,IMMUTABLE] - entity 11: Extension 14 (2 pads, 1 link, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] pad1: Source - entity 14: Extension 6 (2 pads, 1 link, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] pad1: Source - entity 17: Extension 8 (2 pads, 1 link, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] pad1: Source - entity 20: Extension 9 (2 pads, 1 link, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] pad1: Source - entity 23: Extension 10 (2 pads, 1 link, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] pad1: Source - entity 26: Extension 11 (2 pads, 1 link, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] pad1: Source - entity 29: Camera 1 (1 pad, 1 link, 0 routes) type V4L2 subdev subtype Sensor flags 0 pad0: Source -> "Processing 3":0 [ENABLED,IMMUTABLE] Parsing /dev/media3 $ media-ctl -p /dev/media3 Media controller API version 6.8.12 Media device information ------------------------ driver uvcvideo model Logitech BRIO serial 61306147 bus info usb-0000:0d:00.3-3.4 hw revision 0x17 driver version 6.8.12 Device topology - entity 1: Logitech BRIO (1 pad, 1 link) type Node subtype V4L flags 1 device node name /dev/video0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] - entity 4: Logitech BRIO (0 pad, 0 link) type Node subtype V4L flags 0 device node name /dev/video1 - entity 8: Processing 3 (2 pads, 8 links, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Camera 1":0 [ENABLED,IMMUTABLE] pad1: Source -> "Logitech BRIO":0 [ENABLED,IMMUTABLE] -> "Extension 14":0 [ENABLED,IMMUTABLE] -> "Extension 6":0 [ENABLED,IMMUTABLE] -> "Extension 8":0 [ENABLED,IMMUTABLE] -> "Extension 9":0 [ENABLED,IMMUTABLE] -> "Extension 10":0 [ENABLED,IMMUTABLE] -> "Extension 11":0 [ENABLED,IMMUTABLE] - entity 11: Extension 14 (2 pads, 1 link, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] pad1: Source - entity 14: Extension 6 (2 pads, 1 link, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] pad1: Source - entity 17: Extension 8 (2 pads, 1 link, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] pad1: Source - entity 20: Extension 9 (2 pads, 1 link, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] pad1: Source - entity 23: Extension 10 (2 pads, 1 link, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] pad1: Source - entity 26: Extension 11 (2 pads, 1 link, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink <- "Processing 3":1 [ENABLED,IMMUTABLE] pad1: Source - entity 29: Camera 1 (1 pad, 1 link, 0 routes) type V4L2 subdev subtype Sensor flags 0 pad0: Source -> "Processing 3":0 [ENABLED,IMMUTABLE] ================================================== libcamera & userspace ================================================== $ which cam /usr/bin/cam $ ldd /usr/bin/cam linux-vdso.so.1 (0x00007fffea592000) libcamera.so.0.6 => /lib/x86_64-linux-gnu/libcamera.so.0.6 (0x0000799515800000) libcamera-base.so.0.6 => /lib/x86_64-linux-gnu/libcamera-base.so.0.6 (0x0000799516122000) libdrm.so.2 => /lib/x86_64-linux-gnu/libdrm.so.2 (0x000079951610b000) libevent_pthreads-2.1.so.7 => /lib/x86_64-linux-gnu/libevent_pthreads-2.1.so.7 (0x0000799516106000) libevent-2.1.so.7 => /lib/x86_64-linux-gnu/libevent-2.1.so.7 (0x00007995160b4000) libjpeg.so.8 => /lib/x86_64-linux-gnu/libjpeg.so.8 (0x000079951602f000) libSDL2-2.0.so.0 => /lib/x86_64-linux-gnu/libSDL2-2.0.so.0 (0x0000799515624000) libtiff.so.5 => not found libyaml-0.so.2 => /lib/x86_64-linux-gnu/libyaml-0.so.2 (0x000079951600e000) libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x0000799515200000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007995155f6000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x0000799514e00000) libyuv.so.0 => /lib/x86_64-linux-gnu/libyuv.so.0 (0x000079951555e000) libgnutls.so.30 => /lib/x86_64-linux-gnu/libgnutls.so.30 (0x0000799514c06000) liblttng-ust.so.1 => /lib/x86_64-linux-gnu/liblttng-ust.so.1 (0x00007995154db000) libudev.so.1 => /lib/x86_64-linux-gnu/libudev.so.1 (0x00007995154a8000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x0000799515117000) libdw.so.1 => /lib/x86_64-linux-gnu/libdw.so.1 (0x0000799515063000) libunwind.so.8 => /lib/x86_64-linux-gnu/libunwind.so.8 (0x0000799515fef000) /lib64/ld-linux-x86-64.so.2 (0x0000799516311000) libevent_core-2.1.so.7 => /lib/x86_64-linux-gnu/libevent_core-2.1.so.7 (0x000079951502e000) libasound.so.2 => /lib/x86_64-linux-gnu/libasound.so.2 (0x0000799514afc000) libpulse.so.0 => /lib/x86_64-linux-gnu/libpulse.so.0 (0x0000799514aab000) libsamplerate.so.0 => /lib/x86_64-linux-gnu/libsamplerate.so.0 (0x000079951493c000) libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007995147ff000) libXext.so.6 => /lib/x86_64-linux-gnu/libXext.so.6 (0x0000799515494000) libXcursor.so.1 => /lib/x86_64-linux-gnu/libXcursor.so.1 (0x0000799515fe1000) libXi.so.6 => /lib/x86_64-linux-gnu/libXi.so.6 (0x0000799515481000) libXfixes.so.3 => /lib/x86_64-linux-gnu/libXfixes.so.3 (0x0000799515026000) libXrandr.so.2 => /lib/x86_64-linux-gnu/libXrandr.so.2 (0x0000799515019000) libXss.so.1 => /lib/x86_64-linux-gnu/libXss.so.1 (0x0000799515014000) libgbm.so.1 => /lib/x86_64-linux-gnu/libgbm.so.1 (0x00007995147f8000) libwayland-egl.so.1 => /lib/x86_64-linux-gnu/libwayland-egl.so.1 (0x00007995147f3000) libwayland-client.so.0 => /lib/x86_64-linux-gnu/libwayland-client.so.0 (0x00007995147e3000) libwayland-cursor.so.0 => /lib/x86_64-linux-gnu/libwayland-cursor.so.0 (0x00007995147d9000) libxkbcommon.so.0 => /lib/x86_64-linux-gnu/libxkbcommon.so.0 (0x0000799514790000) libdecor-0.so.0 => /lib/x86_64-linux-gnu/libdecor-0.so.0 (0x0000799514785000) libp11-kit.so.0 => /lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007995145e1000) libidn2.so.0 => /lib/x86_64-linux-gnu/libidn2.so.0 (0x00007995145bf000) libunistring.so.5 => /lib/x86_64-linux-gnu/libunistring.so.5 (0x0000799514412000) libtasn1.so.6 => /lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007995143fa000) libnettle.so.8 => /lib/x86_64-linux-gnu/libnettle.so.8 (0x00007995143a5000) libhogweed.so.6 => /lib/x86_64-linux-gnu/libhogweed.so.6 (0x000079951435d000) libgmp.so.10 => /lib/x86_64-linux-gnu/libgmp.so.10 (0x00007995142d9000) libnuma.so.1 => /lib/x86_64-linux-gnu/libnuma.so.1 (0x00007995142cb000) liblttng-ust-common.so.1 => /lib/x86_64-linux-gnu/liblttng-ust-common.so.1 (0x00007995142bc000) liblttng-ust-tracepoint.so.1 => /lib/x86_64-linux-gnu/liblttng-ust-tracepoint.so.1 (0x000079951429f000) libcap.so.2 => /lib/x86_64-linux-gnu/libcap.so.2 (0x0000799514292000) libelf.so.1 => /lib/x86_64-linux-gnu/libelf.so.1 (0x0000799514273000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x0000799514257000) libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x000079951419b000) liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x0000799514169000) libbz2.so.1.0 => /lib/x86_64-linux-gnu/libbz2.so.1.0 (0x0000799514155000) libpulsecommon-16.1.so => /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-16.1.so (0x00007995140d7000) libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x0000799514088000) libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x000079951405d000) libXrender.so.1 => /lib/x86_64-linux-gnu/libXrender.so.1 (0x0000799514051000) libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x0000799514025000) libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x0000799514019000) libsndfile.so.1 => /lib/x86_64-linux-gnu/libsndfile.so.1 (0x0000799513f8f000) libX11-xcb.so.1 => /lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x0000799513f8a000) libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x0000799513eaa000) libasyncns.so.0 => /lib/x86_64-linux-gnu/libasyncns.so.0 (0x0000799513ea2000) libapparmor.so.1 => /lib/x86_64-linux-gnu/libapparmor.so.1 (0x0000799513e8e000) libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x0000799513e86000) libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x0000799513e7e000) libFLAC.so.12 => /lib/x86_64-linux-gnu/libFLAC.so.12 (0x0000799513e1a000) libvorbis.so.0 => /lib/x86_64-linux-gnu/libvorbis.so.0 (0x0000799513dec000) libvorbisenc.so.2 => /lib/x86_64-linux-gnu/libvorbisenc.so.2 (0x0000799513d41000) libopus.so.0 => /lib/x86_64-linux-gnu/libopus.so.0 (0x0000799513ce0000) libogg.so.0 => /lib/x86_64-linux-gnu/libogg.so.0 (0x0000799513cd6000) libmpg123.so.0 => /lib/x86_64-linux-gnu/libmpg123.so.0 (0x0000799513c7a000) libmp3lame.so.0 => /lib/x86_64-linux-gnu/libmp3lame.so.0 (0x0000799513c04000) libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x0000799513abc000) liblz4.so.1 => /lib/x86_64-linux-gnu/liblz4.so.1 (0x0000799513a98000) libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x0000799513a82000) libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x0000799513a5d000) libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x0000799513a4e000) ================================================== libcamera probe (cam -l) ================================================== [INFO] /dev/kmsg not writable, skipping kernel marker: BEGIN cam -l $ cam -l cam: error while loading shared libraries: libtiff.so.5: cannot open shared object file: No such file or directory [WARN] Command failed: cam -l [INFO] /dev/kmsg not writable, skipping kernel marker: END cam -l ================================================== Kernel log (post cam -l) ================================================== $ dmesg dmesg: read kernel buffer failed: Operation not permitted [WARN] Command failed: dmesg ================================================== Permissions & capabilities ================================================== $ id uid=1000(kbingham) gid=1000(kbingham) groups=1000(kbingham),4(adm),20(dialout),24(cdrom),27(sudo),29(audio),30(dip),44(video),46(plugdev),108(kvm),121(lpadmin),132(lxd),133(sambashare),135(docker),998(nix-users) $ groups kbingham adm dialout cdrom sudo audio dip video plugdev kvm lpadmin lxd sambashare docker nix-users $ getcap /usr/bin/cam ================================================== End of report ================================================== Report saved to libcamera-report-Monstersaurus-20260207-111858.txt --- utils/libcamera-bug-report | 79 ++++++++++++++++++++++++++++++++++++++++++++++ utils/meson.build | 7 ++++ 2 files changed, 86 insertions(+) --- base-commit: c6c5a8bc5b90e476cba806cfcccc704ef115d2aa change-id: 20260207-kbingham-bug-reporter-60285cd034af Best regards, diff --git a/utils/libcamera-bug-report b/utils/libcamera-bug-report new file mode 100755 index 000000000000..72b89b646007 --- /dev/null +++ b/utils/libcamera-bug-report @@ -0,0 +1,79 @@ +#!/usr/bin/env bash +# SPDX-License-Identifier: LGPL-2.1-or-later + +REPORT="libcamera-report-$(hostname)-$(date +%Y%m%d-%H%M%S).txt" + +exec > >(tee "$REPORT") 2>&1 + +section() { + echo + echo "==================================================" + echo "$1" + echo "==================================================" +} + +run() { + echo + echo "\$ $*" + "$@" || echo "[WARN] Command failed: $*" +} + +mark_kmsg() { + if [ -w /dev/kmsg ]; then + echo "libcamera-debug-report[$$]: $1" > /dev/kmsg + else + echo "[INFO] /dev/kmsg not writable, skipping kernel marker: $1" + fi +} + +section "Report metadata" +echo "Date: $(date -Is)" +echo "Host: $(hostname)" +echo "User: $(id)" + +section "Kernel & OS" +run uname -a +run cat /etc/os-release +command -v lsb_release >/dev/null && run lsb_release -a + +section "Media / V4L2 tools" +command -v media-ctl >/dev/null && run media-ctl --version +command -v v4l2-ctl >/dev/null && run v4l2-ctl --version +command -v v4l2-ctl >/dev/null && run v4l2-ctl --list-devices + +section "Device nodes" +run ls -l /dev/video* /dev/v4l-* /dev/media* 2>/dev/null +run grep . /sys/class/video4linux/*/name + +section "Deferred devices" +run cat /sys/kernel/debug/devices_deferred + +section "V4L2 async pending subdevices" +run cat /sys/kernel/debug/v4l2-async/pending_async_subdevices + +section "Media graph topology" +for m in /dev/media*; do + echo + echo "Parsing $m" + command -v media-ctl >/dev/null && run media-ctl -p "$m" +done + +section "libcamera & userspace" +run which cam +command -v cam >/dev/null && run ldd `which cam` + +section "libcamera probe (cam -l)" +mark_kmsg "BEGIN cam -l" +LIBCAMERA_LOG_LEVELS=*:0 run cam -l +mark_kmsg "END cam -l" + +section "Kernel log (post cam -l)" +run dmesg + +section "Permissions & capabilities" +run id +run groups +command -v getcap >/dev/null && run getcap "$(which cam)" + +section "End of report" +echo "Report saved to $REPORT" diff --git a/utils/meson.build b/utils/meson.build index 3deed8ad4d7e..1a9203f81763 100644 --- a/utils/meson.build +++ b/utils/meson.build @@ -7,3 +7,10 @@ gen_shader_headers = files('gen-shader-headers.sh') ## Module signing gen_ipa_priv_key = files('gen-ipa-priv-key.sh') + +## Bug reporting utility +install_data( + 'libcamera-debug-report', + install_dir: get_option('bindir'), + install_mode: 'rwxr-xr-x', +)