368
submitted 1 month ago* (last edited 1 month ago) by Interstellar_1@lemmy.blahaj.zone to c/linux@lemmy.ml

(not really pipewire itself but an interaction with wireplumber/libcamera/the kernel, but pipewire is what triggers the problem)

As seen in https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2669 and https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/4115

The camera's /dev/video file is kept open (without streaming), sadly causing the camera to be powered on what looks to be most devices. For some reason, this completely nullifies the soc power management on modern laptops and can result in increases from 3W to 8W at idle!

On Intel laptops it's a bit easier to debug because you can see the Cstates in powertop not going low but it also wrecks AMD ones. Some laptops can reach lower cstates, but the camera module wastes a few W anyway.

I can't believe this shipped in Ubuntu, Fedora etc without anyone noticing, and for so long. This bug is quite literally wasting GWh of power and destroys the user experience of distros in laptops.

If you have a laptop with a switch that detaches the camera from the usb bus you are probably out of the water, just plug it when you use it and the problem is sidestepped. Removing uvcvideo and modprobing it on demand can also work. Disabling the camera in Lenovo's UEFI is what I did for a year until I finally found the issue on the tracker. Some laptops also seem to not be affected, but for me it happens to every machine I've tested.

Thanks to this comment for another workaround that tells wireplumber to ignore cameras. ~/.config/wireplumber/wireplumber.conf.d/10-disable-camera.conf

wireplumber.profiles = { main = { monitor.libcamera = disabled } }

Software that only captures cameras using pipewire is rare and this hasn't given me any problem. This should probably be shipped by distros while the problem is sorted out.

Note that most laptops will have other problems stopping them from reaching deep cstates, borked pcie sd card readers, ancient ethernet nics that don't support pcie sleep properly, outdated nvme firwmare... those are separate issues that most of the time can also be tackled with some dose of tlp, but it's all for nothing if the usb camera is keeping the soc awake!

top 43 comments
sorted by: hot top controversial new old
[-] skullgiver@popplesburger.hilciferous.nl 100 points 1 month ago* (last edited 1 month ago)

Wouldn't this trigger the webcam indicator? I have Pipewire installed but never noticed the webcam acting up.

Edit: ah, only for UVC webcams it seems, maybe that's why I haven't noticed.

[-] n2burns@lemmy.ca 32 points 1 month ago

It also might not come on even for affected users. OP's comment in the reddit post:

From gathering info on their issue tracker, the act of opening the video file but not grab frames is some weird usecase that is acting in weird ways. Additionally, the indicator light is turned on by the uvcvideo driver in a lot of hardware (yes, an attacker can theoretically watch you without you noticing). A possible fix for this is would be in the kernel itself, which should basically ignore the fd being open and only truly act when frames are grabbed.

[-] princessnorah@lemmy.blahaj.zone 17 points 1 month ago

This is precisely bloody why webcam indicator lights need to be hardwired.

[-] RogueBanana@lemmy.zip 2 points 1 month ago

That's still not good enough for me, why is privacy shutters so hard to find in laptops...

[-] tiramichu@lemm.ee 59 points 1 month ago* (last edited 1 month ago)

The number one thing I noticed after installing Linux on my old macbook was that the battery life was immediately halved.

I totally expected that to happen, though, because my previous experience had always been that power management on Linux was kinda terrible.

Time to try this out and see!

[-] avidamoeba@lemmy.ca 36 points 1 month ago

This is probably an additional halving. 😂

[-] warmaster@lemmy.world 2 points 1 month ago

Quartering ?

[-] uis@lemm.ee 14 points 1 month ago

That's the thing: power managment works correctly. It is pipewire that does not let power managnent to save power.

I use ALSA btw.

[-] treadful@lemmy.zip 46 points 1 month ago

Woo, a benefit to me never getting my webcam drivers working.

[-] Mike1576218@lemmy.ml 23 points 1 month ago

While I also noticed my webcam showing up with 3W in powertop and disabling the uvcvideo module removed that entry, it doesn't affect the reported battery discharge rate at all.

I can see the files being opened with lsof and not so with the workaround. But again the discharge rate doesn't change at all ...

To me it seems the power consumption is misreported.

[-] theshatterstone54@feddit.uk 17 points 1 month ago

My power usage on idle was 8W but is now just under 4W on idle

[-] dandroid@sh.itjust.works 15 points 1 month ago

So if I don't have a camera on my laptop, I'm good?

[-] nyan@sh.itjust.works 5 points 1 month ago

Well, you're not affected by this specific bug, anyway. Whether you're virtuous in other aspects of your life is beyond the knowledge of anyone here. 😜

[-] CalcProgrammer1@lemmy.ml 14 points 1 month ago

Maybe this explains why my webcam indicator is on when no applications are using it. It's been confusing me for a while now. I've double checked anything that I expect to access it is not, and it doesn't seem to be locked because opening it works, but it sometimes boots up woth the light on. I am using Arch with pipewire so I'll check and see if this is what's going on.

[-] cygnus@lemmy.ca 14 points 1 month ago

Hmm the process doesn't seem to be running at all on my X1 Carbon Gen 9 running EndeavourOS.

[-] Blaster_M@lemmy.world 12 points 1 month ago

Meanwhile in Fedora KDE, I have the opposite problem... The system straight up ignores my monitor sleep settings, and something as quick as grabbing a water and coming back to everything in sleep mode on a desktop is kinda a problem when I am relying on the system not going sleep due to a running task.

[-] fhein@lemmy.world 3 points 1 month ago* (last edited 1 month ago)

Interesting.. I've never had this issue in Fedora KDE, which I run on my PC, but exactly the same thing happens on my wife's PC and the HTPC which both run Xubuntu. Tried setting screen saver, power save options and eventually even uninstalling the screensaver completely. At least in my case it's caused by Xorg DPMS if I remember correctly. Fixed it a while ago but then it came back on one of the computers at some point. Check out https://wiki.archlinux.org/title/Display_Power_Management_Signaling if it could be the same for you.

[-] Interstellar_1@lemmy.blahaj.zone 3 points 1 month ago

Same here. I have a 2021 dell xps

[-] Lem453@lemmy.ca 2 points 1 month ago

Sleep mode seems to be working well for me on fedora atomic with kde (aurora).

Deep sleep works well and can stay sleeping for days.

Normally sleep rules are working well. The do not sleep toggle in the power menu also works to prevent it from sleeping.

Only thing that doesn't work is flatpak apps can't prevent the system from sleeping, so watching a video, using Handbrake to encode etc will all just allow it to sleep if there is no physical input.

I have a 2018 dell xps

[-] boomzilla@programming.dev 0 points 1 month ago

Have you looked into the "Activity" settings within system settings already? When you click on the default activity there you should see the option "Automatically shutting down or sleeping". I'm sure you already tinkered with the energy system-settings.

[-] boomzilla@programming.dev 0 points 1 month ago

Easy fix if nothing works. Find the specific pipewire-version that causes the webcam bug, compile and install it, possibly render your sound settings partially defunct on the way and hook up a webcam. Thank me later.

[-] driving_crooner@lemmy.eco.br 9 points 1 month ago

How can I know that this is affecting me?

[-] netvor@lemmy.world 1 points 1 month ago

Depends on your distribution. I guess most of them use pipewire nowadays, and the bug has not been fixed yet so... if you are using a common GNU/Linux distro, the bug is likely on your system.

Does it affect you, well, from what I understood, as long as your system registers the camera and pipewire is running, your camera is going to waste energy regardless of whether it's actively streaming video or not.

From what I've understood there are several workarounds, each bad but in a different way:

  • Disabling pipewire is not a good universal solution since it would effectively disable all audio on your system.
  • Disabling the kernel driver for your camera would be a more precise workaround but it's not simple: apart from knowing how to do -- and undo -- that, you would need to find out which driver it is, and that depends on your actual hardware. And of course, with the driver disabled you would not be able to use the camera, so depending on your situation this might only be viable if you were willing to go back and disable/enable the driver as you need.
  • Physically disconnecting the camera - with desktop computer with the camera connected using a cable; you could just unplug it and plug it back in when you need it. With laptops, this is generally not possible; some laptops do have switches which effectively do the same thing but from technical standpoint that switch is a liability and costs something so most main-stream laptops won't have it.

In either case, it's also worth noting that whatever app you are using the camera with is likely to keep a "list of cameras" and some sort of memory of your last selection. In theory, disabling or enabling a camera should work fine, but it's not uncommon that apps will have bugs when managing the list; for example an app might not "see" the camera being back on, etc. so if you are going to use any of the above you might need to get used to restarting an app from time to time.

Assuming that eventually this bug is going to be fixed, the question of when it will be available for your system, again, depends on the distribution you are using. Many distributions have own public bug trackers so you could try and look it up and watch their ticket (in some cases, some distributions might even have fixes available sooner than the bug is fixed upstream, but I would not count on that), or you can try and talk to the community (look for an IRC/matrix channel, discord server, etc.)

[-] timestatic@feddit.org 8 points 1 month ago

I hope this will help lenghten the battery life of my laptop. I use it for school and when I put it in Idle it still drains in like 8 hours or something really bad. I'll try it out later and edit the comment to see what happened

[-] ReversalHatchery@beehaw.org 5 points 1 month ago

I don't think this should have an effect when the laptop is put to sleep. Maybe you want to try out hibernation, though.

[-] arcosenautic@lemmy.world 1 points 1 month ago

8 hours? I would kill to get 8 hours battery life.

[-] timestatic@feddit.org 1 points 1 month ago

Bro this is idle time, not when its turned on. Then its like 3:30h

[-] KaRunChiy@kbin.run 6 points 1 month ago

Meanwhile, I turned idle sleep off manually for both the webcam and audio chipset because they would either crash or flip out or pop when in use

[-] EddoWagt@feddit.nl 2 points 1 month ago

Same in case of the audio chipset, the popping is so annoying

[-] TheFrogThatFlies@lemmy.world 4 points 1 month ago

I found this gitlab issue two days ago after I noticed that the video camera was always on in powertop. The workaround appeared to work for me and the reduction in power consumption was noticeable, but Cheese wasn't able to find a camera afterwards. Didn't test other software.

Now, if I could just find a way of reducing the screen consumption...

[-] princessnorah@lemmy.blahaj.zone 2 points 1 month ago

Does this affect desktops as well? At least it doesn't affect my legion go. Side note, linux (specifically bazzite) runs better on this than Windows ever could.

[-] mylesw@mastodon.sdf.org 0 points 1 month ago
[-] princessnorah@lemmy.blahaj.zone 2 points 1 month ago

I got it with that in mind as an alternate to a Steam Deck. I like the higher-res display a lot. All the reviews I read rated it highly on hardware and terrible for software because of Windows. It told me I needed internet to finish setting up, so I didn't even bother seeing for myself, just shut it down and formatted the drive!

I can't believe Lenovo are handing customers to Valve just to back Windows. Like, I'm not an elitist about this usually but Linux just trounces on handhelds. Bazzite is as polished as an OEM experience should be, they could jump on this. They've already said they want to make a gen two at some point in future.

[-] possiblylinux127@lemmy.zip 1 points 1 month ago

It doesn't seem to effect me

[-] AnUnusualRelic@lemmy.world 1 points 1 month ago* (last edited 1 month ago)

I've applied the workaround that successfully gets wireplumber to ignore the camera for now. Like a lot of us, it's not a peripheral that sees much use on my laptop. I'm curious to see what difference it'll make on this machine that ought to have a relatively decent battery life (Yoga Slim 7 Pro).

At any rate, we can probably expect this to be fixed fairly soon now that the problem has been identified.

this post was submitted on 07 Aug 2024
368 points (98.7% liked)

Linux

47223 readers
783 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS