- MCP server with stdio transport for local use - Search episodes, transcripts, hosts, and series - 4,511 episodes with metadata and transcripts - Data loader with in-memory JSON storage 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
236 lines
21 KiB
Plaintext
236 lines
21 KiB
Plaintext
Episode: 3536
|
|
Title: HPR3536: Laptop power problems
|
|
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr3536/hpr3536.mp3
|
|
Transcribed: 2025-10-25 01:06:29
|
|
|
|
---
|
|
|
|
This is Haka Public Radio episode 3536 for Monday the 21st of February 2022.
|
|
Today's show is entitled Laptop Power Problems.
|
|
It is hosted by Andrew Conway and is about 23 minutes long and carries a clean flag.
|
|
The summary is, this is a story of a laptop with two power problems.
|
|
Hello Haka Public Radio people, this is McNallu here, also known as Andrew, and I'm going
|
|
to tell you a little bit about my adventures with a laptop that doesn't know whether
|
|
it is plugged in to the mains or not.
|
|
Specifically, it thinks it's always plugged in even when it isn't.
|
|
I don't know when this started, but it probably had been going on for quite a while, and I hadn't
|
|
noticed because I have it plugged in almost all the time, so it's not a bad default assumption.
|
|
And of course I noticed this when I, on the rear occasion, when I had left it,
|
|
not plugged into the mains, and it came to my attention a few times that my laptop had
|
|
been mysteriously completely shut down and I didn't know why, and eventually I was sat at it
|
|
when this happened, and at the corner of my eye I noticed that the battery indicator was very low,
|
|
and I was rushing over to collect my mains cable, and then that's when it quit.
|
|
So I knew something was up, and then when I looked at it more closely, yeah,
|
|
indeed the problem was, the laptop thought it was plugged into the mains all of the time,
|
|
and occasionally would also give me a message along the lines of,
|
|
um, your laptop is plugged in, but it's still discharging, your power supply is insufficient,
|
|
isn't that kind of thing? I was using Slackware current at the time, and I was KDE that was
|
|
a little widget in the bottom right of the screen on the taskbar that was telling me that.
|
|
Now also, another problem I had with the laptop is sometimes it would just stop charging
|
|
the battery. Again, I didn't notice this because I have it on mains power most of the time.
|
|
I mean, that may be the problem, maybe I should, you know, I think it's good practice to
|
|
let batteries discharge and charge up again rather than sitting there plugged into the mains the
|
|
whole time. So yeah, it could be my fault. So I actually ordered a new battery, um, but
|
|
bit annoying the way that happened is that the company was the only one that said they could get
|
|
a battery to me within the week, so I took that, and the rest were all low. It must come from China,
|
|
I suppose, so it was going to take over a month. And of course, the one that said they could
|
|
live within a week couldn't. So I gave up and then cancelled the order, and then the very next day
|
|
that battery arrived, but by that time I'd already ordered one from China, and I presume it's from China,
|
|
I don't really know. And anyway, mysteriously that did arrive two weeks later, so I ended up with two
|
|
batteries. Anyway, so I swapped the battery and thinking, hoping that that would solve my issues,
|
|
but alas, it didn't. It seemed that whatever the issue was, it was the charging circuit, not the
|
|
battery. I mean, the battery was not in great condition anyway, it could only charge up to
|
|
something like 64% of its factory rated capacity, so the battery did have that problem, but the other
|
|
problems I was experiencing, I think are related to either the power connector or some electronics
|
|
on the motherboard. Now I had ruled out the operating system because I started up other OSs
|
|
on the same laptop, and they all reported the same symptoms, including Windows, a radically
|
|
different OS from Linux, so I was quite certain that this was a hardware issue on my laptop.
|
|
Okay, so now I accept that the laptop has a hardware issue. What could be done? Well,
|
|
well, the first solution was that I noticed that I could get it to start charging again,
|
|
say if it got stuck at 34% or something like that, or more wordingly a few times it got stuck at 0%,
|
|
so you know, it's definitely just jostling of the mains cable because it's quite immediately,
|
|
couldn't charge the battery at all. So the solution to that was it's an ASUS EP,
|
|
certainly not EPC, an ASUS ZenBook, like the UX 550, something or other, there's some letters after
|
|
that as well. I don't think that's so crucial, but with this series of ASUS ZenBooks anyway,
|
|
what you can do is there's a power button, which is actually looks like a key in the keyboard,
|
|
if that is a key in the keyboard in the top right, which is very annoying because, you know,
|
|
obviously you could jab at my mistake, that should be recessed and put out in the corner like
|
|
most laptops. But anyway, that great beside what you need to do is shut down the, well, I think
|
|
you have to shut it down, plug it into the mains and hold that power button for a long time. Now,
|
|
I think there may be two time lengths that are crucial here, there may be a five second,
|
|
maybe a 10 second, I think maybe also there's a 40 second. Anyway, I don't know,
|
|
I don't know which one it is, but certainly if I held that power button down for 40 seconds or
|
|
slightly more, then when the laptop wakes up again, it seems to have wiped all its battery knowledge,
|
|
I reconfigures itself and then it will allow itself to charge the battery again. That's why,
|
|
so the battery charging problem I can get around by doing that and it happens only rarely,
|
|
it's not common I need to do that, you know, and since I don't often restart my laptop,
|
|
that's probably why it's not common. So, there's that. Now, the more serious problem is that
|
|
because the battery thinks it's plugged in, sorry, the laptop thinks it's plugged in all of the time,
|
|
it never warns me or takes that it's running low in the battery and it never takes any power
|
|
saving measures either. Now, I can do, you know, I can manually intervene, you know, by when I'm working
|
|
at it on battery, keep an eye on the battery indicator, but that doesn't really work because I'm sure
|
|
like many of you hackers over there, I get quite engrossed to what I'm doing and I'm not looking at
|
|
the battery indicator, I really need it to sort of slap me in the face and say, look, look, I'm at
|
|
10%, you better plug me in right now, or you're, I'm going to quit the hard way.
|
|
So, and that's not good, let's face, it's not good to quit the hard way, it may have been a factor
|
|
in the fact that this laptop, it's previous drive, which I think I did another APR episode about,
|
|
it failed, it may have been a factor in that quitting mid-right or something, I don't know how
|
|
these SSD works, all these SSDs work these days, in detail, but I can't imagine it's a good thing
|
|
to be, you just have the power cut from the battery at hardware level because it's run out of juice.
|
|
Anyway, so I need to do something about this, well, I started poking around and when you look at
|
|
the stuff that KDE tells me about the battery, it seems to be just coming from
|
|
the information that you will find under, let me just quickly look up the,
|
|
let's see, so let me see, I'm typing cat slash cis slash I think it's power underscore supply,
|
|
no it's not, it's slash cis slash class slash power underscore supply, and then you could
|
|
have a choice of two directives, AC zero or bad zero, so I'm going to go for bad zero, and then
|
|
I think, yeah, I'll go for status, yeah, so there's a pseudo file, it's not really a file, it's a
|
|
file that's in CISFS, the laptop has, sorry, the Linux kernel is created for me, and the status file
|
|
has got one word inside it, and it's charging, and that's, at the moment, it's correct, the laptop
|
|
is in fact charging, now the problem is, if I disconnect the power cable, that file status should
|
|
contain discharging, but it doesn't, it contains the word charging always, no matter whether
|
|
the cable is plugged in or not, whether it's charging or discharging in reality, and various other
|
|
numbers that I see in there, when I look at the big beneath the immediate UI of KDE, going to
|
|
deeper energy settings, well it's still in a UI, but just deeper down, it seems to be pretty much
|
|
reading what's in under that slash cis slash class, slash power supply, slash bad zero, slash
|
|
in all those files, so I scratched my head for a while, now those files are not real files are
|
|
created by the Linux kernel, allowing you to see what's going on in other applications, so I
|
|
thought, well, maybe I can fool KDE into seeing other routines, so what I did, my first attempt was,
|
|
I used an an overlay file system, and I mounted that bad zero subfolder, or sub directory,
|
|
under that slash cis, just there, and if I write, for example, to the status file, and put the word
|
|
discharging in it, then anyone that tries to look at that file will then see the overlay version
|
|
of the file, not the actual file underneath, now you have to be careful because you don't want to,
|
|
I think maybe you could destabilize your system by spoofing entries there, but here I'm
|
|
making sure that I only just alter a few select files in the bad zero, and files which I know
|
|
are giving in correct information, so I didn't think that, as long as I'm careful, I don't go
|
|
scrubbing other directories, an overlaying, willy nilly, all over the place, then I should be okay,
|
|
now just the details of how I do that, so what I did was, use the overlay, I used just a mount
|
|
command, so it's mount minus T overlay, then overlay again, I'm not sure why it says overlay twice,
|
|
minus O, lower der, and then that is the path to the bad zero folder, and then upper der,
|
|
that is a path to another folder which contains my spoof versions of the files, and then it has to
|
|
be another option, comma work der equals, and then that's just some space anywhere in your system,
|
|
where it can do working for this, and then I think the final argument is as normal with
|
|
where you want it mounted, and I want it mounted over the top of that bad zero folder, so what I'm
|
|
really saying is there's a real directory on the bottom which is that bad zero directory,
|
|
then there's my directory which overlays it which can contain a few files, which spoof
|
|
the files that are really there, and then I'm telling the mount command that I want this to go over
|
|
the top of the existing bad zero directory, so it's a bit, it's a little bit confusing, I don't
|
|
even quite remember how, why that command structured the way it is, but if you read the documentation,
|
|
you'll get it working, so yeah, I mean I think hopefully you get the idea of an overlay,
|
|
so I did this, and I would say I got partial success, sometimes it would take notice of
|
|
the fact that I'd spoofed the status file, and sometimes it wouldn't, and when I say it, I mean
|
|
the KDE widget, but the power widget in KDE, now I suspect the reason it wasn't working consistently
|
|
is because it doesn't pull that file, it doesn't go to that file, that file, and say what is your
|
|
value, instead, it maybe looks at that file sometimes, maybe it started up when KDE starting up
|
|
or something, and so there's a smoke alarm, just made a noise there, I think it's a smoke alarm.
|
|
I think the way the KDE power widget on the desktop works is that it's probably
|
|
tuned into events to do with power from somewhere, now I did a lot of reading KDE and the
|
|
Linux kernel, and I filmed lots of confusing information, I didn't find a way for me to be able
|
|
to intercept those events or spoof them for that matter, and I felt like that's a, after I
|
|
spent maybe a good hour on that, I decided that that was a rabbit hole that I was going to reverse
|
|
out of, so instead my second solution, which I had in mind as well, is some way less elegant
|
|
in that I have to stop using that KDE widget, other than as a battery meter, it will tell me
|
|
correctly how much power is left in the battery, how much charge is left in the battery, but it
|
|
won't tell me whether it's charging or discharging or not to find me if the battery is getting low,
|
|
so instead what I did was I went and created a script, now I did this first as
|
|
root, just as a, as a test, now what I do here is also in that slash sys slash class slash power
|
|
slash slash band zero directory, there's another file, um, called energy, uh, now, um, and what I did,
|
|
and there's also power now, so energy now basically telling you how much charge is left in the battery,
|
|
and, um, and power on the score now, so energy on the score now and power on the score now,
|
|
power on the score now, tells you, I think it's really telling you how much current is drawn
|
|
from the battery or it could be power in what's, I haven't really, um, noted which number it is,
|
|
but what's crucial is if that number was greater than zero, the battery was being drained,
|
|
it's that it's like the current, it's some major of current or power being drawn from the battery,
|
|
so I could use that, I thought, uh, to detect whether the battery is in fact, um, being discharged,
|
|
and if it's discharged, it's not plugged into the mains, and if that's the case, then I can then
|
|
monitor energy on the score now, and when that gets, um, below a certain level, I can take some
|
|
action, now actually did try that, and, uh, it wasn't successful, it worked sometimes,
|
|
and then it didn't work other times, and the reason it didn't always work consistently,
|
|
is I couldn't rely on power on the score now to tell me whether the battery was in fact discharging,
|
|
so it seems that whatever problem has afflicted this laptop seems to have infected power on the
|
|
score now, or power on the score now isn't reliably updated, sometimes it's non-zero,
|
|
when the battery is being drained and sometimes not, I don't know, it's unreliable, it's the bottom line,
|
|
um, however, um, there is still another alternative route, and so what I did now was I wrote a little
|
|
bar script, and the bar script reads, actually uses the read command that's available to you in the
|
|
command line, so I would read energy one, energy one is available, less than sign, and then slash
|
|
this slash slash class, slash power supply and score supply, slash bat zero slash energy now,
|
|
then sleep one, so it sleeps for a second, and then reads, does the same thing again, but now reads
|
|
it into a variable code energy two, and by looking at the difference between energy two and energy one,
|
|
I can now tell, without any problem, without any cause of a potential misleading
|
|
problems occurring, whether the battery is being drained or not, if energy two is less energy one,
|
|
the battery is being drained, over a second it's bound to have decreased if the battery is not
|
|
plugged in, so and then also I discovered that in that bat zero folder there was another
|
|
file called capacity, which gives you just a percentage, it gives you a number between zero and a
|
|
hundred, and so I can use that actually to quite nicely decide when I want to take some action,
|
|
so what my script did initially is that when I got down to a low value, I've currently got
|
|
set it 20%, which is a bit conservative I know, but basically it suspends the laptop when it gets
|
|
to 20%, when the laptop gets less than 30%, it starts to let me know that it's about to suspend,
|
|
now at that point I can do a number of things, now I see it lets me know, well it was supposed
|
|
to let me know, but what I discovered was that I was using a command called notify send, which you
|
|
can issue that in the command line, and it will display a pop-up window to your user that I think
|
|
lasts for about five seconds by the fold, with a little text message, so my text message says
|
|
warning battery at whatever percent will suspend 20%, and then about a second before it does
|
|
the suspension, it will say about suspend, and then it says delete the file slash time, slash the
|
|
to stop me from suspending, so you can see how this is working, it's looking at the file slash temp,
|
|
slash suspend, as this flag to say, I'm going to suspend if you don't delete this file, now
|
|
this is the final version of my script, earlier a version of my script had
|
|
it was unknown that time, yeah, so confusing myself, yeah, so what I did here is as root, I tried
|
|
to do that, but the problem was notify hyphen send doesn't work, because if you issue it as root,
|
|
root doesn't have a next window display or a graphical display, so it just doesn't do anything,
|
|
and I tried all kinds of things to try and tell at which display to send the message to,
|
|
and pseudo's, and S use, and all that, I tried everything I can to make it actually,
|
|
get it to display on my regular user account, when it wouldn't work, I just could not get to work,
|
|
so the solution to this was this script itself doesn't need to be run by root, nothing that it does
|
|
requires root privileges, so I run the script as my regular user, and then it all works,
|
|
when I say it works, if I type the command in the command line, you know, I issue it manually,
|
|
the command to run the whole script, it works perfectly, then of course I don't want to be running
|
|
this command manual the time, so I put it in a cron job, and then in the cron job, it all works,
|
|
except it won't suspend the laptop, and the reason is, when running through a cron job,
|
|
for some reason I don't quite understand, the user loses the ability to suspend the system,
|
|
only root can do that, so that is where this whole slash temp slash suspend file came, so what
|
|
it does, when it wants to, when it's time suspend, it writes that file, just as a regular user,
|
|
temp is written by anyone, and then another script that's run by my root user, it's a very simple
|
|
script, all it does is it looks to see if there's that file slash temp slash suspend exists,
|
|
if it does, then it waits for one second, I can't remember why it waits for one second,
|
|
there's a good reason for that, I think if there's something to give it, run to a log file,
|
|
just give it extra time, and then it issues the command log in CTL suspend, and then that will suspend
|
|
my laptop, so that's that's how it worked, now the first time I wrote this script,
|
|
I, the laptop was well, with no well below 20%, and then I plugged it in,
|
|
and it was all working fine, and then one minute later, it shut down again,
|
|
you know, I don't know why it's done that, and then so I started it up again, but it's suspended,
|
|
so I took it out of its suspense, and another one minute later, don't it went again,
|
|
I went back into the suspended, it's been suspended, and I thought why is this happening,
|
|
but of course nothing removes that file slash temp slash suspend, now in my hey, then I started
|
|
up again, but at this point I completely forgotten where this file was, I know it actually does
|
|
notify me, but I think maybe at that time it didn't notify me that I could delete that file,
|
|
so I just completely forgotten where this file was, and then I had one minute to start up the
|
|
laptop on the command line, go and find my script, find where I put that file, then go and delete the
|
|
file, now that doesn't sound like you should take a minute, but somehow I don't know, it did,
|
|
and so I had this ridiculous kind of like the ridiculous groundhog day thing, when my laptop
|
|
was to suspend itself, come back to life, and then I would have this short time to find this
|
|
file and delete it so it wouldn't do it again, and yeah, it was quite amusing, it was a bit like
|
|
one of the stories you might get in Doctor Who, where you're stuck in a time loop anyway, so that's
|
|
why now the script that root runs, the first thing it does, when it finds that file slash temp such a
|
|
spend, it deletes it, so that if you do wake the laptop up again, then and you've plugged it in,
|
|
and that file doesn't get recreated, it won't immediately go back to sleep again, yeah, so it might
|
|
have been that I had less than a minute programmed in as well, at first I don't recall, but anyway,
|
|
it was, it was quite funny for a while, somewhat frustrating, so, so the push comes to shove,
|
|
it's now working really nicely, my laptop can get down to whatever percent I like, it will start
|
|
to notify me that it's getting low, and then it'll get down to another percentage and it'll just
|
|
suspend, so if I've wandered off and I'm on a phone call or I've been distracted and left my
|
|
laptop in battery, I'm pretty confident it will shut itself down, and of course as this is done
|
|
by a cron job, it's nothing to do with KDE or anything, it's quite a, you know, a low-ish level
|
|
solution, it doesn't matter, I could have it running in just a shell, you know, with no
|
|
graph, you know, no X windows or whatever, and this would still work just fine, I'm not relying
|
|
on anything else, so yeah, so it's not ideal, you know, and I've lost all the ability to
|
|
use KDE's power facilities on this laptop, but I don't really care, I didn't lose many of them
|
|
anyway, so that's my little story, so over to you, is there a better way to think I could do this,
|
|
can I intercept events and get KDE system working again? Do you know, can you tell me how I can
|
|
intercept those events that KDE's listening out for? If you know that, please do tell me or
|
|
record an HPR, show a belt to to ensure that people might find that interesting, thanks very much
|
|
for listening, bye-bye!
|
|
You've been listening to Hacker Public Radio at HackerPublicRadio.org. Today's show was
|
|
contributed by an HPR listener like yourself, if you ever thought of recording a podcast,
|
|
then click on our contribute link to find out how easy it really is. Hosting for HPR is kindly
|
|
provided by an honesthost.com, the internet archive, and our sync.net, unless otherwise stated,
|
|
today's show is released under a creative commons, attribution, share a like, please leave us
|