Public bug reported:
Source package
linux-oem-6.17
The affected file is drivers/media/pci/intel/ipu-bridge.c, built into
linux-modules-6.17.0-1030-oem, whose source package is linux-oem-6.17:
$ dpkg -S
/lib/modules/6.17.0-1030-oem/kernel/drivers/media/pci/intel/ipu-
bridge.ko.zst linux-modules-6.17.0-1030-oem:
/lib/modules/6.17.0-1030-oem/kernel/drivers/media/pci/intel/ipu-
bridge.ko.zst
$ dpkg-query -W -f='${source:Package} ${source:Version}\n' linux-
modules-6.17.0-1030-oem linux-oem-6.17 6.17.0-1030.30
1. Release of Ubuntu
$ lsb_release -rd Description: Ubuntu 24.04.4 LTS Release: 24.04
2. Version of the package
$ apt-cache policy linux-modules-6.17.0-1030-oem linux-modules-6.17.0-1030-oem:
Installed: 6.17.0-1030.30 Candidate: 6.17.0-1030.30
$ apt-cache policy linux-image-oem-24.04d linux-image-oem-24.04d:
Installed: 6.17.0-1030.30 Candidate: 6.17.0-1030.30
$ uname -r 6.17.0-1030-oem
3. What I expected to happen
The built-in camera should produce an upright image, as it does under
6.17.0-1024-oem on the same machine.
4. What happened instead
The built-in camera produces an image rotated 180 degrees in every application
(Cheese, browser video calls, any consumer of /dev/video0).
Steps to reproduce
Boot 6.17.0-1030-oem on a Lenovo ThinkPad X9-15 Gen 1.
Open any camera application.
The image is upside down.
Affected hardware
DMI_SYS_VENDOR LENOVO DMI_PRODUCT_NAME 21Q7CTO1WW DMI_PRODUCT_VERSION ThinkPad
X9-15 Gen 1 DMI_PRODUCT_FAMILY ThinkPad X9-15 Gen 1 BIOS N4CET41W (1.17) Sensor
Sony IMX471, ACPI HID SONY471A:00 ISP Intel IPU7 (intel-ipu7 0000:00:05.0)
Analysis
The imx471 sensor driver now obtains its mount rotation from the firmware via
v4l2_ctrl_new_fwnode_properties(). ipu-bridge is responsible for supplying that
value, but upside_down_sensor_dmi_ids[] contains no entry for this machine, so
the sensor is reported as rotation = 0 while it is physically mounted upside
down in the lid.
V4L2 controls on the sensor subdev (/dev/v4l-subdev4) under
6.17.0-1030-oem:
Horizontal Flip val=0 range=0..1 flags=0x1000 Vertical Flip val=0
range=0..1 flags=0x1000 Camera Orientation val=0 range=0..2 flags=0x1004
READ_ONLY Camera Sensor Rotation val=0 range=0..0 flags=0x1004 READ_ONLY
Camera Sensor Rotation is read-only with range 0..0, i.e. the value
comes straight from the fwnode and cannot be corrected from userspace.
Under 6.17.0-1024-oem none of these four controls exist at all, and the
image is correct. An ELF symbol diff of imx471.ko between the two
kernels shows the difference:
only in 1030: v4l2_ctrl_new_fwnode_properties only in 1030:
imx471_read_reg
So 1024 predates the change that moved the flip from a hardcoded
register sequence to firmware-driven rotation plus runtime HFLIP/VFLIP
controls (LP: #2138841).
The DMI quirk table shipped in ipu-bridge.ko (identical in 1024 and
1030) contains Dell entries only:
Dell Inc. / Dell Pro 14 Premium PA14260 XPS 13 9350 / XPS 14 DA14260 /
XPS 16 9640
Mainline master (7.2-rc5) likewise has no Lenovo entry in
upside_down_sensor_dmi_ids[].
No "Unknown rotation %d" warning appears in dmesg, so ssdb->degree
parses to a known value; since ipu_bridge_parse_rotation() returns 0,
the firmware is declaring IPU_SENSOR_ROTATION_NORMAL for a sensor that
is physically inverted.
ProblemType: Bug
DistroRelease: Ubuntu 24.04
Package: linux-oem-6.17 (not installed)
ProcVersionSignature: Ubuntu 6.17.0-1030.30-oem 6.17.13
Uname: Linux 6.17.0-1030-oem x86_64
ApportVersion: 2.28.2-0ubuntu0.1
Architecture: amd64
AudioDevicesInUse:
USER PID ACCESS COMMAND
/dev/snd/controlC0: luisbch 2351 F.... pipewire
luisbch 2360 F.... wireplumber
/dev/snd/seq: luisbch 2351 F.... pipewire
CRDA: N/A
CasperMD5CheckMismatches: ./casper/initrd
./casper/minimal.standard.live.hotfix.size ./casper/minimal.standard.live.size
./casper/minimal.manifest ./casper/minimal.standard.manifest
./casper/minimal.standard.size ./casper/minimal.hotfix.size
./casper/minimal.standard.live.hotfix.squashfs
./casper/minimal.standard.hotfix.squashfs ./casper/minimal.standard.hotfix.size
./casper/minimal.hotfix.squashfs ./casper/minimal.standard.live.manifest
./casper/minimal.size ./boot/grub/grub.cfg
CasperMD5CheckResult: fail
CurrentDesktop: ubuntu:GNOME
Date: Sun Aug 2 11:56:03 2026
DistributionChannelDescriptor:
# This is the distribution channel descriptor for Ubuntu 24.04 for Lenovo
# For more information see http://wiki.ubuntu.com/DistributionChannelDescriptor
canonical-oem-sutton-noble-oem-24.04c-20251010-81
InstallationDate: Installed on 2026-05-13 (82 days ago)
InstallationMedia: Ubuntu OEM 24.04.3 LTS "Noble Numbat" - Release amd64
(20251008)
IwConfig:
lo no wireless extensions.
wlp0s20f3 no wireless extensions.
MachineType: LENOVO 21Q7CTO1WW
ProcEnviron:
LANG=C.UTF-8
PATH=(custom, no user)
SHELL=/bin/bash
TERM=xterm-256color
XDG_RUNTIME_DIR=<set>
ProcFB: 0 xedrmfb
ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-6.17.0-1030-oem
root=UUID=2e33beea-15cf-4967-9bc8-86c2c5abbe7c ro quiet splash vt.handoff=7
RelatedPackageVersions:
linux-restricted-modules-6.17.0-1030-oem N/A
linux-backports-modules-6.17.0-1030-oem N/A
linux-firmware 20240318.git3b128b60-0ubuntu2.27
SourcePackage: linux-oem-6.17
StagingDrivers: intel_ipu7 intel_ipu7_isys
UpgradeStatus: No upgrade log present (probably fresh install)
dmi.bios.date: 10/29/2025
dmi.bios.release: 1.17
dmi.bios.vendor: LENOVO
dmi.bios.version: N4CET41W (1.17 )
dmi.board.asset.tag: Not Available
dmi.board.name: 21Q7CTO1WW
dmi.board.vendor: LENOVO
dmi.board.version: SDK0T76574 WIN
dmi.chassis.asset.tag: No Asset Information
dmi.chassis.type: 10
dmi.chassis.vendor: LENOVO
dmi.chassis.version: None
dmi.ec.firmware.release: 1.12
dmi.modalias:
dmi:bvnLENOVO:bvrN4CET41W(1.17):bd10/29/2025:br1.17:efr1.12:svnLENOVO:pn21Q7CTO1WW:pvrThinkPadX9-15Gen1:rvnLENOVO:rn21Q7CTO1WW:rvrSDK0T76574WIN:cvnLENOVO:ct10:cvrNone:skuLENOVO_MT_21Q7_BU_Think_FM_ThinkPadX9-15Gen1:
dmi.product.family: ThinkPad X9-15 Gen 1
dmi.product.name: 21Q7CTO1WW
dmi.product.sku: LENOVO_MT_21Q7_BU_Think_FM_ThinkPad X9-15 Gen 1
dmi.product.version: ThinkPad X9-15 Gen 1
dmi.sys.vendor: LENOVO
** Affects: linux-oem-6.17 (Ubuntu)
Importance: Undecided
Status: New
** Tags: amd64 apport-bug kernel-bug noble regression-update staging
wayland-session
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2162670
Title:
ipu-bridge: camera image upside down on ThinkPad X9-15 Gen 1
(IMX471/IPU7) - missing DMI entry in upside_down_sensor_dmi_ids
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux-oem-6.17/+bug/2162670/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs