Framework Laptop 13 Ryzen 7040 BIOS 3.16 Release STABLE

Cc: @freernd
Hello again. Seems setting slow-limit and apu-skin-temp worked, but stapm-limit did not?

  • firmware: 03.16
  • kernel: 6.16.1
  • ryzen_smu: 172c316
  • ryzenadj: 7a603ae
Stock info table
detected compatible ryzen_smu kernel module
CPU Family: Phoenix Point
SMU BIOS Interface Version: 15
Version: v0.17.0 
PM Table Version: 4c0009
|        Name         |   Value   |     Parameter      |
|---------------------|-----------|--------------------|
| STAPM LIMIT         |    30.000 | stapm-limit        |
| STAPM VALUE         |     5.175 |                    |
| PPT LIMIT FAST      |    30.000 | fast-limit         |
| PPT VALUE FAST      |     6.363 |                    |
| PPT LIMIT SLOW      |    15.000 | slow-limit         |
| PPT VALUE SLOW      |     5.258 |                    |
| StapmTimeConst      |    16.405 | stapm-time         |
| SlowPPTTimeConst    |     7.540 | slow-time          |
| PPT LIMIT APU       |    41.000 | apu-slow-limit     |
| PPT VALUE APU       |     0.000 |                    |
| TDC LIMIT VDD       |    54.000 | vrm-current        |
| TDC VALUE VDD       |     2.794 |                    |
| TDC LIMIT SOC       |    16.000 | vrmsoc-current     |
| TDC VALUE SOC       |     1.295 |                    |
| EDC LIMIT VDD       |    92.641 | vrmmax-current     |
| EDC VALUE VDD       |    35.494 |                    |
| EDC LIMIT SOC       |    23.000 | vrmsocmax-current  |
| EDC VALUE SOC       |     1.765 |                    |
| THM LIMIT CORE      |   100.000 | tctl-temp          |
| THM VALUE CORE      |    40.506 |                    |
| STT LIMIT APU       |    41.000 | apu-skin-temp      |
| STT VALUE APU       |    34.039 |                    |
| STT LIMIT dGPU      |     0.000 | dgpu-skin-temp     |
| STT VALUE dGPU      |     0.000 |                    |
| CCLK Boost SETPOINT |       nan | power-saving /     |
| CCLK BUSY VALUE     |       nan | max-performance    |
Test changes
$ doas ryzenadj -a 43000
detected compatible ryzen_smu kernel module
Sucessfully set stapm_limit to 43000
$ doas ryzenadj -c 43000
detected compatible ryzen_smu kernel module
Sucessfully set slow_limit to 43000
$ doas ryzenadj  --apu-skin-temp 43000
detected compatible ryzen_smu kernel module
Sucessfully set apu_skin_temp_limit to 43000
Updated info table
detected compatible ryzen_smu kernel module
CPU Family: Phoenix Point
SMU BIOS Interface Version: 15
Version: v0.17.0 
PM Table Version: 4c0009
|        Name         |   Value   |     Parameter      |
|---------------------|-----------|--------------------|
| STAPM LIMIT         |    30.000 | stapm-limit        |
| STAPM VALUE         |     5.613 |                    |
| PPT LIMIT FAST      |    30.000 | fast-limit         |
| PPT VALUE FAST      |     5.837 |                    |
| PPT LIMIT SLOW      |    43.000 | slow-limit         |
| PPT VALUE SLOW      |     5.542 |                    |
| StapmTimeConst      |     9.093 | stapm-time         |
| SlowPPTTimeConst    |     6.323 | slow-time          |
| PPT LIMIT APU       |    41.000 | apu-slow-limit     |
| PPT VALUE APU       |     0.000 |                    |
| TDC LIMIT VDD       |    54.000 | vrm-current        |
| TDC VALUE VDD       |     2.663 |                    |
| TDC LIMIT SOC       |    16.000 | vrmsoc-current     |
| TDC VALUE SOC       |     1.267 |                    |
| EDC LIMIT VDD       |    92.641 | vrmmax-current     |
| EDC VALUE VDD       |    35.103 |                    |
| EDC LIMIT SOC       |    23.000 | vrmsocmax-current  |
| EDC VALUE SOC       |     1.768 |                    |
| THM LIMIT CORE      |   100.000 | tctl-temp          |
| THM VALUE CORE      |    41.325 |                    |
| STT LIMIT APU       |   248.000 | apu-skin-temp      |
| STT VALUE APU       |    34.053 |                    |
| STT LIMIT dGPU      |     0.000 | dgpu-skin-temp     |
| STT VALUE dGPU      |     0.000 |                    |
| CCLK Boost SETPOINT |       nan | power-saving /     |
| CCLK BUSY VALUE     |       nan | max-performance    |
1 Like

Did you select performance mode? This should set both stapm-limit and fast-limit to the maximum of 53W.

Happy to hear though that the slow limit still works. I don’t think its an intended feature to run the low power U skew at 43W instead of 28W all the time and it wouldn’t be the first time that a CPU manufacture takes away feature after purchase…

powerprofilesctl set performance sets stapm-limit and fast-limit to 46.0 for me. I was still unable to manually set it however.

Probably not. These were just his requested test settings from the last bios thread. I have unfortunately never had the time to look into putting together a set of ryzenadj configs for my purposes; I just have it installed from back when I discovered it and thought it useful.

Via the AMD PI update? That would be disappointing.

Can you get sustained 35W or 35W for at least one minute in BIOS 3.16 just by using power profile mode without ryzenadj?

Hello everyone,

after running fwupdmgr update on my Framework 13 (AMD 7040 series) to upgrade to version 3.16, my external monitor stopped working correctly in Ubuntu 24.04.

  • The monitor now appears as “Unknown Display” in display settings.

  • It is limited to 640x480 resolution only.

  • This issue started immediately after the firmware update.

  • Kernel version: 6.14.0-28-generic

Has anyone else seen this problem after the latest firmware update? Does anyone know how I could address this issue?

Many thanks in advance for your help!

EDIT: I tried booting into the 6.8.0-1032-oem kernel, and with that version the external monitor works normally again — it is detected correctly and full resolution is available. So this seems to be a kernel/driver compatibility issue rather than a problem with the 3.16 firmware itself.

1 Like

Argh! Only recently did I solve a problem whereby LibreOffice’s Impress would hard hang the system when displaying some particular slides onto an external monitor. (See here.) And now . . a BIOS update messes up external screens (and might also lock one out of the BIOS)? Lord above!

Currently I am on kernel 6.8.0-1032, non-OEM, on Linux Mint 22.1 (which is based upon Ubuntu . . 24.04). How, please, does one get the OEM kernels?

EDIT: There are even further serious problems with this BIOS update. Framework is really, really bad at BIOS.

1 Like

Don’t forget this version finally allows downgrades. At least you have an option as long as external monitors worked before.

I was really surprised when they released this as stable, they are never stable.

2 Likes

@JL_Framework

To change to a “oem” kernel.

At the command line:

apt search oem |grep linux-image

and then to install one:

apt install linux-image-6.14.0-1010-oem

where “linux-image-6.14.0-1010-oem” is whatever most up to date one you can find.

You would then need to reboot to run it.

uname -a

will tell you what version is currently running.

And it still doesn’t remember the VRAM (UMA Game Mode) through battery disconnects.

It remembers most everything else, so surely, it can remember to assign more than 512MB as VRAM through battery disconnects….

Thank you. I appreciate your taking the time to supply that information. Perhaps I will use that information at some point; for the moment, I shall wait in the hope that Framework provides a less buggy BIOS.

The Kernel loads your OS, the BIOS loads low level drivers for your specific hardware. They are not the same and mostly work independently.

That’s odd, because support contacted me about my battery flipping ticket (which is still open) and suggested I try installing this BIOS to see if it fixes it.

However, I see that there’s a lot of issues with this BIOS (FN lock? Supervisor password breaking? USB-C display out breaking!?) so I am going to skip this one :frowning:

That sounds a bit wrong to me. But I mainly learnt about these things before secure boot existed. Isn’t the kernel a part of your OS? Does the OS now always have to use the BIOS (aka UEFI) to load things securely? That sounds unlikely to me.

Yes agreed.

The boot chain looks like UEFI > bootloader > OS.

For Linux the bootloader would usually be grub and OS would be the Linux kernel who will detect and load the drivers for your hardware and then start the init system. The init system will in turn start the services required to bring up a graphical session.

The UEFI does do some device initialization and load a minimal set of drivers to get its UI running but AFAIK the drivers part gets thrown away when the Linux kernel starts and it will load its own drivers for any device found on the machine.

It emerges from earlier in this thread that, seemingly, one Framework BIOS messes up external monitors unless one has a particular kernel.

Oh, also: welcome to the community!

1 Like

It was an overly simple explanation that wasn’t very well managed.

Thank you very much! Happy to be part of this nice community :slightly_smiling_face:

I had to hold off on kernels starting with 6.13.X because the display crashes due to buggy drivers. Any news on that front?

Am still on 6.12.15 because of that. And will forgo this firmware until the above issue is fixed.

1 Like

My external display stopped working with kernel 6.14.0-28-generic after updating the BIOS, but everything works fine with 6.8.0-1032-oem. My laptop’s internal display has always worked, so the problem only affects the external monitor. I think this suggests that it is mainly a kernel/display driver issue rather than a firmware issue—the firmware may have only exposed an incompatibility with the newer kernel’s display drivers. If you are stable on 6.12.15, it is probably best to stick with that for now. I’m no expert on BIOS or kernels, but if I can help in any way, please let me know. :slightly_smiling_face:

2 Likes