This issue became more obvious due to alsa-ucm profiles horribly misassigning a non-existent device as the default microphone and juggling profiles for the devices in a very weird way recently. The first hotfix was this: https://github.com/NixOS/nixos-hardware/pull/1732 But upon more discussion it seems to be a Framework bios bug that falsely reports an AMD ACP as exitent and wired up via ACPI. Until this is fixed at the source, the best way foward is to just blacklist the module. I have tried this change now on 4 devices and and feel confident enough about it working well for most users. See this discussion for all the details: https://github.com/NixOS/nixos-hardware/issues/1603 |
||
|---|---|---|
| .. | ||
| 12-inch | ||
| 13-inch | ||
| 16-inch | ||
| desktop/amd-ai-max-300-series | ||
| bluetooth.nix | ||
| default.nix | ||
| framework-tool.nix | ||
| kmod.nix | ||
| OLD-BEHAVIOUR-DEPRECATION.md | ||
| README.md | ||
NOTE: Structure changes from 2023-11-11
Please read the Deprecated Behaviour README to understand how some structural changes to the code might affect you!
Framework Laptops
Updating Firmware
First put enable fwupd
services.fwupd.enable = true;
Note
For Intel CPU's, even stable BIOS versions are currently marked as test versions in LVFS (the default remote fwupd uses to get firmware).
If you want to use these versions, you'll have to explicitly enable the lvfs-testing remote:
services.fwupd.extraRemotes = [ "lvfs-testing" ]; # Might be necessary once to make the update succeed services.fwupd.uefiCapsuleSettings.DisableCapsuleUpdateOnDisk = true;
Caution
Before running the update, make sure you have a NixOS live ISO on a USB stick, because some firmware updates make your system unbootable.
Then run
$ fwupdmgr update
If you cannot boot into your system after upgrading:
- Boot into the live USB
- Mount your system into
/mnt - Run
sudo nixos-enter - Run
NIXOS_INSTALL_BOOTLOADER=1 /run/current-system/bin/switch-to-configuration boot
Common Modules
For the Framework 13 laptops, there are common configuration modules available under the 13-inch/common/ directory,
including some modules specific to AMD- or Intel-based laptops. By preference, there will already be a specialised
module for your model's configuration. Otherwise, it can be added alongside the existing modules.
OS integration
hardware.framework.enableKmod enables the community-created Framework kernel
module which exposes EC functionality like battery charge limit,
privacy switches, and system LEDs as standard driver interfaces. This enables, for example, configuring the charge limit
using the KDE settings GUI. The option is enabled by default when NixOS >= 24.05 and linux kernel version >= 6.10.
On AMD Framework 13 and 16, before kernel 6.10, additional kernel patches are required for the kernel module to function
properly. Manually setting hardware.framework.enableKmod = true will apply the patches, requiring a kernel
recompilation.
Support Tools
fw-ectool
There is a fw-ectool package available in nixpkgs that provides some system configuration options via the EC.
This ectool only works with the Intel-based Framework laptops at present, as the Framework EC for AMD-based mainboards
is based on the Zephyr port of the ChromeOS EC, which involves a slightly changed communication interface.