Notes
Setup AI and gaming ubuntu laptop
Set up a AI and gaming ubuntu laptop

HP OMEN Ubuntu 26.04 AI + Gaming Build Book
Machine: HP OMEN MAX Gaming Laptop 16-ak0xxx
OS: Ubuntu 26.04.1 LTS (Resolute Raccoon)
Kernel observed: 7.0.0-31-generic
Purpose: Reproducible Linux workstation for CUDA/AI development,
local LLMs, image generation, containers, and Windows/Linux gaming.
This is a record of the known-good configuration built and validated on this machine. It deliberately distinguishes required setup from optional tuning. After a future reinstall, package/model versions may have advanced; prefer current compatible versions unless reproducing this exact environment.
1. Known-good hardware and architecture
- CPU/platform: AMD platform using
amd-pstate-epp - Integrated GPU: AMD Radeon 890M (Strix)
- Discrete GPU: NVIDIA GeForce RTX 5070 Ti Laptop GPU (Blackwell GB205M)
- NVIDIA compute capability: 12.0
- NVIDIA VRAM: ~12 GB nominal; applications see about 11.5 GiB
- RAM: 32 GB
- Storage: ~1 TB NVMe
- Secure Boot: enabled
- Graphics design: hybrid graphics
- AMD iGPU remains the normal desktop/battery GPU.
- NVIDIA dGPU is offloaded to for CUDA, AI, and games.
- Do not globally switch PRIME/MUX unless a specific problem requires it.
Displays
Internal AUO panel - Native: 1920x1200, 16:10 - Preferred/max
refresh: 165 Hz - Alternate native timing: 60 Hz - Adaptive Sync
advertised: 60-165 Hz, with an additional 48-60 Hz descriptor - Seamless
dynamic video timing: supported - Maximum luminance advertised: 400
cd/m² - Connected as card2-eDP-1 to the AMD GPU
External Samsung C24F390 - Native: 1920x1080 @ 60 Hz - EDID range:
50-72 Hz - Connected as card1-HDMI-A-1 on the NVIDIA GPU - 1080p60 is
the correct native HDMI mode; this is not a 120/144/165 Hz display.
2. Base operating-system checks
Update the system first:
sudo apt update
sudo apt full-upgrade
Check firmware:
fwupdmgr get-devices
fwupdmgr get-updates
Useful baseline commands:
uname -a
lsb_release -a
free -h
lsblk
lspci -nnk | grep -A3 -E 'VGA|3D|Display'
mokutil --sb-state
3. NVIDIA driver and hybrid graphics
The validated driver was the Ubuntu-recommended NVIDIA 595 open kernel
driver (nvidia-driver-595-open), version 595.84.
Check Ubuntu's recommendation:
ubuntu-drivers devices
Install the recommended open driver if needed:
sudo apt install nvidia-driver-595-open
sudo reboot
Validate:
nvidia-smi
Known-good observations: - NVIDIA driver: 595.84 - nvidia-smi CUDA
compatibility: 13.2 - Secure Boot works with the NVIDIA kernel driver.
PRIME OpenGL offload
Normal desktop rendering should remain on AMD:
glxinfo -B
Explicit NVIDIA offload:
__NV_PRIME_RENDER_OFFLOAD=1 \
__GLX_VENDOR_LIBRARY_NAME=nvidia \
glxinfo -B
The renderer should report NVIDIA / RTX 5070 Ti.
A simple live test:
__NV_PRIME_RENDER_OFFLOAD=1 \
__GLX_VENDOR_LIBRARY_NAME=nvidia \
glxgears
While it runs:
nvidia-smi
glxgears should appear as an NVIDIA process.
Vulkan
vulkaninfo --summary
The system can expose AMD, NVIDIA, and software (llvmpipe) devices.
Seeing the other devices is not itself a problem.
For games using Vulkan/Proton, the useful NVIDIA selection variable is:
__VK_LAYER_NV_optimus=NVIDIA_only
4. Development workstation packages
Install the core toolchain:
sudo apt install \
build-essential gcc g++ clang clangd cmake ninja-build \
gdb lldb valgrind git git-lfs pkg-config \
python3 python3-dev python3-venv \
curl wget rsync unzip zip jq tree htop nvtop tmux ripgrep
Initialize Git LFS:
git lfs install
Validated toolchain included: - GCC 15.2.0 - CMake 4.2.3 - System Python 3.14.4
Create working directories:
mkdir -p ~/Projects/{cpp,python,ai}
mkdir -p ~/AI/{models,datasets,outputs}
Python policy
Use project virtual environments. Do not use sudo pip.
Install/use uv as the Python environment/package workflow. The
validated installation used uv 0.12.10.
Example project:
mkdir -p ~/Projects/ai/example
cd ~/Projects/ai/example
uv venv
source .venv/bin/activate
5. CUDA Toolkit
The machine used NVIDIA's CUDA repository for Ubuntu 26.04 and CUDA Toolkit 13.3.
Important distinction:
nvidia-smireports the driver's maximum CUDA compatibility.nvcc --versionreports the installed host CUDA Toolkit.- PyTorch may bundle yet another CUDA runtime.
These versions do not need to be identical.
Use NVIDIA's CUDA repository/keyring for the current Ubuntu release
rather than Ubuntu's legacy nvidia-cuda-toolkit package.
After installing CUDA 13.3, ensure the toolkit binaries are on PATH,
for example:
export PATH=/usr/local/cuda-13.3/bin:$PATH
Persist as appropriate in the shell configuration.
Validate:
nvcc --version
Known-good result: CUDA 13.3, nvcc V13.3.73.
Avoid: - Ubuntu nvidia-cuda-toolkit for this setup - CUDA .run
installer - replacing the working Ubuntu NVIDIA driver unnecessarily
6. PyTorch GPU validation
Test project used:
~/Projects/ai/pytorch-test
Validated: - PyTorch 2.14.0+cu130 - NVIDIA RTX 5070 Ti detected -
~11.50 GiB VRAM visible - compute capability (12, 0) - large FP16
matrix multiplication succeeded.
Minimal validation:
import torch
print(torch.__version__)
print(torch.cuda.is_available())
print(torch.cuda.get_device_name(0))
print(torch.cuda.get_device_capability(0))
print(torch.cuda.get_device_properties(0).total_memory / 1024**3)
Remember that PyTorch's bundled CUDA runtime can differ from the host CUDA 13.3 toolkit.
7. Docker + NVIDIA Container Toolkit
Docker CE was installed from Docker's official Ubuntu repository, including Buildx and Compose.
Install/configure NVIDIA Container Toolkit using NVIDIA's repository, then configure Docker:
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
Validate Docker:
docker version
docker compose version
Validate GPU access with an NVIDIA CUDA container. The known-good test used:
nvidia/cuda:13.2.0-base-ubuntu24.04
For example:
docker run --rm --gpus all \
nvidia/cuda:13.2.0-base-ubuntu24.04 \
nvidia-smi
The RTX 5070 Ti should be visible inside the container.
Avoid: legacy nvidia-docker2 and Docker Desktop unless
specifically needed.
8. Ollama
Ollama 0.33.3 was validated.
Check service:
systemctl status ollama --no-pager
Check NVIDIA usage while running a model:
watch -n 1 nvidia-smi
A tested model used roughly 3.2 GB VRAM and achieved approximately 95-104 tokens/s.
Model-size expectations for ~12 GB VRAM: - 3-4B: effortless - 7-8B: excellent - 12-14B quantized: very good - ~20B: constrained - 30B+: likely significant offload - 70B: impractical for GPU-resident use
Ollama's observed model storage was under:
/usr/share/ollama/.ollama/models/
9. llama.cpp
Repository:
~/Projects/ai/llama.cpp
Useful dependency:
sudo apt install libssl-dev
Clone/build:
cd ~/Projects/ai
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
cmake -S . -B build -G Ninja \
-DGGML_CUDA=ON \
-DCMAKE_BUILD_TYPE=Release
cmake --build build -j
The build automatically selected:
CMAKE_CUDA_ARCHITECTURES=120a-real
This is appropriate for the Blackwell GPU. Do not force architecture 120 manually unless there is a demonstrated reason.
NCCL warnings can be ignored for a single-GPU workstation.
Check devices:
./build/bin/llama-cli --list-devices
Known-good Qwen3 14B command
./build/bin/llama-cli \
-hf Qwen/Qwen3-14B-GGUF:Q4_K_M \
-ngl 99 \
-fa on \
-ctk q8_0 \
-ctv q8_0 \
-c 8192
Local GGUF:
./build/bin/llama-cli \
-m ~/AI/models/llm/my-model.gguf \
-ngl 99 \
-fa on \
-ctk q8_0 \
-ctv q8_0 \
-c 8192
Add -cnv for interactive conversation mode.
Benchmarks observed
Qwen3 8B Q4_K_M: - prompt processing pp512: ~2957 tok/s - generation tg128: ~64.8 tok/s
Qwen3 14B Q4_K_M: - pp512: ~1604 tok/s - tg128: ~36.7 tok/s
14B with Q8 KV, 8192 context: - pp512: ~1158 tok/s - tg128: ~29.6 tok/s
14B with Q8 KV, 16384 context: - pp512: ~812 tok/s - tg128: ~24.7 tok/s - VRAM remained below 10 GB in the observed run.
10. Shared AI model layout
A useful central model hierarchy is:
mkdir -p ~/AI/models/{llm,checkpoints,diffusion_models,text_encoders,vae,loras,controlnet,upscale_models}
This prevents each application from maintaining unnecessary duplicate model trees.
11. ComfyUI
Repository:
~/Projects/ai/ComfyUI
The validated environment used: - Python 3.13.15 in a uv virtual
environment - PyTorch 2.14.0+cu130 - ComfyUI 0.34.0 - comfy-aimdo
0.5.2 - comfy-kitchen 0.2.33 - frontend 1.51.9 - templates 0.11.55
Start:
cd ~/Projects/ai/ComfyUI
source .venv/bin/activate
python main.py --enable-manager
Open:
http://127.0.0.1:8188
Known-good startup characteristics: - ~11774 MB VRAM - NORMAL_VRAM -
cudaMallocAsync - asynchronous weight offloading - pinned memory -
PyTorch attention - DynamicVRAM enabled - native NVFP4/FP8-related
comfy-kitchen operations available.
Warnings about Manager falling back to uv, missing matrix-nio,
optional OpenGL_accelerate, or torch JIT future behavior did not
prevent operation.
Shared model paths
Create extra_model_paths.yaml with:
shared_models:
base_path: /home/rmk/AI/models
checkpoints: checkpoints
diffusion_models: diffusion_models
text_encoders: text_encoders
vae: vae
loras: loras
controlnet: controlnet
upscale_models: upscale_models
Adjust /home/rmk if restoring under a different username.
12. SDXL validation
Model:
~/AI/models/checkpoints/sd_xl_base_1.0.safetensors
The built-in SDXL workflow succeeded at 1024x1024.
Observed: - generation ~13.42 s - peak VRAM ~7134 MB - no CUDA/Blackwell compatibility problem.
13. FLUX.1 Dev
Separate-file workflow used:
~/AI/models/diffusion_models/flux1-dev.safetensors
~/AI/models/text_encoders/clip_l.safetensors
~/AI/models/text_encoders/t5xxl_fp8_e4m3fn_scaled.safetensors
~/AI/models/vae/ae.safetensors
The full BF16 FLUX model is much larger than GPU VRAM, but ComfyUI DynamicVRAM/offloading allowed it to run.
Observed BF16 run: - ~22.7 GB staged model data - 20 sampling steps ~46 s - total ~57.16 s - VRAM reached 100% - generation succeeded.
The warning:
clip missing: ['text_projection.weight']
did not prevent generation in the tested workflow.
14. FLUX NVFP4
Repository/environment:
~/Projects/ai/comfy-quants
A separate Python 3.13 uv environment was used. PyTorch needed to be
installed into this environment:
uv pip install torch torchvision \
--extra-index-url https://download.pytorch.org/whl/cu130
Quantization command:
comfy-quants export-model-nvfp4 \
--config configs/flux_nvfp4.yaml \
--source ~/AI/models/diffusion_models/flux1-dev.safetensors \
--out ~/AI/models/diffusion_models/flux1-dev-nvfp4.safetensors \
--device cuda:0 \
--hash-output \
--json
Successful ComfyUI loading reported quantization metadata and mixed-precision operations.
Observed NVFP4 run: - Flux staged ~6476 MB - 20 steps ~16 s - ~1.21 it/s - total ~24.56 s - VRAM remained below the BF16 saturation behavior.
Compared with BF16, observed total latency fell by roughly 57%, with sampling approaching 3x faster.
Practical default: use flux1-dev-nvfp4.safetensors; retain BF16 as
a reference/fallback.
15. Gaming base
Install:
sudo apt install \
steam-installer steam-devices \
gamemode mangohud \
nvidia-prime
Ensure Vulkan libraries for both 64-bit and 32-bit gaming are installed as required by Steam/Proton.
If Steam reports pactl: not found:
sudo apt install pulseaudio-utils
32-bit NVIDIA userspace
The matching 32-bit NVIDIA GL libraries are important for older/32-bit paths.
Check i386 architecture:
dpkg --print-foreign-architectures
If necessary:
sudo dpkg --add-architecture i386
sudo apt update
Validated matching packages included:
libnvidia-gl-595:amd64 595.84-0ubuntu0.26.04.1
libnvidia-gl-595:i386 595.84-0ubuntu0.26.04.1
Install the i386 side if missing:
sudo apt install libnvidia-gl-595:i386
16. GameMode
Validate:
gamemoded -t
The functional tests passed, except for the legacy CPU-governor expectation.
This system uses:
amd-pstate-epp
with the powersave governor and platform power profiles. This is
normal. Do not force the old performance CPU governor globally
merely to make the GameMode test green.
During a game:
gamemoded -s
Expected:
gamemode is active
17. MangoHud
Test:
mangohud glxgears
The Ubuntu build may warn that NVML/NVCTRL NVIDIA telemetry is unavailable. This does not mean NVIDIA rendering failed.
Useful overlay metrics: - FPS - frametime graph - GPU utilization - temperature - power - VRAM - GPU clock - CPU utilization/temperature - RAM
Interpretation: - high GPU utilization + low FPS -> GPU-limited - low GPU utilization + saturated CPU thread(s) -> CPU-limited - clocks constrained near power ceiling -> potentially power-limited - VRAM saturation/stutter -> memory pressure
18. Steam native Linux games
Known-good launch options for native OpenGL games:
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia gamemoderun mangohud %command%
Portal 2 native was validated: - portal2_linux appeared in
nvidia-smi - ~816 MiB VRAM in the observed run - GameMode active -
NVIDIA PRIME offload confirmed.
19. Steam Windows games with Valve Proton
Known-good launch options:
__NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only gamemoderun mangohud %command%
Portal 2 Windows/Proton was validated: - portal2.exe appeared as an
NVIDIA C+G process - DXVK/Vulkan -> RTX 5070 Ti confirmed.
Keep Valve Proton as the default. Do not globally add random DXVK/VKD3D/Wine environment variables.
20. GE-Proton / ProtonUp-Qt
ProtonUp-Qt can be installed through Flatpak and used to install GE-Proton for Steam.
GE-Proton is best treated as a per-game compatibility alternative, not a universal replacement for Valve Proton.
Portal 2 Windows was also validated under GE-Proton, with portal2.exe
appearing on the RTX 5070 Ti.
21. Heroic Games Launcher
Heroic was installed via Flatpak for Epic/GOG/Amazon and standalone Windows-game workflows.
For Windows games, use Heroic's Wine/GE runner management rather than manually sharing Steam's Proton runner.
Useful per-game environment variables:
__NV_PRIME_RENDER_OFFLOAD=1
__VK_LAYER_NV_optimus=NVIDIA_only
For OpenGL paths also use:
__GLX_VENDOR_LIBRARY_NAME=nvidia
Enable GameMode and MangoHud per game where useful.
A lightweight Windows ScummVM game was validated through Heroic and appeared as an NVIDIA C+G process.
Standalone Windows installer
For a setup.exe: 1. Add a game in Heroic. 2. Select a current
Wine-GE/compatible runner. 3. Use Heroic's installer/run-installer
facility to execute setup.exe inside the game's prefix. 4. Complete
the Windows installer. 5. Change the game's executable to the installed
game's real .exe. 6. Add the NVIDIA PRIME/Vulkan environment variables
above. 7. Enable GameMode/MangoHud if desired.
Do not add Lutris merely for completeness; install another launcher only when a game actually needs it.
22. Power and performance configuration
Available profiles:
powerprofilesctl list
Validated:
low-power
balanced
performance
The ACPI platform profile exposes the same high-level choices:
cat /sys/firmware/acpi/platform_profile
cat /sys/firmware/acpi/platform_profile_choices
Known-good gaming setting while plugged in:
powerprofilesctl set performance
Normal everyday setting:
powerprofilesctl set balanced
Check:
powerprofilesctl get
NVIDIA laptop power behavior
Observed:
Default Power Limit: 80 W
Current Power Limit: 80 W (in detailed nvidia-smi output)
Maximum reported limit: 140 W
nvidia-powerd was active:
systemctl status nvidia-powerd --no-pager
The log contained:
Client (presumably SBIOS) has requested to disable Dynamic Boost DC controller
Interpret the 140 W value only as a reported upper programmable boundary, not as proof that this laptop should run at 140 W.
Do not: - force nvidia-smi -pl 140 - globally enable persistence
mode - force an old CPU governor - disable the iGPU merely for benchmark
numbers - override OEM power limits without verified model-specific
support.
The stable known-good setup is preferable to speculative laptop power tuning.
23. Display diagnostics
List DRM connectors:
ls -l /sys/class/drm/
Show connection state:
for f in /sys/class/drm/card*-*/status; do
echo "$f: $(cat "$f")"
done
Install EDID decoder:
sudo apt install edid-decode
Decode a connector:
edid-decode /sys/class/drm/card2-eDP-1/edid
External HDMI:
edid-decode /sys/class/drm/card1-HDMI-A-1/edid
Kernel-advertised modes:
cat /sys/class/drm/card2-eDP-1/modes
cat /sys/class/drm/card1-HDMI-A-1/modes
Internal panel gaming strategy
The internal panel is the preferred gaming display when high refresh matters: - 1920x1200 - 165 Hz - Adaptive Sync - use VRR when correctly exposed/enabled by GNOME - for a 165 Hz VRR setup, an FPS cap slightly below the ceiling (for example ~160-162 FPS) can be useful.
External Samsung strategy
The C24F390 is native 1080p60. For it: - target a stable 60 FPS - prioritize image quality over rendering unused 100+ FPS - DLSS Quality is generally preferable to aggressive upscaling at 1080p - frame generation is usually unnecessary when native/base performance already holds 60 FPS.
24. Graphics-quality starting points
For modern single-player games on the RTX 5070 Ti Laptop:
- Textures: High/Ultra while VRAM permits
- Geometry/detail: High/Ultra
- Anisotropic filtering: 16x
- Shadows: High as a starting point
- Ray tracing: Medium/High, tune per game
- DLSS at 1080p/1200p: start with Quality
- DLSS Balanced: use when heavier RT needs more performance
- DLSS Performance: generally reserve for heavier workloads/higher resolutions
- Frame Generation: most useful when the base frame rate is already healthy; less desirable as a substitute for a very low base frame rate.
Always tune based on frametime and actual GPU/VRAM behavior rather than presets alone.
25. Post-update health check
After major Ubuntu kernel, NVIDIA-driver, CUDA, or graphics-stack updates, rerun these checks:
uname -r
nvidia-smi
nvcc --version
powerprofilesctl get
systemctl status nvidia-powerd --no-pager
vulkaninfo --summary
OpenGL PRIME:
__NV_PRIME_RENDER_OFFLOAD=1 \
__GLX_VENDOR_LIBRARY_NAME=nvidia \
glxinfo -B
GPU process test:
__NV_PRIME_RENDER_OFFLOAD=1 \
__GLX_VENDOR_LIBRARY_NAME=nvidia \
glxgears
Then in another terminal:
nvidia-smi
Docker GPU:
docker run --rm --gpus all \
nvidia/cuda:13.2.0-base-ubuntu24.04 \
nvidia-smi
GameMode:
gamemoded -t
AI: - run a small PyTorch CUDA test - run llama-cli --list-devices -
run one known ComfyUI SDXL/NVFP4 workflow.
This catches regressions much faster than discovering them during real work.
26. Recommended clean-reinstall order
Use this order after a future clean Ubuntu installation:
1. Ubuntu 26.04 LTS
2. System updates + firmware
3. NVIDIA recommended open driver
4. Reboot and validate hybrid graphics
5. Development packages + Git LFS
6. Directory hierarchy
7. uv + Python project environments
8. NVIDIA CUDA repository + CUDA Toolkit
9. PyTorch CUDA validation
10. Docker CE
11. NVIDIA Container Toolkit + GPU-container validation
12. Ollama
13. llama.cpp CUDA build + benchmark
14. Shared AI model hierarchy
15. ComfyUI + shared model configuration
16. SDXL validation
17. FLUX BF16 validation
18. comfy-quants + FLUX NVFP4
19. Steam + GameMode + MangoHud
20. Matching NVIDIA i386 userspace libraries
21. Valve Proton validation
22. ProtonUp-Qt / GE-Proton if needed
23. Heroic
24. Native/Proton/Heroic NVIDIA offload tests
25. Display EDID / refresh / VRR checks
26. Set balanced/performance power policy
27. Final health-check suite
Do not copy old virtual environments across a clean OS install. Recreate them from dependency definitions or known commands. Large model files can be restored separately.
27. Known-good design decisions
These choices are intentional:
Area Decision
Desktop GPU AMD Radeon 890M
AI/gaming GPU RTX 5070 Ti via offload
Secure Boot Keep enabled
NVIDIA driver Ubuntu open-kernel recommended driver
CPU power amd-pstate-epp + platform profiles
Gaming power powerprofilesctl set performance while plugged in
Everyday power balanced
NVIDIA laptop TGP Leave OEM/firmware control intact
Python uv + per-project venvs
System pip Never sudo pip
CUDA NVIDIA repository/toolkit
Containers Docker CE + NVIDIA Container Toolkit
Local LLM Ollama and native CUDA llama.cpp
Image generation ComfyUI
FLUX default NVFP4; BF16 retained as fallback/reference
Steam compatibility Valve Proton default
Difficult Steam games GE-Proton per game
Epic/GOG/etc. Heroic
Additional launchers Only when a real game requires one
28. Quick command card
Gaming on NVIDIA
Native OpenGL:
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia gamemoderun mangohud %command%
Proton/Vulkan:
__NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only gamemoderun mangohud %command%
Power
powerprofilesctl set performance # plugged-in gaming/heavy work
powerprofilesctl set balanced # normal use
GPU
watch -n 1 nvidia-smi
CUDA
nvcc --version
ComfyUI
cd ~/Projects/ai/ComfyUI
source .venv/bin/activate
python main.py --enable-manager
llama.cpp
cd ~/Projects/ai/llama.cpp
./build/bin/llama-cli \
-hf Qwen/Qwen3-14B-GGUF:Q4_K_M \
-ngl 99 -fa on -ctk q8_0 -ctv q8_0 -c 8192
29. Final known-good state
At the end of this build:
- Ubuntu is stable under Wayland.
- Secure Boot remains enabled.
- AMD drives the normal desktop/internal-panel path.
- NVIDIA PRIME offload works.
- CUDA workloads run on the RTX 5070 Ti.
- PyTorch Blackwell CUDA computation is validated.
- Docker GPU passthrough works.
- Ollama GPU acceleration works.
- llama.cpp builds natively for Blackwell and performs well.
- ComfyUI runs SDXL and FLUX.
- FLUX NVFP4 provides a major performance/memory improvement over the tested BF16 path.
- Steam native Linux games use the RTX through PRIME.
- Valve Proton games use the RTX.
- GE-Proton games use the RTX.
- Heroic Windows games use the RTX.
- GameMode works.
- MangoHud works, with a known Ubuntu packaging limitation around some NVIDIA telemetry.
- The internal panel is 1920x1200 @ 165 Hz with Adaptive Sync capability.
- The external Samsung C24F390 correctly operates at native 1920x1080 @ 60 Hz.
- HP's standard Linux platform profile is already settable to
performance. - NVIDIA laptop power remains under OEM/firmware control rather than unsafe manual overrides.
Principle: preserve the known-good hybrid architecture and change one component at a time. Validate after every driver, kernel, CUDA, or gaming-stack change.