I am using Garuda Linux with Qtile Window Manager on a Lenovo P14 AMD laptop and cannot get the built in camera to function. I have tried Cheese and various websites(Jitsi, Google Hangouts etc) and it always comes up "No device found".

I have no video* file located at /dev/.

Linux version: Linux linux 5.19.9-zen1-1-zen

Running lsusb:

Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 0489:e0cd Foxconn / Hon Hai Wireless_Device
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Some system info:

  Device-1: AMD Cezanne vendor: Lenovo driver: amdgpu v: kernel arch: GCN-5.1
    code: Vega-2 process: TSMC n7 (7nm) built: 2018-21 pcie: gen: 3
    speed: 8 GT/s lanes: 16 link-max: gen: 4 speed: 16 GT/s ports:
    active: HDMI-A-1,eDP-1 empty: DP-1,DP-2 bus-ID: 07:00.0
    chip-ID: 1002:1638 class-ID: 0300
  Display: x11 server: X.Org v: 21.1.4 compositor: Picom v: git-c4107
    driver: X: loaded: amdgpu unloaded: modesetting alternate: fbdev,vesa
    gpu: amdgpu display-ID: :0 screens: 1
  Message: Unable to show GL data. Required tool glxinfo missing.

I am not sure what steps I can take to resolve the issue.

1 Answer 1


https://github.com/djrscally/miix-510-cameras Here is a written answer about what it takes for a Miix 510 Lenovo to run Linux.

Ooh! Do they work?

Sort of. With the surface_camera driver and the ov2680 driver loaded, you can take a (very bad) image. The ov5648 driver doesn't work at all yet. There's still a lot to do on these drivers, and subsequently a lot to do with libcamera to get them working in a useful way. Why was this so difficult?

There's a few problems:

The cameras are powered off by default behind a PMIC called a TPS68470, identified as INT3472 in the ACPI tables. The ACPI tables don't define an I2cSerialBus2 section for the PMIC, so its driver never realises that it's present.
The TPS68470 driver doesn't actually turn it on; there are 3 GPIO lines into the PMIC defined in the ACPI tables, but they're off by default and the PMIC driver doesn't toggle them. They're also not named in the ACPI tables so it's not a simple matter to determine which ones are the power lines and which the reset pin. In my case, 1 and 2 were power and 0 was reset, so the chip can be turned on like so:

$ sudo gpioset gpiochip0 122=1 143=1

Before that step, neither the PMIC nor the camera's i2c interface is even enabled, meaning they don't show anywhere at all. Once the device is on, you should be able to see it using i2cdetect:

The OV2680 is at 0x10. The TPS68470 is the device at 0x48. I have no idea what is at 0x0c; that's one of the two possible addresses defined for the oc5648, but powering that chip's PMIC on reveals it to be at 0x36. Who cares, really. Anyway, now that the camera is turned on you can verify that this isn't bullshit by talking to the sensor and asking for its id. The OV2680 datasheet tells us that its id sits at register 0x300a:

$ sudo i2cdetect -r -y 7


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .