Initial commit: HPR Knowledge Base MCP Server
- 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>
This commit is contained in:
235
hpr_transcripts/hpr3536.txt
Normal file
235
hpr_transcripts/hpr3536.txt
Normal file
@@ -0,0 +1,235 @@
|
||||
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
|
||||
Reference in New Issue
Block a user