Framework Laptop 13
Hardware | PCI/USB ID | Working? |
---|---|---|
GPU | Yes | |
Wireless | Yes | |
Audio (Intel) | 8086:a0c8 |
Yes |
Audio (AMD) | 1002:1640 |
Yes |
Touchpad | 093a:0274 |
Yes |
Webcam | 0bda:5634 |
Yes |
Fingerprint reader | 27c6:609c |
Yes |
Bluetooth | Yes | |
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 components.
WiFi/Bluetooth
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) |
AX411 vPro | 8086:51f0 |
8087:0033 |
Yes | Yes | Not sold by Framework, but works |
BE200 | 8086:272b |
8087:0036 |
Yes | Yes | Not sold by Framework, but works |
RZ608 / MediaTek MT7921K | --- | 0e8d:e608 |
Yes | Yes | Not sold by Framework, known to work |
RZ616 / MediaTek MT7922 | 14c3:0616 |
0e8d:e616 |
Yes | Yes | AMD edition |
WiFi performance on AMD edition
You will be limited to 802.11n (WiFi 4) and 2.4GHz bands if you do not configure the regulatory domain.
There have been reports of WiFi stability and throughput improvements when using iwd, either directly or as the NetworkManager backend.
WiFi stability can be improved by disabling power saving mode as described in Network_configuration/Wireless#mt7921.
Graphics
Intel / i915
Device Name | PCI ID | Working? |
---|---|---|
TigerLake-LP GT2 [Iris Xe Graphics] | 8086:9a49 |
Yes |
Alder Lake-P GT2 [Iris Xe Graphics] | 8086:46a6 |
Yes |
AMD / amdgpu
Device Name | PCI ID | Working? | Notes |
---|---|---|---|
Advanced Micro Devices, Inc. [AMD/ATI] Phoenix1 | 1002:15bf |
Yes | Needs BIOS 3.03 or newer |
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 | |
Ethernet | 0bda:8156 |
Yes |
Headset jack
On Intel and AMD motherboards, when powersave activates and deactivates on the sound card, there is a small noisy popping sound or a buzzing sound.
The number of seconds after which, if there is no sound activity, the kernel puts the audio module into powersaving, therefore producing the pop or buzz noise, is stored in /sys/module/snd_hda_intel/parameters/power_save
.
You can deactivate powersave for the sound card entirely by passing power_save=0
as a module option to snd_hda_intel
, as described here.
If you are using TLP, you can instead set the SOUND_POWER_SAVE_
variables in /etc/tlp.conf
.
Speakers
By default, the speakers do not sound very balanced (due to downward firing speakers), so you may want to use an equalizer to fix this. The recommended method is to install EasyEffects and use the official preset found here.
Alternatively, you can use user-created profiles such as this one created by cab404.
Display
The Framework Laptop 13 can be configured with 2 different displays: a 2256x1504 TFT-LCD display [1] or a 2880x1920 display with rounded corners, both manufactured by BOE. They are uncalibrated from factory, giving a suboptimal default sRGB coverage. It is thus recommended to apply an ICC profile to have better color reproduction. [2]
- Intel Framework 13 ICC color profile: https://www.notebookcheck.net/uploads/tx_nbc2/BOE_CQ_______NE135FBM_N41_01.icm
- AMD Framework 13 ICC color profile: https://www.notebookcheck.net/uploads/tx_nbc2/BOE_CQ_______NE135FBM_N41_03.icm
- Intel Core Ultra Framework 13 ICC color profile for the 2.8k display: https://www.notebookcheck.net/uploads/tx_nbc2/BOE0CB4.icm
HDMI Audio Output
On Intel 11thGen there is a problem where an HDMI TV or HDMI VideoProjector is recognized as an Audio Output Device but no sound is heard when playing music. The HDMI TV output sound correctly using a fresh installed Windows operating system. For correcting this issue you have to first install the sof-firmware package, then you have to pass dsp_driver=3
as a module option to snd_intel_dspcfg
so it uses the SOF version instead of the legacy one.
Firmware
BIOS Updates
Updates are generally available as UEFI Shell updates from Framework directly. LVFS support is in testing.
Generation | Stable | Beta | LVFS | Notes |
---|---|---|---|---|
Intel 11th Gen | 3.20 | 3.17 | There will be no LVFS release for 3.20 because it has an Intel CSME update. An UEFI Shell update method is available. | |
Intel 12th Gen | 3.08 | Later batches come with 3.05 "to resolve an in-factory specific issue"[3].
Warning: After updating your BIOS to version 3.06 or 3.08, you cannot downgrade to version 3.04 or 3.05 as it will result in the left side ports to stop functioning properly.
|
||
Intel 13th Gen | 3.05 | Windows updater and EFI Shell packages for 3.05 available. Announcement here: [4] | ||
Intel Core Ultra 1 | 3.04 | 3.04 | Announcement here: [5] | |
AMD Ryzen 7040 | 3.05 | 3.06 | 3.05 | If you have a batch 1 or 2 device (of the first original Framework AMD release), make sure you upgrade to at least 3.03 first. It comes preinstalled on batch 3 and later. Newer AMD releases with the new 2.8k display batches should already contain latest BIOS firmware (Framework started counting again from batch 1). |
The BIOS can be updated by EFI shell script placed on a bootable USB flash drive. 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. If your bootloader installs itself as the EFI fallback at esp/EFI/BOOT/BOOTX64.EFI
(systemd-boot will by default, GRUB will with GRUB#Default/fallback boot path), no recovery disk is necessary, but your bootloader may need to be reinstalled to restore its NVRAM entry.
To check which bios is currently installed without rebooting into the bios itself is possible with:
# dmidecode -s bios-version
LVFS
Support for fwupd is in testing [6], and can be enabled by running:
$ fwupdmgr enable-remote lvfs-testing
- For AMD 7040 series laptops you should not enable testing remotes if you want to use only released BIOS updates and not those in beta testing [7][8].
- 11th Gen Intel Mainboards with BIOS versions earlier than 3.17 only have in-memory capsule update support, not on-disk. To upgrade to newer versions with the support, add the following fwupd configuration changes, update to 3.17 or higher, and then revert the change after the BIOS is updated:
/etc/fwupd/fwupd.conf
[uefi_capsule] DisableCapsuleUpdateOnDisk=true
Fingerprint Reader
Framework has published a guide for Intel 13th Gen and AMD to upgrade the firmware to a known working version.
Secure Boot
One can enroll custom keys into the Framework Laptop without any Option ROM concerns, or use the SHIM approach. See Secure Boot for details.
Suspend
On Intel boards, adding the kernel parameter acpi_osi="!Windows 2020"
fixes a regression in s2idle, making the keyboard backlight and power button correctly turn off when suspending, as well as decreasing battery drain in suspend to about 1%/hour[9].
If your system fails to wake up from suspend due to the SSD disconnecting, you can try putting nvme.noacpi=1
in your kernel parameters. This may also improve battery life in suspend, if your SSD has a bad ACPI implementation. This should only be used on Intel boards, as on AMD it will cause the issue, instead of fixing it.
See Power management/Suspend and hibernate#Changing suspend method if you want to use S3 sleep instead of s2idle.
Fn key after suspend
Some users on 11th-generation Intel boards report that after resuming from suspend, the Fn key and/or media keys no longer work. The workaround is to blacklist the cros_ec_lpcs
module:
/etc/modprobe.d/cros_ec_lpcs.conf
blacklist cros_ec_lpcs
Suspend-then-hibernate on AMD version
For AMD versions running kernel versions less than 6.7, systemd's suspend-then-hibernate will wake up after exactly 5 minutes (regular suspend works). Until the kernel patch [12] is merged, add the kernel parameter rtc_cmos.use_acpi_alarm=1
to use the proper wakeup mechanism.
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[13].
Interact with system
You can interact with your system using framework-system-gitAUR.
Note: On AMD boards, /dev/cros_ec
won't be available for framework_tool
to use without the following unmerged patchset (as of 6.6.4). If secure boot is not enabled, the tool can bypass the kernel and talk directly to the EC with the --driver portio
option. With secure boot, the only way to use it will be by patching the kernel or waiting until those patches are merged (see this issue for details).
On 11th and 12th Gen Intel boards, you can also interact with the embedded controller using fw-ectool-gitAUR.
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
|
- The key is visible to
xev
and similar tools. - The physical key has a symbol on it, which describes its function.
Ambient light sensor
hid_sensor_hub
module.Should work out of the box, you can check by reading /sys/bus/iio/devices/iio\:device0/in_illuminance_raw
.
On GNOME, you need to install iio-sensor-proxy and restart the session (or reboot, just in case). Then run monitor-sensor
to check if it is working.
If you do not use GNOME but still want automatic brightness control, check out illuminanced-gitAUR.
Fan speed control
You can force the fan speed to any value between 0 and 100 using this tool: https://gitlab.howett.net/DHowett/ectool (fw-ectool-gitAUR)
$ ectool --interface=lpc fanduty 1OO
to return to automatic mode use this command:
$ ectool --interface=lpc autofanctrl
In the meantime: https://lore.kernel.org/chrome-platform/20231005160701.19987-1-dustin@howett.net/ for direct support of the EC chromium driver.
Battery control
Framework laptops have an embedded controller responsible for controlling a variety of functions (fans, battery, LEDs...). Settings for this EC can be changed with fw-ectool-gitAUR until patches are merged into the mainline kernel. Some of the exposed settings related to battery health care are:
# ectool chargecontrol idle
# ectool chargecontrol normal <lower> <upper>
chargecontrol can be set to discharge, idle, and normal. Discharge makes the system use the energy from the battery, disabling the charger; normal allows setting lower and upper limits (the battery stays in discharge mode while the battery level is between the upper and lower limits, and starts charging when the level is below the lower limit); and idle allows the system to get all the energy from the charger, essentially leaving the battery unused and avoiding any wear. This is very useful for using the laptop as an always-plugged-in device. Setting lower = upper values automatically sets idle mode after reaching the target value, while using idle keeps the battery in idle mode at the current charge level.
You can check how much current is being withdrawn from or charged into the battery with:
# cat /sys/class/power_supply/BAT0/current_now
Or under Present current in:
# ectool battery
Using:
# ectool fwchargelimit <level>
seems to do the same as setting the charge limit through BIOS, which tries to maintain the battery level at the set level but is constantly charging and discharging it (no idle mode is used in this mode).
Finally, we can set a limit to the max current allowed for charging, thus enabling slow charging, with:
# sudo ectool chargecurrentlimit <mA>
Parameters set via ectool remains active until the laptop is powered off and unplugged for a few (10~) seconds, after which values go back to default.
Troubleshooting
Stuttering, flickering and periodic freeze
There are reports of stuttering, flickering and periodic freezes on the laptop. Disabling Panel Self-Refresh (as explained in Intel graphics#Screen flickering) has been reported to work. However it is helpful for battery life, so it should be left on if there are no issues.
This can also happen if you have installed xf86-video-intel instead of using modesetting, see the note at Intel graphics#Installation.
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).
HiDPI settings
- For the 2256x1504 display using scaling factor 1,5 is suggested.
- For the 2880x1920 (2.8K) display using scaling factor 2 is suggested.
For more details, see HiDPI.
Lowering fan noise
This applies to the Intel version only. AMD users should use power-profiles-daemon.
The handling of fans can be significantly improved by using the thermald service. Install the package and then you can Start and Enable the service via the thermald.service
unit file.
Changing the brightness of the monitor does not work
See Backlight#xbacklight returns : No outputs have backlight property.
For Alder Lake CPUs a solution for using the backlight keys instead of the light sensor is to deactivate the ambient light sensor.
/etc/modprobe.d/framework-als-deactivate.conf
blacklist hid_sensor_hub
Reboot is required, the light sensor module will be deactivated and the backlight keys work.
Bootmanager flashing black screen and not loading operating system
If your Framework laptop loads the bootloader and can recognize the EFI system 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.
- Reboot holding
F2
. There is a bug in some versions of the BIOS that prevents theF2
key on the builtin laptop keyboard from being recognized during reboot or power up. The workaround is to connect an external USB keyboard to the laptop an hold theF2
key on the external keyboard while rebooting or powering up the laptop. After the laptop has entered the BIOS settings the builtin keyboard can be used and the external one can be disconnected. - Go to the Security Tab
- Secure boot defaults to ON; disable it
- 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.[14]
This issue has been observed by owners of other manufacturers' laptops (not just framework). [15]
Disabling IEEE 802.11ax seems to be a suitable workaround for the time being. [16]
/etc/modprobe.d/iwlwifi.conf
options iwlwifi disable_11ax=Y
Intel is aware[17] of the issue and there is a patch[18] that fix slow tx after restart, and another[19] 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.
Low framerate or stuttering webcam
This issue can occur if the program displaying the webcam feed is using the YUYV 4:2:2 color format. Most GUI camera applications do not allow for configuring this. Some applications that will let you configure this include guvcview and obs-studio, and they also appear to work with the default configuration.
You can also open the webcam using vlc with:
$ vlc v4l2:///dev/video1 --v4l2-chroma MJPG
or mpv with:
$ mpv --cache=no --demuxer-lavf-format=video4linux2 --demuxer-lavf-o=video_size=1920x1080,input_format=mjpeg av://v4l2:/dev/video0
12th gen Turbo-Boost on battery with tlp
By default the 12th gen will not Turbo-Boost on battery if tlp is installed. This can configured in tlp's configuration.
/etc/tlp.conf
CPU_ENERGY_PERF_POLICY_ON_AC=balance_performance CPU_ENERGY_PERF_POLICY_ON_BAT=balance_performance
12th & 13th gen brightness and airplane mode keys
On the 12th and 13th gen motherboards there is a bug[dead link 2023-10-29 ⓘ] where ALS and the brightness up/down including the airplane mode keys conflict. In order to make the brightness and airplane mode keys work in the detriment of using the ambient light sensor, blacklist the hid_sensor_hub
module.
Ethernet not working with tlp
By default tlp will power limit the framework ethernet adapter. This can be changed in tlp's configuration where 0bda:8156
is the ID of the framework ethernet adapter.
/etc/tlp.conf
USB_DENYLIST="0bda:8156"
(AMD) TLP is not advised for power management. PPD is recommended
Framework Laptop 13 AMD Ryzen 7040 Series configurations are advised to use power-profiles-daemon (PPD) instead of TLP, which is actively discouraged for this processor. For further discussion see this Framework community thread.
(AMD) Washed-out colors when using power-profiles-daemon in power-saver or balanced mode
PPD (from Linux 6.9 and PPD 0.20) makes use of ABM (Ambient Backlight Manager), which impacts display color realism in order to save energy when the device is not charging. For more information on configuring it check this Framework community thread.
To simply prevent PPD from adjusting this setting create a drop-in file for its systemd-unit with systemctl edit power-profiles-daemon.service --drop-in=disable_panel_powersavings
and add the following lines to it:
[Service] ExecStart= ExecStart=/usr/lib/power-profiles-daemon --block-action=amdgpu_panel_power
performance
mode first.(AMD) Flickering, artifacts and a white screen when a second monitor is connected
Note: This issue should be resolved with the latest BIOS update
When a second monitor is connected (possibly only with higher resolutions or refresh rates, and possibly only in Wayland), an issue can be triggered where graphical artifacts or a white image will appear, sometimes showing the original content in a flicker as screen content changes. This can be resolved by adding amdgpu.sg_display=0
as a kernel parameter.
(AMD) GPU Lockup during graphical load (system still accessible through ssh)
Note: This issue should be resolved with the latest BIOS update and linux-firmware package.
A number of measures seemed to reduce the chances of this happening, and complete system stability was achieved by combining them. It's possible some or all of these won't be necessary as the kernel and firmware are updated.
- Replacing the linux-firmware package with linux-firmware-gitAUR (make sure to check linux-firmware-gitAUR is newer than linux-firmware before doing this)
- In the BIOS, set the
iGPU Configuration
toUMA_GAME_OPTIMIZED
- Setting
/sys/class/drm/card0/device/power_dpm_force_performance_level
tohigh
orlow
instead ofauto
(in tlp this can be achieved withRADEON_DPM_PERF_LEVEL_ON_AC=high
andRADEON_DPM_PERF_LEVEL_ON_BAT=low
)
Since the use of TLP with an AMD CPU is not advised, setting the performance level depending on the presence of a power supply can be archived with a simple udev rule and a small script:
/etc/udev/rules.d/60-power-dpm-force-performance-level.rules
SUBSYSTEM=="power_supply" RUN+="/usr/local/bin/set_dpm_perf_level.sh %E{POWER_SUPPLY_ONLINE}"
/usr/local/bin/set_dpm_perf_level.sh
#!/bin/bash #default level DRM_PERF_LEVEL=low #evaluate argument passed by udev if [ $1 -eq 1 ] ; then DRM_PERF_LEVEL=high else DRM_PERF_LEVEL=low fi #set drm performance level echo $DRM_PERF_LEVEL > /sys/class/drm/card1/device/power_dpm_force_performance_level
(AMD) Flickering graphical corruption on a single monitor
Providing additional memory to the iGPU appears to fix this problem, as advised by Framework Support in this Community thread. Follow this guide from Framework to enable allocating more iGPU RAM from the BIOS.
(AMD) Unable to reconnect to wifi after hibernation with kernel 6.7
A bug was introduced in kernel version 6.7 that causes the Wifi connection to not be recoverable after hibernation. A fix has already been proposed and should make it to version 6.8. Aside from patching the kernel or using the lts version one workaround is to use modprobe
to remove and re-add the mt7921e
module as described in this community thread.
Additional Hardware
Docking Stations
Check the USB-C/Thunderbolt Dock Megathread on the Framework community boards for up to date information on functioning docks.
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 |
Sonnet | eGPU 550 |
USB-C | Yes | Yes | Tested in kernel 5.15 and above |
Razer | Core |
USB-C | Yes | Yes | Tested in kernel 5.15 and above |
Mantiz MZ-03 Saturn Pro eGPU V2 | MZ-03-EU-SG |
USB-C | Yes | Yes | EU-edition, Potentially needs intel_iommu=on,Tested in kernel 5.15 and above 3.06 Firmware 3.10 and 12th gen framework |
TREBLEET Mini eGPU Enclosure | JHL7440 |
USB-C | Yes | Yes | Tested in kernel 6.8.7 and above.
Times out decrypting LUKS partition when cold booting, works when hot-plugged. Crashes WM when unplugged, kicks to DM login |
ADT-Link UT3G | ASMedia ASM2464PDX |
USB-C | No | Yes | Tested in kernel 6.6.52-1-lts and above.
The eGPU works when plugged and does not crash the system when unplugged. Bandwidth seems to be limited to PCIe 4 x1 in both Arch and Windows on 12th gen. |