Librem 14 charging noise/keyboard lag when charging

Hey all,
For about two weeks now when I plug in my Librem 14, I hear a very distinct sound very similar to the sound old computers with HDDs used to make when the drive was seeking. It’s like a faint “brrrr” sound that’s not exactly constant but starts and stops. It doesn’t sound high-pitched like coil whine, it’s a bit lower than that.

Additionally, the laptop now will not charge above 83%-85%, and while plugged in, will regularly stop charging and immediately restart charging (as indicated by the unplugged/plugged noise and the charging icon disappearing and reappearing immediately).

Finally, this also translates into keyboard lag somehow? When the laptop is plugged in now, the keyboard will regularly miss keys making it quite infuriating to type. If I use the fn key + brightness up/down, that action will be delayed by 1-3 seconds as well.

I’m not sure what to make of this as I’m not a hardware expert. It seems something has gone off with either the charging hardware and/or battery and this is having ripple effects throughout the hardware (e.g. keyboard).

Has anyone ever experienced this before? Anyone at Purism encountered this?

1 Like

Is all your software and firmware fully up to date?

1 Like

No, can you provide the operating system(s) where you are experiencing these issues?

1 Like

I would contact Purism support. To me it sounds like an issue with the charger (but it could be a battery issue instead). Do you have a different charger that you can use?

That is strange. You could see if the CPU is throttling strangely when it’s charging vs. when it’s on battery. It’s possible that undervolting is causing it to go in strange power management states. Others here might have some better way of looking at this, but I would probably write a quick script that did a loop every few seconds and output the loop counter with the results of “cat /proc/cpuinfo | grep -i cpu | grep -i mhz” . There are other ways to find the power management state (the cpupower utility, etc.). Also, this could be triggering some sort of bug in the EC (which is not very well tested on the Librem 14’s …).

1 Like

I’m very happy to report that flashing my EC from 1.9->1.13 has resolved all the issues! No more noise, it charges to 100%, and keyboard lag is gone.

It also fixed the issue where the computer would only charge when in standby/off.

Super happy it was a software issue rather than a hardware one! I encourage everyone with a Librem 14 to flash their EC to the latest.

I was running PureOS and PureBoot 21.

6 Likes

Great, mark your post as a solution.

Ahh, if they could only bring back that old IBM PC/XT keyboard clack!

Hey all, a couple days later my laptop now no longer charges at all, and the battery charge/percentage indicator does not show up at all. I can sometimes get it to start charging again if I unplug it, turn it off, and plug it back in.

This is a very big issue.

I’ve installed Librem Control and hitting “start charge now” does not change anything.

Are there instructions for how to get set-up to debug EC? I’m willing to do some low-level debugging and contribute code back but I’m not sure how to do something as simple as, say, modify the EC to write something out to a log file when the charger is plugged in.

2 Likes

Sound like a common Windows or Linux User Complaints, Wherever, start RESET the EC, HowTo? Shutdown L14… prepare a dedicated-Screw-Driver-and-Gloves/Vacuum-Suction-Cups to manipulate L14 then disconnect the battery for one minute then put back. Do not try to touch the rest of the electronic components if there is no needed. Thanks

Purism: @jonathon.hall

Purism Community.

1 Like

So unplugging and plugging the battery back in is the way to go is what you’re saying?

1 Like

Yes, but make sure to have all the dedicated tools to open the back side.

1 Like

Looking at the disassembly instructions, it seems to be just a phillips head to remove the back-side. I can probably do that tonight and report back.

1 Like

@splnkr Disconnecting and re-connecting the battery is a reasonable step to take. That resets the EC and ensures it probes the battery again. (The EC also resets when the system is off for >7 seconds and AC is unplugged, but disconnecting the battery ensures it is reset on the off chance there was a problem.)

When the charge indicator is missing, is /sys/class/power_supply/BAT0 missing? That typically means the EC cannot get a response from the battery, and it won’t charge in that case because it does not know the battery characteristics. In that case I’d recommend opening a ticket with support@puri.sm so we can determine why the EC can’t get a response from the battery.

If you want to set up external debugging for the EC:

  • Make sure you have a way to hardware flash the Librem 14 EC in case test firmware doesn’t work
  • You need hardware to connect to the L14 I2C interface, we use an Adafruit Trinket M0 with this firmware: https://source.puri.sm/firmware/librem-ec-i2c-debugger
  • You will need a way to connect the Trinket to the battery I2C interface on the Librem 14, such as mini SMD hooks
  • Uncomment the -DI2C_DEBUGGER line here: src/board/purism/common/common.mk · master · firmware / Librem EC · GitLab
  • Compile the EC firmware with that change and flash
  • Connect the Trinket to the Librem 14 battery I2C interface and another computer, connect to ttyACM0 from that computer

You’ll be able to see the debug output from the EC that way. You can also get debug output from the L14 itself using the ectool, but you can’t get battery probes that way since that happens before the system is on.

5 Likes

I’ll need to get the Adafruit Trinket but definitely interested in trying this out, if only to be able to have that low-level access to my laptop. And being able to contribute back would be cool :slight_smile:

Thanks for the detailed instructions! I live in Portugal currently and I think it should be fairly easy to get the Adafruit. Otherwise, I already have a couple Teensys at home, no reason those wouldn’t be able to be adapted to work no?

As an aside, I turned the laptop off overnight and everything was working fine the next day. Looks like an EC reset was all it needed.

2 Likes

Glad to hear the EC reset took care of it @splnkr ! Yes I would think you could do it with a device like that. Looks like it is Arduino compatible so you could probably run the same firmware; I don’t know how the pin assignments work out but I’d assume it has a set of I2C pins you could use.

In principle anything with I2C should be able to do it, even if you had to write firmware for it, the firmware is pretty simple.

edit: Do make sure your debugger device uses 3.3V I/O though, I see a few of the older Teensys are 5V. I2C is open drain so if you know what you are doing it could still be possible to interface, but you must not pull the L14 I2C bus up to 5V, that may permanently damage the L14 mainboard and battery.

1 Like