Suspending on Battery and Overheating Shutdowns

I tagged this as “hardware” but I am not sure. I am hoping for some advice on a software fix.

I have been dealing with random system shutdowns, mainly associated with what “feels like” overheating. I have also been largely unable to suspend the phone while using battery. The shutdown and overheating seem to largely happen when using battery, only. A red light flashes a few times, showing what looks like a warning, and then the phone dies. The behaviour seems directly related to overheating - which is odd because this never happened before I updated the kernel the last time.

I did use a solar panel charger to charge the phone so I might have “fried” something in the USB-C connector? I don’t know - just guessing there.

I have tried two different batteries with the same results.

I have reflashed my phone twice. I flashed what I believe to be a the newer bootloader.

I have contacted support and I receive one email asking whether I used the “suspend” feature in the settings (yes, of course I did). That was three weeks ago. That is it.

I am a bit at my wits-end. I am frustrated by trying to fix this with ChatGPT and searches. I lack knowledge.

Why will the phone not suspend on battery? Why does it overheat and shutdown?

Please help. Thank you!

1 Like

Not solving your issue, but maybe related: I noticed that my phone gets much hotter after last kernel update. Idling with normal amount of backlight makes the phone that hot, that the red LED is flashing. This never happened before. When turning off screen (no suspend needed) it cools down quickly. But I never had the issue of shutting down.

1 Like

Yes, I have noticed that too. But, my screen keeps turning itself back on since the last upgrade. Very annoying.

1 Like

Do you use auto suspend or manual suspend? I suspend it always on shut-down-menu button and have no issue there.

1 Like

I have tried all manner of suspend. All of the buttons and using commands in the terminal.

1 Like

Can you tell me how to boot from a previous kernel on the Librem 5? I might try that.

1 Like

No (would have to research by my own), but I’m sure there is someone who knows this.

1 Like

What specific kernel version is that? I think mine is 6.6.0-1-librem5 but I thought it has been on this for some time.

1 Like

Not sure.

Lack of airflow/ventilation.

1 Like

Hello. Thank you for responding. I know this is a support issue but Purism is not really doing support right now, as far as I can tell. Is there a secret to getting them to respond that I am not aware of? I don’t really want to ping the contact person here.

1 Like

Search the internet for “Linux boot from different kernel.”

1 Like

Hello. I did that. It came down to how to access the bootloader or the GRUB menu. I searched forums here and read something about Uboot, etc. I tried holding volume up and pressing the power button while powered off. Nothing happened.

How do I do access the boot menu or Grub on the Librem 5 so that I can ask it to load the older kernel that I downloaded using APT?

2 Likes

My bad, re the bootloader.

Info, @dos?

dpkg --list | grep linux-image shows 3 kernels present for me, by the way.

1 Like

I always remove the old kernels by habit but I did fetch and older kernel in apt.

Now how do I boot it?

2 Likes

No secrets:

2 Likes

When you install a Librem 5 kernel with apt, flash-kernel script runs and installs the kernel, initramfs, and respective devicetree files in the boot location. Its manual page explains why the older version of the kernel is not put in the boot location when a newer version is already installed:

Optionally, it can be passed a version of the kernel to flash; only the highest version will be flashed and other versions will be ignored unless the --force option is used. Kernel and initrd are read from /boot.

The following worked for me. Don’t forget to backup first in case anything goes wrong!

I checked the available kernel versions.

$ LC_ALL=en apt list linux-image-*-librem5
Listing... Done
linux-image-6.2.0-1-librem5/byzantium 6.2.13pureos3 arm64
linux-image-6.3.0-1-librem5/byzantium 6.3.7pureos1 arm64
linux-image-6.5.0-1-librem5/now 6.5.13pureos1~byz1 arm64 [installed,local]
linux-image-6.6.0-1-librem5/byzantium-updates,now 6.6.34pureos1~byz1 arm64 [installed,automatic]

So, I have two kernels installed. If I didn’t have the previous version, I would install its package with apt.

$ ls /usr/lib/linux-image-*-librem5
/usr/lib/linux-image-6.5.0-1-librem5:
freescale

/usr/lib/linux-image-6.6.0-1-librem5:
freescale

Installing the older version:

$ sudo flash-kernel --force 6.5.0-1-librem5
Using DTB: freescale/imx8mq-librem5-r4.dtb
Installing /usr/lib/linux-image-6.5.0-1-librem5/freescale/imx8mq-librem5-r4.dtb into /boot/dtbs/6.5.0-1-librem5/freescale/imx8mq-librem5-r4.dtb
Taking backup of imx8mq-librem5-r4.dtb.
Installing new imx8mq-librem5-r4.dtb.
flash-kernel: forcing install of 6.5.0-1-librem5 instead of 6.6.0-1-librem5.
flash-kernel: WARNING: Installing any new kernel package might override this.
flash-kernel: installing version 6.5.0-1-librem5
Generating boot script u-boot image... done.
Taking backup of boot.scr.
Installing new boot.scr.

Note that --force must go between the command and the kernel version argument.

Before reboot.

$ uname -a
Linux pureos 6.6.0-1-librem5 #1 SMP PREEMPT Sun Jul  7 20:23:17 EDT 2024 aarch64 GNU/Linux

After reboot.

$ uname -a
Linux pureos 6.5.0-1-librem5 #1 SMP PREEMPT Fri Dec  8 19:43:40 UTC 2023 aarch64 GNU/Linux
4 Likes

That looks good to me. Thank you. I will report back.

Edit as of 08/18/2024: the phone runs much cooler and, even better, it suspends again! Thank you very much. Fingers crossed that this continues.

(As an aside, the heating and cooling cause some minor screen tear in my screen. Frustrating. Luckily, I have the ability to buy and install a new screen, if I so choose).

1 Like

linux-image-6.5.0-1-librem5/now 6.5.13pureos1~byz1 arm64 [installed,local]

I hate to be a pain, but where did you get this kernel image. I have linux-image-6.3.0-1-librem5 that I can use but I would rather only only back to 6.5.0-1 if I can.

Did you install it locally? If so, where did you get a copy of that kernel image? Thank you!

1 Like

Any idea why updating the kernel creates different problems for different phones, all of which run the same operating system? I wonder, does my phone have slightly different hardware?

I am also concerned I am not running the most current firmware which I also need to figure-out. I don’t know a lot about this area.

1 Like

Different use cases. I realized in meantime that my heating only happens powered via USB (even if battery is fully charged). Little differences can lead to different situations.

Every device has slightly different hardware btw. Even mass product CPUs of the same charge are different. I remember a test where a lot of exactly same CPUs in the exactly same setup result in different CPU-speed. Just a few percentages, but measurable. But that does not mean that’s the reason for your issue.

I think @dos is the better person to ask about this area. My own knowledge is also very limited.

2 Likes