Librem 14 - Falling battery max charge percent

When I initially got my Librem 14 it charged to 70ish percent. I didn’t think at the time to test charging it to full so I’m not sure if that was the max at the time. After using it on battery power for awhile, then charging again I noticed after many hours it would not charge past 65%. I used it on battery again, until the charge was down to 34%, then charged again and this time it seemed to hit a ceiling of 58% charge at which point it stopped. I used it on battery again some, and then left the laptop shutdown, but charging over night. This morning it only has a 56% charge.

Is there anything I should try and do to fix this?

We had a bug in the EC firmware for a week or so, you might be affected. This bug could cause random battery charge thresholds.

Can you install the librem-ec-dkms kernel driver and check the battery charge thresholds?

The DKMS package is part of PureOS, for other distros we’d have to see how you can compile and enable it.

Cheers
nicole

2 Likes

Yeah I’m running Gentoo.
I assume this is the appropriate repo?

Actually since it’s the firmware and I don’t want to brick my system. I could boot up PureOS off a flash drive in a live environment and just install it that way right?

The DKMS driver does not flash anything.
The repo you referred to is the firmware itself, this is not needed (yet). You want this kernel driver:

This will give you access to the battery charger start/end thresholds which, I guess, are set wrong on your machine.

Cheers
nicole

3 Likes

Looks like it was set to 53 and 100. I set the start threshold to 80 and it looks like the charge percent just ticked up to 57% so I think it’s working now

Thank you!

I’m having this exact issue!
I have attempted to install the package and; repeatedly get an error saying the file type is unsupported.
If I downloaded the directory provided here https://source.puri.sm/nicole.faerber/librem-ec-acpi-dkms

What would be the commands to install the package?

I have been using:
sudo apt install librem-ec-acpi-dkms

but this hasn’t worked.

cheers,
alex

If you download from https://source.puri.sm/nicole.faerber/librem-ec-acpi-dkms , then you’ll need to run make in the folder from a terminal to build the kernel module, assuming you have the necessary tools to build it, and then use insmod to install the module.

If you’re unfamiliar with building stuff from source then your best bet it is to install from apt. What happened when you tried to install it from apt? Did it get the kernel module but nothing changed? You might need to reboot or use modprobe to load up the module after apt installs it.

I’m unfamiliar with building from source!
I actually just fixed the issue. I must have been inputting the wrong commands to update because this time it worked and I can see the thresholds

Thanks!
cheers,
alex

If you want to try it, you need to install git, gcc and make.

First, go in some folder you want to use for building. Run git clone https://source.puri.sm/nicole.faerber/librem-ec-acpi-dkms.git then go into the folder librem-ec-acpi-dkms. After that, run make (to make things faster, I recommend using make -j 12). If it doesn’t work due to privileges, run sudo make -j 12.

@nicole.faerber it would be nice to have these drivers and tools installed on some build of PureOS live image. That way you could tell people boot that and run such and such commands.

I had the same bug and it was not easy to install on Qubes or available build of PureOS live (right version of kernel headers was not available at the moment)

1 Like

@Honza This. I was asking to do the same with the Coreboot updates, but Purism doesn’t appreciate this idea for some reason.

Im having the same issue, im running pureOS 10 & ive run

it updated but the battery still isnt fully charging.

I am having a related issue. Since first boot, the L14 has not been able to charge beyond 67%.

I installed librem-ec-acpi-dkms.

I had to use chmod to get write permissions for editing /sys/class/power_supply/BAT0/charge_control_start_threshold
&
/sys/class/power_supply/BAT0/charge_control_end_threshold

I changed these values to 40 and 95 as suggested here.
They had been set to 0 & 100 by default.

Regardless, the laptop still doesn’t charge beyond 67%.

Also, it fails to detect or draw power from a USB-C charger in the right hand side USB-C port. Only the laptop barrel charger is supplying power.

yeah, and I explained pretty thoroughly why in the linked thread.

did you not read the paragraph above where those values are listed?

If the battery percentage falls below the start threshold and then a new charge is started, charging will stop when the battery reaches the end threshold percentage.

so, by setting the start % to 40%, you’re telling it not to start charging until the battery chage drops below 40%. It’s working exactly as expected based on those settings.

90/100 would be sane defaults IMO.

1 Like

Just an FYI, mine is now doing the same after I updated 2 and 4 days ago. Before that it would charge to 100%. I will look into this thread more closely for the solution, but it seems obvious something changed in the updates over the last few days.

Ah that has cleared that up, I was confused as the number 67% seemed to bear no relation to either of the presets of those thresholds.

I now have it charging to 95%

Any ideas on the USB-C not being detected for charging?

Could someone please help me. I tried building nicoles driver. However I get an error:
make -C “lib/modules/5.10.0-7amd64/build” M="" modules
make[1]: *** /lib/modules/5.1.0.0-7-amd64/build: file or directory not found. Quit.
make: *** [Makefile:5: all] error 2

The above is translated from my mothertongue.

What do I need to do? I have installed make, gcc and build-essentials.
I have just received my Librem14 and updated it with “apt update” “apt upgrade”

The power source needs to be supplying 19V or it won’t work.