Framework Laptop 13 - 12th Gen Intel Core BIOS 3.18 Release BETA

've just performed the upgrade with LVFS (worked flawlessly, awesome!), and I see an improvement, in the sense that I do see some CPUs hit turbo sometimes.

This is a 12th gen Framework 13" with a 12th Gen Intel(R) Core(TM) i5-1240P CPU.

Here’s what i7z looks like as I’m typing this:

Cpu speed from cpuinfo 2111.00Mhz
cpuinfo might be wrong if cpufreq is enabled. To guess correctly try estimating via tsc
Linux's inbuilt cpu_khz code emulated now
True Frequency (without accounting Turbo) 2111 MHz
  CPU Multiplier 21x || Bus clock frequency (BCLK) 100.52 MHz

Socket [0] - [physical cores=12, logical cores=16, max online cores ever=12]
  TURBO ENABLED on 12 Cores, Hyper Threading ON
  Max Frequency without considering Turbo 2211.52 MHz (100.52 x [22])
  Max TURBO Multiplier (if Enabled) with 1/2/3/4/5/6 Cores is  44x/44x/37x/35x/35x/35x
  Real Current Frequency 3076.65 MHz [100.52 x 30.61] (Max of below)
        Core [core-id]  :Actual Freq (Mult.)      C0%   Halt(C1)%  C3 %   C6 %  Temp      VCore
        Core 1 [0]:       2014.95 (20.04x)      1.21    97.8       0       1    46      1.1127
        Core 2 [2]:       3076.65 (30.61x)      2.36    95.6       0       1    46      1.1127
        Core 3 [4]:       2350.32 (23.38x)       2.1    96.2       0     1.5    46      1.1078
        Core 4 [6]:       2973.10 (29.58x)      2.77    95.1       0       1    48      1.1277
        Core 5 [8]:       2334.90 (23.23x)      1.68    2.28       0    95.9    45      1.1127
        Core 6 [9]:       2715.21 (27.01x)      1.65    1.66       0    96.2    45      1.1127
        Core 7 [10]:      2170.68 (21.59x)         1    1.91       0    97.1    45      1.1277
        Core 8 [11]:      1643.91 (16.35x)       1.4    3.64       0    95.3    45      1.1277
        Core 9 [12]:      2174.92 (21.64x)         1     1.3       0    98.1    48      1.1477
        Core 10 [13]:     2066.47 (20.56x)         1    5.84       0    93.5    48      1.1377
        Core 11 [14]:     1810.60 (18.01x)         1    0.621      0      99    48      1.1377
        Core 12 [15]:     1432.82 (14.25x)      1.26    3.24       0    95.9    48      1.1377

Now I wish I had copy-pasted the i7z output in Framework Laptop 13 - 12th Gen Intel Core BIOS 3.17 Release Stable - #124 by anarcat to compare, but I seem to recall it was more stuck around 1000MHz before, I would not see those 2000/3000MHz marks at all.

And while performing a becnhamark, it actually spins up to 4GHz correctly:

Cpu speed from cpuinfo 2111.00Mhz
cpuinfo might be wrong if cpufreq is enabled. To guess correctly try estimating via tsc
Linux's inbuilt cpu_khz code emulated now
True Frequency (without accounting Turbo) 2105 MHz
  CPU Multiplier 21x || Bus clock frequency (BCLK) 100.24 MHz

Socket [0] - [physical cores=12, logical cores=16, max online cores ever=12]
  TURBO ENABLED on 12 Cores, Hyper Threading ON
  Max Frequency without considering Turbo 2205.24 MHz (100.24 x [22])
  Max TURBO Multiplier (if Enabled) with 1/2/3/4/5/6 Cores is  44x/44x/37x/35x/35x/35x
  Real Current Frequency 4316.37 MHz [100.24 x 43.06] (Max of below)
        Core [core-id]  :Actual Freq (Mult.)      C0%   Halt(C1)%  C3 %   C6 %  Temp      VCore
        Core 1 [0]:       2924.97 (29.18x)      4.27      91       0    3.04    63      1.0684
        Core 2 [2]:       4316.37 (43.06x)       100       0       0       0    94      1.0884
        Core 3 [4]:       3427.23 (34.19x)      3.22    93.8       0       1    60      1.1338
        Core 4 [6]:       3468.47 (34.60x)      6.07    88.5       0    1.52    63      1.0638
        Core 5 [8]:       2942.05 (29.35x)      4.56    4.12       0    89.5    60      1.1238
        Core 6 [9]:       3059.79 (30.53x)      7.99    3.86       0    84.6    60      1.1438
        Core 7 [10]:      2831.92 (28.25x)      2.12    4.76       0    92.4    59      1.1438
        Core 8 [11]:      3049.16 (30.42x)      5.73    2.29       0    89.4    59      1.1438
        Core 9 [12]:      2677.65 (26.71x)      2.93    3.67       0    92.6    61      1.1538
        Core 10 [13]:     2762.01 (27.55x)      2.99    6.05       0      90    61      1.1538
        Core 11 [14]:     2930.54 (29.24x)      2.63    3.34       0      93    61      1.1688
        Core 12 [15]:     2126.81 (21.22x)      3.23    9.71       0      87    61      1.1538

… and I do see a performance improvement on the benchmarks!

anarcat@angela:~/s/asncounter> hyperfine -i -w 3 --input test/data/sample-10m.ips \
                                    "./asncounter.py --cache-dir=test/cache"
Benchmark 1: ./asncounter.py --cache-dir=test/cache
  Time (mean ± σ):      6.506 s ±  0.104 s    [User: 6.387 s, System: 0.118 s]
  Range (min … max):    6.361 s …  6.690 s    10 runs
 

Before the BIOS upgrade, it was 16 seconds instead of 6 seconds.

I don’t get the quirky fan spinups anymore (which were oddly satisfying, after the first knee-jerk reaction), but I guess that’s a profile I can adjust myself…

Fan is at 5k RPM during the benchmark according to sensors and spins down to 3k after a a couple minutes, the whole thing gets pretty hot still (50C), so I’m not sure the fan profiles are ideal.

Every 2.0s: sensors                                      angela: Thu Jul 10 10:00:16 2025

iwlwifi_1-virtual-0
Adapter: Virtual device
temp1:        +42.0°C

cros_ec-isa-000c
Adapter: ISA adapter
fan1:         3361 RPM
F75303_Local:  +47.9°C
F75303_CPU:    +49.9°C
F75303_DDR:    +47.9°C
Battery:       +31.9°C
PECI:          +51.9°C
F75397_VCCGT:  +45.9°C

acpitz-acpi-0
Adapter: ACPI interface
temp1:        +51.8°C
temp2:        +47.8°C
temp3:        +49.8°C
temp4:        +45.8°C
temp5:        +31.8°C

coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +52.0°C  (high = +100.0°C, crit = +100.0°C)
Core 0:        +52.0°C  (high = +100.0°C, crit = +100.0°C)
Core 4:        +51.0°C  (high = +100.0°C, crit = +100.0°C)
Core 8:        +50.0°C  (high = +100.0°C, crit = +100.0°C)
Core 12:       +48.0°C  (high = +100.0°C, crit = +100.0°C)
Core 16:       +50.0°C  (high = +100.0°C, crit = +100.0°C)
Core 17:       +50.0°C  (high = +100.0°C, crit = +100.0°C)
Core 18:       +50.0°C  (high = +100.0°C, crit = +100.0°C)
Core 19:       +50.0°C  (high = +100.0°C, crit = +100.0°C)
Core 20:       +51.0°C  (high = +100.0°C, crit = +100.0°C)
Core 21:       +51.0°C  (high = +100.0°C, crit = +100.0°C)
Core 22:       +51.0°C  (high = +100.0°C, crit = +100.0°C)
Core 23:       +51.0°C  (high = +100.0°C, crit = +100.0°C)

BAT1-acpi-0
Adapter: ACPI interface
in0:          17.21 V
curr1:         0.00 A

nvme-pci-0100
Adapter: PCI adapter
Composite:    +36.9°C  (low  = -40.1°C, high = +83.8°C)
                       (crit = +87.8°C)
Sensor 1:     +51.9°C  (low  = -273.1°C, high = +65261.8°C)
Sensor 2:     +36.9°C  (low  = -273.1°C, high = +65261.8°C)

here’s what the ec fan profile looks like:

anarcat@angela:~[1]> sudo dist/EmbeddedController/build/bds/util/ectool thermalget 
sensor  warn  high  halt   fan_off fan_max   name
  0        0   361    371    324     342     F75303_Local
  1        0   361    371    324     342     F75303_CPU
  2        0   360    370    313     342     F75303_DDR
  3        0   323    333    313     323     Battery
  4      388   393    400    376     378     PECI
  5        0   361    371    324     342     F75397_VCCGT
EC result 3 (INVALID_PARAM)
(all temps in degrees Kelvin)

this seems similar to previously reported (e.g. Framework Laptop 13 - 12th Gen Intel Core BIOS 3.17 Release Stable - #54 by Ryan_Martens)

After writing this for a while, the fan has spun down to 2k RPM and is not audible over the ambiant noise here, it was barely audible before, even during the benchmark.

Finally:

I saw that! It’s a little distracting, but otherwise feels completely inoffensive.

That, I did not notice however, not sure what it means.

So, long story short, I’d call this a Great Success, thanks for iterating quickly on this, and congrats on the team!

5 Likes