Framework Laptop firmware

Late last week Framework announced that is has made its EC firmware open source for all to have a look and contribute to! This is an exciting move making the Framework Laptop an even more enticing option for those that aren’t a fan of a closed operating system and firmware.

On top of this Framework has also said it is working to replace the proprietary firmware it is currently using, sharing that it is ‘stuck’ with it for now.

At Framework, the community is at the core of how we build products.  At most consumer electronics companies, community members are a source of revenue or at best a channel for evangelism.  We expect more than that.  We want to empower you to participate directly in the creation of Framework product ecosystems.  Modular products only get more capable and interesting as the communities around them grow, enabling a broader range of audiences and use cases.  We’re seeing the early results of that already with the Expansion Card Developer Program and some of the amazing designs in development and prototyping, like magnetic charging cards and LTE radios.

The Framework Laptop’s embedded controller (EC) firmware is based on Google’s Chromium-EC project which is what Chromebook’s use. Framework has released its EC firmware under the same BSD 3 clause which allows for modification and resharing as you like.

For those that aren’t aware what EC firmware does, it controls low level features of the laptop in the form of power sequencing, keyboard, and touchpad interfacing, and controlling system LEDs.

It’s important to note that modifying the EC firmware can result in damaging or bricking your Framework Laptop. It is advised to modify the firmware at your own risk and if you are willing to take the risk.

You might like

Source: Framework

Tags: Framework, Framework Laptop

We earn commision on affiliate links.

Hardware PCI/USB ID Working?
GPU See Table
Wireless See Table
Audio 8086:a0c8 Yes
Touchpad 093a:0274 Yes
Webcam 0bda:5634 Yes
Fingerprint reader 27c6:609c Yes
Bluetooth See Table
Accelerometer   Untested
TPM Yes
Ambient light sensor Yes

This article covers the installation and configuration of Arch Linux on a Framework Laptop.

For a general overview of laptop-related articles and recommendations, see Laptop.

Hardware

Framework is intended to be a configurable and upgradeable laptop. The lists below is not intended to be an exhaustive list of all the hardware sold with the framework, but rather a list of tested modules that are specially made for the Framework laptop.

Motherboards

Note: Probably needs a better way to distinguish between motherboard revisions and CPU model used.

CPU Model Working? Notes
Intel i5-1135G7 Yes
Intel i7-1165G7 Yes
Intel i7-1185G7 Yes

WiFi

Device Name PCI ID Bluetooth USB ID Working? Bluetooth? Notes
AX200 8086:2723 8087:0029 Yes Yes Pre-production units
AX201 vPro Untested Untested Professional Edition
AX201 w/o vPro 8086:a0f0 8087:0026 Yes Yes Base/Performance Editions
AX210 vPro 8086:2725 8087:0032 Yes Yes DIY Edition (Optional)
AX210 w/o vPro 8086:2725 8087:0032 Yes Yes DIY Edition (Optional)

i915

Device Name PCI ID Working?
Tigerlake f111:0001 Yes

Expansion Cards

Card Name PCI/USB ID Working? Notes
USB-C N/A Yes
USB-A N/A Yes
MicroSD 090c:3350 Yes
HDMI 32ac:0002 Yes
DisplayPort 32ac:0003 Yes
Storage 250GB 13fe:6500 Yes
Storage 1TB 13fe:6500 Yes

Headset jack

The Framework laptop includes a 3.5mm combination headphone/headset jack (TRRS). By default, when a device is plugged into the jack, it will be recognized only as headphones. To allow recognition of a headset (with microphone), add the following:

/etc/modprobe.d/alsa-base.conf options snd-hda-intel model=dell-headset-multi

Installation

ACPI

Note: This was tested on a pre-production unit.

Some acpi_osi options seems to cause CPU stalls on the laptop. This table is just a list of tested values.

Value Stall? Note
acpi_osi= Yes
acpi_osi="Windows 2020" No Probably the preferred option.

systemd sets up the reboot watchdog and generates an error when the laptop reboots:

[...] watchdog did not stop

You can disable the shutdown watchdog:

/etc/systemd/system.conf RebootWatchdogSec=0

Firmware

BIOS Updates

The Framework laptop BIOS current version is 3.07. It can be updated by EFI shell script placed on a bootable USB flash drive. [1] However, this firmware update method clears EFI bootloaders registered in NVRAM, so having a recovery disk or alternate method of reinstalling your bootloader(s) handy is recommended.

Notable new features in 3.07 include the ability to set a maximum battery charge target via BIOS configuration screens, or via userland utilities. [2]

LVFS

Support for fwupd is planned and being tested, but currently not available [3].

Secure Boot

One can enroll custom keys into the Framework Laptop without any Option ROM concerns, or use the SHIM approach. See Unified Extensible Firmware Interface/Secure Boot for details.

Suspend

Warning: Some NVMe drives do not successfully wake from the deep sleep state described below, disconnecting from the laptop and becoming inaccessible until a reboot, which typically causes the laptop to lock up. One example is the Sabrent Rocket NVMe 4.0[4][5]. Before enabling this sleep state in a production installation, you may wish to test the suspend functionality of your NVMe drive from the Arch installer environment so as not to cause corruption.

The inefficient s2idle (Suspend-To-Idle) suspend variant is pre-selected as default. This state is a generic, pure software, system sleep state. You can select the much more efficient deep (Suspend-To-RAM) variant, which offers significant power savings as everything in the system is put into a low-power state, except for memory, which is placed into the self-refresh mode to retain its contents. Note that the deep variant results in longer resume times.

$ cat /sys/power/mem_sleep [s2idle] deep # echo deep | tee /sys/power/mem_sleep $ cat /sys/power/mem_sleep s2idle [deep]

To make this permanent, add mem_sleep_default=deep to your kernel parameters.

Touchpad

There are reports of the touchpad exhibiting issues (e.g. pointer does not move, two-finger scroll does not work, etc.) after waking from sleep. Disabling PS/2 mouse emulation under Advanced in the BIOS seems to resolve the issues[6].

Function keys

Key Visible?1 Marked?2 Effect
Fn+Esc Yes Yes Toggles Fn lock
F1 Yes Yes XF86AudioMute
F2 Yes Yes XF86AudioLowerVolume
F3 Yes Yes XF86AudioRaiseVolume
F4 Yes Yes XF86AudioPrev
F5 Yes Yes XF86AudioPlay
F6 Yes Yes XF86AudioNext
F7 Yes Yes XF86MonBrightnessDown
F8 Yes Yes XF86MonBrightnessUp
F9 Yes Yes Super_L+p
F10 Yes Yes XF86RFKill, soft blocks wlan and bluetooth
F11 Yes Yes Print
F12 Yes Yes XF86AudioMedia
Fn+Delete Yes Yes Insert
Fn+Space Yes Yes Controls the keyboard backlight
Fn+b No No Control_L+Break
Fn+k No No Scroll_Lock
Fn+p No No Pause
Fn+Left Yes Yes Home
Fn+Right Yes Yes End
Fn+Up Yes Yes Prior/PgUp
Fn+Down Yes Yes Next/PgDn
  1. The key is visible to xev and similar tools.
  2. The physical key has a symbol on it, which describes its function.

Troubleshooting

Stuttering, flickering and periodic freeze

There are reports of stuttering, flickering and periodic freezes on the laptop when using GNOME and Wayland. Disabling Panel Self-Refresh has been reported to work[7], although this may no longer be needed on kernel 5.14. PSR is helpful for battery life, so it should be left on if there are no issues.

/etc/modprobe.d/i915.conf options i915 enable_psr=0

See also Intel graphics#Screen flickering.

Bluetooth on Linux 5.13/5.14

The AX210 Bluetooth controller does not appear to work as expected when using 5.13 or 5.14 (current as of 5.14.7), tested with bluetoothctl list. Here is the upstream bug report: https://bugzilla.kernel.org/show_bug.cgi?id=213829. AX210 Bluetooth works on 5.14 with cold boots, but the controller disappears after a warm boot. If necessary, downgrade to 5.12.15 for working Bluetooth support, or use a Bluetooth controller that is known to work, such as the AX201.

This issue is resolved with 5.15.4 [8].

Two/Three finger clicks

By default, the touchpad provides middle and right click by clicking on specific regions (bottom middle for middle click and bottom right corner for right click). To switch this two-finger click for right click and three-finger click for middle click, you will need to set the "click method" via libinput. First, find your "Touchpad" device name:

$ xinput

And then set the click method, where device is the name (or ID) found in the previous step:

$ xinput set-prop "device" "libinput Click Method Enabled" 0 1

To make this persistent, put it in a startup script. Alternatively, if using X11, one can create a custom Xorg configuration file with the appropriate settings (see libinput#Via Xorg configuration file).

Dealing with HiDPI with a classic X11 window manager

See HiDPI.

Changing the brightness of the monitor does not work

If you are using a tool like xbacklight(1) (xorg-xbacklight), it might report that it cannot detect any output devices with backlight settings. This is despite a standard backlight directory tree in /sys/class/backlight/intel_backlight. Use xbacklight(1) (acpilight) instead for a compatible tool that works with this laptop.

Bootmanager flashing black screen and not loading operating system

If your Framework laptop loads the bootloader and can recognize the EFI partition on your flash drive or m.2. drive, but cannot load your boot manager (it only flashes a black screen before returning to the bootloader), you must disable Secure Boot.

  1. Reboot holding F2
  2. Go to the Security Tab
  3. Secure boot defaults to ON; disable it
  4. Save changes and restart

Intel Wi-Fi 6E AX210 reset/ low throughput / "Microcode SW error"

Under high stress, Wi-Fi device restarts and network speeds become abysmally slow or non-responsive until disconnecting and reconnecting to WiFi network.[9]

This issue has been observed by owners of other manufacturers' laptops (not just framework). [10]

Disabling IEEE 802.11ax seems to be a suitable workaround for the time being. [11]

/etc/modprobe.d/iwlwifi.conf options iwlwifi disable_11ax=Y

Intel is aware[12] of the issue and there is a patch[13] that fix slow tx after restart, and another[14] that address the SW error.

Fingerprint Reader Device Disconnected Error

When the fingerprint reader has been used to enroll a fingerprint on Windows, and you later attempt to use the reader under Linux without first unenrolling your print from within Windows, fprintd can fail to work. In this situation, upon enrolling with fprintd-enroll, the command will hang, as fprintd has crashed.

The best way to deal with this, if you still have access to Windows, is to boot back in and unenroll your fingerprint from there. If this is not possible, you can try a script posted by someone on the Framework laptop forums.

Additional Hardware

Docking Stations

The following docking station(s) work out of the box with no additional configuration:

Name Model Number Interface Power Delivery? Notes
Hyper Drive Power 9-in-1 USB-C Hub HD30F-GRAY USB-C Yes Needs to be reconnected if power is removed while connected.
Anker PowerExpand 13-in-1 USB-C Dock A8392 USB-C Yes
Anker 777 Thunderbolt Docking Station A8397 USB-C Yes Instantaneous wakeups from suspend when connected to the dock if using s2idle for sleep; PCI/USB devices are not detected after resume from sleep when using deep for sleep.
ThinkPad Thunderbolt 3 Dock DBB9003L1 USB-C Yes Dock Power button does not work properly to boot the laptop
Dell USB-C Dock WD19 USB-C Yes
OWC Thunderbolt 3 Dock OWCTB3DK14PSG USB-C Yes
uni 8-in-1 USB-C Hub 8IN101 USB-C Yes Short removable cable can be replaced; the Spigen USB 4 cable works.
CalDigit TS3 Plus Thunderbolt 3 Dock TS3 Plus USB-C Yes
StarTech.com USB-C Travel Docking Station DKT30CHPD USB-C Yes

External GPU

Name Model Number Interface Power Delivery? eGPU? Notes
AKITO Node Pro Thunderbolt 3 T3NP USB-C Yes No Errors with PCIe bus expansion for eGPU, 3.16.5 kernel, 3.07 firmware

See also

  • Framework website
  • Framework community thread for Arch Linux