Revise README for AMD AI 300 Series modules

Updated README to reflect changes in module recommendations and added instructions for hybrid graphics setup.
This commit is contained in:
Dmitry 2025-12-29 20:58:36 +00:00 committed by Dmitry
parent 9b3c38bf6c
commit d31d8077bb
No known key found for this signature in database
GPG key ID: 247D768828EE18BE

View file

@ -1,8 +1,22 @@
# [Framework Laptop 16 AMD AI 300 Series](https://frame.work/) # [Framework Laptop 16 AMD Ryzen AI 300 Series](https://frame.work/)
## NVIDIA dGPU Module ## Recommended modules
If you have an NVIDIA dGPU module (GeForce RTX 5070 or similar), use the nvidia submodule: ### Base (no NVIDIA dGPU module)
Use the base module:
```nix
{
imports = [
nixos-hardware.nixosModules.framework-16-amd-ai-300-series
];
}
```
### NVIDIA dGPU module (RTX 5070 etc.)
If you have the Framework 16 NVIDIA dGPU module (GeForce RTX 5070 or similar), use the NVIDIA submodule:
```nix ```nix
{ {
@ -14,7 +28,9 @@ If you have an NVIDIA dGPU module (GeForce RTX 5070 or similar), use the nvidia
This enables hybrid graphics with PRIME offload: the AMD iGPU runs by default for better battery life, and the NVIDIA dGPU can be used on demand with `nvidia-offload <command>`. This enables hybrid graphics with PRIME offload: the AMD iGPU runs by default for better battery life, and the NVIDIA dGPU can be used on demand with `nvidia-offload <command>`.
**IMPORTANT:** You MUST override the PCI bus IDs for your specific system. The default values are examples only and will likely not match your hardware. Due to Framework 16's modular design, bus IDs vary depending on installed expansion cards and NVMe drives: #### IMPORTANT: You MUST override the PCI bus IDs for your specific system!
The default values are examples only and will likely not match your hardware. Due to Framework 16's modular design, bus IDs vary depending on installed expansion cards and NVMe drives:
```nix ```nix
{ {
@ -28,24 +44,65 @@ This enables hybrid graphics with PRIME offload: the AMD iGPU runs by default fo
Find your bus IDs with: Find your bus IDs with:
```sh ```sh
$ lspci | grep -E "VGA|3D|Display" $ nix shell nixpkgs#pciutils -c lspci | grep -E "VGA|3D|Display"
c2:00.0 VGA compatible controller: NVIDIA Corporation ... c2:00.0 VGA compatible controller: NVIDIA Corporation ...
c3:00.0 Display controller: Advanced Micro Devices ... c3:00.0 Display controller: Advanced Micro Devices ...
``` ```
Convert the hex bus ID to decimal (e.g., `c2:00.0``PCI:194:0:0`, `c3:00.0``PCI:195:0:0`). Convert the hex bus ID to decimal (e.g., `c2:00.0``PCI:194:0:0`, `c3:00.0``PCI:195:0:0`).
See also [NVIDIA](https://wiki.nixos.org/wiki/NVIDIA) on the NixOS Wiki. Helper:
## Updating Firmware ```sh
# Replace BDF with the lspci value like c2:00.0
BDF="c2:00.0"
BUS="${BDF%%:*}"; REST="${BDF#*:}"
DEV="${REST%%.*}"; FUN="${REST#*.}"
printf 'PCI:%d:%d:%d\n' "$((16#$BUS))" "$((16#$DEV))" "$FUN"
```
Everything is updateable through fwupd, so it's enabled by default. #### Validate hybrid / offload behavior
To get the latest firmware, run: ```sh
# Default should use AMD
nix shell nixpkgs#mesa-demos -c glxinfo -B | grep -E "OpenGL vendor|OpenGL renderer"
# Offload should use NVIDIA
nix shell nixpkgs#mesa-demos -c nvidia-offload glxinfo -B | grep -E "OpenGL vendor|OpenGL renderer"
```
To check whether the NVIDIA GPU is runtime-suspending at idle:
```sh
# Replace with your NVIDIA PCI address (from `nix shell nixpkgs#pciutils -c lspci -D`)
cat /sys/bus/pci/devices/0000:??:??.?/power/runtime_status
```
Note: running `nvidia-smi` can wake the GPU, so it is not a reliable “is it sleeping?” probe.
#### Optional: Battery-saver boot entry
If you want an easy “iGPU-only” boot entry (to maximize battery life and avoid loading NVIDIA at all), you can enable the PRIME battery saver specialisation:
```nix
{
hardware.nvidia.primeBatterySaverSpecialisation = true;
}
```
This creates an additional boot entry tagged `battery-saver`.
#### Troubleshooting notes
* If suspend/resume fails after heavy GPU/VRAM usage, see the NixOS NVIDIA wiki for power management / VRAM save notes: https://wiki.nixos.org/wiki/NVIDIA
## Firmware updates (fwupd)
Firmware is updatable via `fwupd` (enabled by default). To get the latest firmware:
```sh ```sh
$ fwupdmgr refresh $ fwupdmgr refresh
$ fwupdmgr update $ fwupdmgr update
``` ```
- [Latest Update](https://fwupd.org/lvfs/devices/work.frame.Laptop16.RyzenAI300.BIOS.firmware) * Latest BIOS update on LVFS: https://fwupd.org/lvfs/devices/work.frame.Laptop16.RyzenAI300.BIOS.firmware