I found this with ai help. Is there a better way to not give up pci-express 4 for stability? Here’s a complete English guide based on the solution we found for the ASUS G614FR (ROG Strix) + openSUSE Tumbleweed + systemd-boot + NVIDIA issue.
Problem Description
- Laptop boots fine when plugged in, but hangs on login screen when running on battery.
- After a restart (not shutdown), the system also hangs on battery.
- You can still switch to a TTY shell with
Ctrl+Alt+F3.
Root Cause
- NVIDIA GPU power management conflicts with PCIe ASPM (Active State Power Management) when the system is on battery.
- The issue is worse on restart (warm reset) because the hardware isn’t fully power-cycled like on a cold boot.
Solution Summary
1. BIOS Setting (fixes cold boot on battery)
- Enter UEFI BIOS (press
F2during boot). - Go to Advanced → APM (Advanced Power Management).
- Enable ErP (or ErP Ready).
- Save and exit.
This forces a full power cycle on shutdown, which helps the GPU re-initialize correctly on battery.
2. Add Kernel Parameters (fixes restart on battery)
Since you’re using systemd-boot (not GRUB), you need to edit the .conf entry file directly.
a. Find your current boot entry:
sudo bootctl status
Look for the line: Current Entry: opensuse-tumbleweed-*.conf
b. Edit that file:
sudo nano /boot/efi/loader/entries/opensuse-tumbleweed-*.conf
c. Add these parameters to the options line:
nvidia.NVreg_EnablePCIeGen4=0 pcie_aspm=off reboot=pci
For example, change:
options root=UUID=... splash=silent ... rd.driver.blacklist=nouveau
to:
options root=UUID=... splash=silent ... rd.driver.blacklist=nouveau nvidia.NVreg_EnablePCIeGen4=0 pcie_aspm=off reboot=pci
d. Save and reboot:
sudo reboot
3. (Optional) If restart still hangs – add one more parameter:
acpi_rev_override=1
Add it to the same options line.
4. Automate for Future Kernel Updates
Every time you install a new kernel, systemd-boot creates a new .conf file without your custom parameters. To automate adding them, create a script:
sudo mkdir -p /etc/kernel/postinst.d/
sudo nano /etc/kernel/postinst.d/99-nvidia-params.sh
Paste this:
#!/bin/bash
CONF="/boot/efi/loader/entries/$(basename "$1" .vmlinuz).conf"
if [ -f "$CONF" ] && ! grep -q "nvidia.NVreg_EnablePCIeGen4" "$CONF"; then
sed -i "s/\(options.*\)/\1 nvidia.NVreg_EnablePCIeGen4=0 pcie_aspm=off reboot=pci/" "$CONF"
fi
Make it executable:
sudo chmod +x /etc/kernel/postinst.d/99-nvidia-params.sh
Now every new kernel will automatically get the needed parameters.
Final Verification
After reboot, check that parameters are active:
cat /proc/cmdline
You should see nvidia.NVreg_EnablePCIeGen4=0, pcie_aspm=off, and reboot=pci.
Then unplug the charger and test a restart:
sudo reboot
If the system boots normally without hanging – problem solved ![]()
Summary of Parameters Used
| Parameter | Purpose |
|---|---|
nvidia.NVreg_EnablePCIeGen4=0 |
Forces PCIe Gen3 mode (more stable on battery) |
pcie_aspm=off |
Disables PCIe Active State Power Management |
reboot=pci |
Forces a full PCIe reset during restart |
acpi_rev_override=1 |
(Optional) Fixes ACPI issues on some ASUS laptops |
Help Others
If you face the same issue on ASUS ROG laptops with NVIDIA + systemd-boot, this guide should work for most openSUSE and maybe Fedora users with similar hardware.