Framework Laptop (11th Gen Intel CPU) with Fedora 35
Table of Contents
These are my notes on installing a brand new Framework Laptop (Batch 9) for a nephew of mine. It is the model with 11th Gen Intel Core.
Hardware Info
The Framework Support page should be your entry point. Be sure to check out the Setup, Upgrade, and Repair Guides.
Hardware Summary
- CPU: Intel® Core™ i7-1165G7
- Memory: 32GB (2 x 16GB) DDR4-3200
- Storage: 2TB - WD_BLACK™ SN750 NVMe™
- Keyboard: English International
Make, Model, Version
[root@framewrk-lptp ~]# dmidecode --type system | head --lines=9
# dmidecode 3.3
Getting SMBIOS data from sysfs.
SMBIOS 3.3.0 present.
Handle 0x0001, DMI type 1, 27 bytes
System Information
Manufacturer: Framework
Product Name: Laptop
Version: AB
BIOS Version
My Batch 9 machine came with today’s latest, 3.07
[root@framewrk-lptp ~]# dmidecode -s bios-version
03.07
CPU
[root@framewrk-lptp ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 39 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Vendor ID: GenuineIntel
BIOS Vendor ID: Intel(R) Corporation
Model name: 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz
BIOS Model name: 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz
CPU family: 6
Model: 140
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
Stepping: 1
CPU max MHz: 4700,0000
CPU min MHz: 400,0000
BogoMIPS: 5606.40
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq
dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb cat_l2 invpcid_single cdp_l2 ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnm
i flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb intel_pt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves split_lock_detect dtherm ida arat pln pts hwp
hwp_notify hwp_act_window hwp_epp hwp_pkg_req avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid movdiri movdir64b fsrm avx512_vp2intersect md_clear flush_l1d arch_capabilities
Virtualization features:
Virtualization: VT-x
Caches (sum of all):
L1d: 192 KiB (4 instances)
L1i: 128 KiB (4 instances)
L2: 5 MiB (4 instances)
L3: 12 MiB (1 instance)
NUMA:
NUMA node(s): 1
NUMA node0 CPU(s): 0-7
Vulnerabilities:
Itlb multihit: Not affected
L1tf: Not affected
Mds: Not affected
Meltdown: Not affected
Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Spectre v2: Mitigation; Enhanced IBRS, IBPB conditional, RSB filling
Srbds: Not affected
Tsx async abort: Not affected
Storage
[root@framewrk-lptp ~]# nvme list
Node SN Model Namespace Usage Format FW Rev
---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1 [REDACTED] WD_BLACK SN750 2TB 1 2,00 TB / 2,00 TB 512 B + 0 B 112000WD
[root@framewrk-lptp ~]# df -h -x tmpfs -x devtmpfs
Filesystem Size Used Avail Use% Mounted on
/dev/dm-0 1,4T 3,8G 1,4T 1% /
/dev/dm-0 1,4T 3,8G 1,4T 1% /home
/dev/nvme0n1p5 974M 153M 755M 17% /boot
/dev/nvme0n1p1 96M 40M 57M 41% /boot/efi
Note that Fedora uses btrfs by default since F33.
Memory
2x Crucial 16GB DDR4-3200 SODIMM (CT16G4SFD832A)
Click to show technical details.
[root@framewrk-lptp ~]# dmidecode -t memory
# dmidecode 3.3
Getting SMBIOS data from sysfs.
SMBIOS 3.3.0 present.
Handle 0x0014, DMI type 16, 23 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: None
Maximum Capacity: 64 GB
Error Information Handle: No Error
Number Of Devices: 2
Handle 0x0015, DMI type 17, 92 bytes
Memory Device
Array Handle: 0x0014
Error Information Handle: No Error
Total Width: 64 bits
Data Width: 64 bits
Size: 16 GB
Form Factor: SODIMM
Set: None
Locator: Controller0-ChannelA-DIMM0
Bank Locator: BANK 0
Type: DDR4
Type Detail: Synchronous
Speed: 3200 MT/s
Manufacturer: Crucial Technology
Serial Number: [REDACTED]
Asset Tag: 9876543210
Part Number: CT16G4SFRA32A.M16FRS
Rank: 2
Configured Memory Speed: 3200 MT/s
Minimum Voltage: Unknown
Maximum Voltage: Unknown
Configured Voltage: 1.2 V
Memory Technology: DRAM
Memory Operating Mode Capability: Volatile memory
Firmware Version: Not Specified
Module Manufacturer ID: Bank 6, Hex 0x9B
Module Product ID: Unknown
Memory Subsystem Controller Manufacturer ID: Unknown
Memory Subsystem Controller Product ID: Unknown
Non-Volatile Size: None
Volatile Size: 16 GB
Cache Size: None
Logical Size: None
Handle 0x0016, DMI type 17, 92 bytes
Memory Device
Array Handle: 0x0014
Error Information Handle: No Error
Total Width: 64 bits
Data Width: 64 bits
Size: 16 GB
Form Factor: SODIMM
Set: None
Locator: Controller1-ChannelA-DIMM0
Bank Locator: BANK 0
Type: DDR4
Type Detail: Synchronous
Speed: 3200 MT/s
Manufacturer: Crucial Technology
Serial Number: [REDACTED]
Asset Tag: 9876543210
Part Number: CT16G4SFRA32A.M16FRS
Rank: 2
Configured Memory Speed: 3200 MT/s
Minimum Voltage: Unknown
Maximum Voltage: Unknown
Configured Voltage: 1.2 V
Memory Technology: DRAM
Memory Operating Mode Capability: Volatile memory
Firmware Version: Not Specified
Module Manufacturer ID: Bank 6, Hex 0x9B
Module Product ID: Unknown
Memory Subsystem Controller Manufacturer ID: Unknown
Memory Subsystem Controller Product ID: Unknown
Non-Volatile Size: None
Volatile Size: 16 GB
Cache Size: None
Logical Size: None
[root@framewrk-lptp ~]# free -h
total used free shared buff/cache available
Mem: 31Gi 895Mi 28Gi 105Mi 1,5Gi 29Gi
Swap: 8,0Gi 0B 8,0Gi
Expansion Cards
I went for the following
count | description |
---|---|
1 | DisplayPort Expansion Card |
1 | HDMI Expansion Card |
3 | USB-C Expansion Card |
2 | USB-A Expansion Card |
Ethernet Adapter
Since there is no RJ45 Ethernet connection, an Anker PowerExpand USB-C to Gigabit Ethernet Adapter was gifted by Janine. Wi-Fi is nice, but it’s always good to have the option to use cabled network.
Initial Bringup
Insert RAM and NVMe
Is well documented in the Framework Laptop DIY Edition Quick Start Guide.
But not powering up
Problem with this one was that the step pressing the power button (near the end of the article) led to nothing, the machine acted completely dead. :-( Same result with 2 different USB-C power supplies, same result with different USB-C Expansion Cards.
Properly attach power button bracket
On closer inspection the power button felt not correctly attached, one of the three screws holding the retention bracket was not fully screwed in, the power button was wobbly and the case was not flush near the power button. Not a good start for a brand new device.
But, while Framework’s post assembly QA feels below par, the documentation is excellent. I simply followed the Fingerprint Reader Replacement Guide up to step 5 (removing the silver bracket) and then again from step 11 (attach the silver bracket) onward.
While the power button and case now were as they should be, the laptop still would not power on.
Mainboard Reset
At least the problem is shared by others and Framework describes a fix in Fully Resetting the Mainboard State. Since the owner of this laptop will be a teenager, I would be much happier if there was a push button for this reset on the mobo, especially since Framework chose a flimsy battery holder and connector. I would happily have paid up to 25€ more for higher quality CMOS batt holder and laptop batt connector. It is counterproductive to long device life to pick connectors from the very bottom of the price range. I was expecting better and am definitely used to better when working on a ThinkPad.
Shoddy assembly quality aside, the laptop was now finally working.
After reading the thread Completely dead, I get the impression it might have been sufficient to only pull the CMOS battery and not hassle with the fiddly main battery connector. No matter, it works now.
Windows 10 Pro Installation
Since the owner of the laptop will also use it for school, I installed Windows 10 Pro purchased as Download version with the machine. That install was given roughly ¼ of the NVMe, the remaining ¾ were left unused in anticipation of the Fedora Linux install.
The Win10 installation is well documented in Step 13 Install an Operating System and Drivers of the Framework Laptop DIY Edition Quick Start Guide.
Microsoft’s Windows 10 Media Creation Tool twice (once in a VM running on the Framework laptop and once on a native Windows install on another machine) happily created a USB medium, without any errors, but the installer did error out. Seems I am not alone with that issue and the solution was to use a different USB stick. That 3rd write, to a new stick, allowed me to install.
Guess that as a Red Hat Enterprise Linux and Fedora user I am spoiled since those actually verify the boot medium’s integrity by default. No matter. With the second stick it installed fine.
While I would have preferred a driver disk to feed the installer, post install the Framework Laptop Driver Bundle executable did its job just fine.
Dual Boot Notes
I disabled fast boot in Windows, as it is known to interfere with WiFi when dual booting. There was no notable difference in Window’s boot time.
Note that if you intend to use the fingerprint reader in a dual boot setup, then you might have issues, but the threads also show people having success.
Install Fedora 35 Workstation
Is also well documented in Framework’s article Fedora 35 Installation on the Framework Laptop
The two workarounds from Step 4, Completing Setup were applied. That is microphone input on the 3.5mm jack and Gnome […] enable fractional scaling.
Updating the BIOS was not needed since it’s already at version 3.07.
Being a civilised installer, Fedora noticed that Windows was present and automatically created an entry in the bootloader. Not like other OSes (yes, Windows, I am looking at you) that bulldozer over already installed OSes during install.
Fixed Issues under F35 default install plus updates
See the thread Fedora Linux 35 (Fedora 35) on the Framework Laptop.
If you understand German, then you could also read the article in c’t 7/2022, page 160(paywalled) and the link collection of the article.
I expect most if not all of these to be fixed in a future Fedora update, so do not blindly apply if you read this much later then April 2022, rather check the thread linked above.
grub Bootloader Slow to React
Was a known issue, this will hopefully be fixed in Fedora 36. See RHBZ #1986235 for details. It got fixed in rawhide in late March 2022.
For this F35 install I worked around it, as per comment #2 in the bug, after applying updates.
sudo cp /boot/efi/EFI/fedora/grub.cfg /boot/efi/EFI/fedora/grub.cfg.orig
sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
That was with
[root@framewrk-lptp ~]# rpm -qa grub2*
grub2-common-2.06-10.fc35.noarch
grub2-tools-minimal-2.06-10.fc35.x86_64
grub2-tools-2.06-10.fc35.x86_64
grub2-pc-modules-2.06-10.fc35.noarch
grub2-pc-2.06-10.fc35.x86_64
grub2-efi-ia32-2.06-10.fc35.x86_64
grub2-efi-x64-2.06-10.fc35.x86_64
grub2-tools-extra-2.06-10.fc35.x86_64
grub2-efi-ia32-cdboot-2.06-10.fc35.x86_64
grub2-efi-x64-cdboot-2.06-10.fc35.x86_64
grub2-tools-efi-2.06-10.fc35.x86_64
Technical details, click to expand.
The content of /boot/efi/EFI/fedora/grub.cfg.orig
search --no-floppy --fs-uuid --set=dev [REDACTED]
set prefix=($dev)/grub2
export $prefix
configfile $prefix/grub.cfg
See also Unify the location of GRUB configuration files across all supported CPU architectures in the Fedora 34 release notes.
So the work around is not ideal but works.
FIXME: revisit once F36 is out.
Use Deep Sleep instead of s2idle
For now it looks like sleep type deep is the better choice, try s2idle when on F36 or later.
Deep sleep was configured as per the thread Enabling hibernate on Fedora 35.
sudo grubby --update-kernel=ALL --args=mem_sleep_default=deep
Audio is fine after suspend / resume.
If the power drain during sleep is too much, then revert this by following either Making Persistent Changes to a GRUB 2 Menu Using the grubby Tool or Customizing the GRUB 2 Configuration File in the Working with the GRUB 2 Boot Loader guide.
also see https://community.frame.work/t/fedora-35-kernel-5-16-5-s2idle-and-maybe-wifi-issues/14704/34
Todo: Try without mem_sleep_default=deep
once F36 is released and the machine was updated.
Potential Battery Life Tuning
If battery life deemed not good enough, then see the thread Linux battery life tuning.
Install Packages for Virtualization
Since Windows was installed natively, there was no need for a VM under Fedora and I thus left the packages for using virtual machines out.
Do read Getting started with virtualization and Installing virtual operating systems with GNOME Boxes in the Fedora Quick Docs before choosing between the two options.
Virtualisation works fine, as expected. I tested it before doing the dual boot setup. I just did not install the packages in the final installation round.