Linux Gigabyte B550 Sleep Fix - ryzendew/Linux-Tips-and-Tricks GitHub Wiki

Linux Gigabyte B550 Sleep Issue Fix Guide

Complete beginner-friendly guide to fixing the immediate wake-up sleep issue on Gigabyte B550 motherboards (and similar Gigabyte motherboards) on Linux, including detailed step-by-step instructions, explanations of every command, expected outputs, and troubleshooting.


Table of Contents

  1. Understanding the Problem
  2. Diagnosing the Issue
  3. Testing the Fix Temporarily
  4. Making the Fix Permanent
  5. Verifying the Fix
  6. Troubleshooting

Understanding the Problem

What is the Sleep Issue?

The problem: Your computer goes to sleep, but immediately wakes back up on its own without you pressing any buttons.

What should happen:

  • You put the computer to sleep
  • Computer enters sleep mode (screen turns off, fans stop)
  • Computer stays asleep
  • You press power button or move mouse to wake it up

What actually happens:

  • You put the computer to sleep
  • Computer enters sleep mode
  • Computer immediately wakes back up (within seconds)
  • This repeats every time you try to sleep

This is extremely frustrating! You can't leave your computer sleeping, and it wastes power.

Why Does This Happen?

The root cause: A specific chipset component called GPP0 (a PCIe bridge) is incorrectly enabled as a wakeup source.

What is GPP0?

  • GPP0 is a PCIe (Peripheral Component Interconnect Express) bridge
  • It's part of your motherboard's chipset
  • It's used for connecting devices to your motherboard
  • On Gigabyte B550 motherboards, it's incorrectly configured to wake the system

Why is it a problem?

  • GPP0 is enabled as a wakeup source in the firmware (BIOS/UEFI)
  • Linux respects this setting
  • GPP0 sends a "wake" signal immediately after sleep
  • This causes the system to wake up right away

Why doesn't this happen on Windows?

  • Windows may handle ACPI (Advanced Configuration and Power Interface) differently
  • Windows drivers may ignore this wakeup source
  • Linux is more strict about following ACPI settings

Is this a Linux bug?

  • No, this is a firmware (BIOS/UEFI) issue
  • The motherboard firmware incorrectly enables GPP0 as a wakeup source
  • Linux is correctly following the firmware's instructions
  • The fix is to disable GPP0 as a wakeup source

Which Motherboards Are Affected?

This issue affects:

  • Gigabyte B550 motherboards (most common)
  • Other Gigabyte motherboards (X570, B450, etc. - less common)
  • Some other manufacturers (rare)

How to check if you have a Gigabyte B550:

sudo dmidecode -t baseboard | grep -E "Manufacturer|Product"

What you might see:

Manufacturer: Gigabyte Technology Co., Ltd.
Product Name: B550 AORUS PRO AC

If you see "Gigabyte" and "B550" (or similar), this guide likely applies to you.

Note: Even if you don't have a Gigabyte B550, the same fix might work for other motherboards with similar issues. The diagnostic steps will help you identify if GPP0 (or another device) is causing the problem.


Diagnosing the Issue

Step 1: Open a Terminal

First, you need to open a terminal (command line).

How to open terminal:

  • Keyboard shortcut: Press Ctrl + Alt + T (works on most Linux systems)
  • Or: Click Applications menu → Search for "Terminal" → Click it
  • Or: Right-click desktop → "Open Terminal Here"

What you'll see:

  • A window with text
  • A prompt that looks like: username@computername:~$
  • This is where you type commands

Don't worry if this looks scary! We'll explain every command step-by-step.

Step 2: Check ACPI Wakeup Sources

ACPI (Advanced Configuration and Power Interface) manages power states. Let's see what devices can wake your computer:

cat /proc/acpi/wakeup

What this command does:

  • cat: Display file contents
  • /proc/acpi/wakeup: File containing ACPI wakeup source information
  • This shows all devices that can wake your computer from sleep

What you'll see:

Example output (problematic system):

Device	S-state	  Status   Sysfs node
GPP0	  S4	*enabled   pci:0000:00:01.1
GPP1	  S4	*enabled   pci:0000:00:01.2
GPP2	  S4	*disabled
GPP3	  S4	*disabled
USB0	  S3	*enabled   pci:0000:00:14.0
USB1	  S3	*enabled   pci:0000:00:14.1
EHC1	  S3	*enabled   pci:0000:00:1d.0
EHC2	  S3	*enabled   pci:0000:00:1a.0
XHC	  S3	*enabled   pci:0000:00:14.0
PWRB	  S4	*enabled   platform:PNP0C0C:00

What each column means:

  • Device: Name of the device/component
  • S-state: Sleep state (S3 = suspend to RAM, S4 = hibernate)
  • Status: *enabled = can wake system, *disabled = cannot wake system
  • Sysfs node: System path to the device

What to look for:

  • Find the line starting with GPP0
  • Check if it shows *enabled

If GPP0 is enabled:

GPP0	  S4	*enabled   pci:0000:00:01.1

This is likely the problem!

If GPP0 is disabled:

GPP0	  S4	*disabled

GPP0 is not the problem. You may have a different issue. See troubleshooting section.

If you don't see GPP0 at all:

  • Your system might use different naming
  • Try looking for other PCIe bridges
  • See troubleshooting section

Step 3: Understand the Output

Let's break down what you're seeing:

Common devices you might see:

  1. GPP0, GPP1, GPP2, etc.
  • PCIe bridges
  • GPP0 is often the culprit on Gigabyte B550
  1. USB0, USB1, EHC1, EHC2, XHC
  • USB controllers
  • These are usually fine to have enabled (you want USB to wake the system)
  1. PWRB
  • Power button
  • Should be enabled (you want power button to wake the system)
  1. Other devices
  • Various hardware components
  • Most are fine to have enabled

The problem:

  • GPP0 should NOT be enabled as a wakeup source
  • It's a bridge, not a device you interact with
  • Having it enabled causes immediate wake-up

The solution:

  • Disable GPP0 as a wakeup source
  • System will sleep properly
  • Other wakeup sources (USB, power button) will still work

Testing the Fix Temporarily

Step 1: Test the Fix (Temporary)

Before making permanent changes, let's test if disabling GPP0 fixes the problem.

This change will only last until you reboot your computer. After reboot, it will reset.

Run this command:

echo GPP0 | sudo tee /proc/acpi/wakeup

What this command does:

  • echo GPP0: Outputs "GPP0" (the device name)
  • |: Pipe symbol - sends output to next command
  • sudo: Administrator privileges (you'll be asked for your password)
  • tee: Write to file
  • /proc/acpi/wakeup: The wakeup configuration file

What this does:

  • Toggles GPP0's wakeup status
  • If GPP0 was *enabled, it becomes *disabled
  • If GPP0 was *disabled, it becomes *enabled

You'll be asked for your password:

  • Type your password (you won't see it as you type - this is normal)
  • Press Enter

What you'll see:

If GPP0 was enabled:

GPP0

This means the command succeeded. GPP0 is now disabled.

If you see an error:

  • Make sure you typed the command correctly
  • Make sure you have sudo privileges
  • See troubleshooting section

Step 2: Verify GPP0 is Disabled

Let's check that GPP0 is now disabled:

cat /proc/acpi/wakeup | grep GPP0

What this does:

  • cat /proc/acpi/wakeup: Show wakeup sources
  • |: Pipe to next command
  • grep GPP0: Search for line containing "GPP0"

What you should see:

If GPP0 is now disabled:

GPP0	  S4	*disabled   pci:0000:00:01.1

Notice *disabled instead of *enabled.

If it still shows *enabled:

  • The toggle might have re-enabled it (if it was already disabled)
  • Try running the command again
  • See troubleshooting section

Step 3: Test Sleep

Now let's test if sleep works properly:

Step 3a: Save your work

  • Important: Save all open files and close important applications
  • The computer will go to sleep, so make sure nothing is lost

Step 3b: Put the computer to sleep

Method 1: Using the system menu

  • Click your username/power icon in the top-right corner
  • Click "Suspend" or "Sleep"

Method 2: Using a keyboard shortcut

  • Some systems: Super + L then select "Suspend"
  • Or check your system settings for sleep shortcut

Method 3: Using terminal (if you prefer)

systemctl suspend

What this does:

  • systemctl: System control tool
  • suspend: Put system to sleep

What should happen:

  • Screen turns off
  • Fans may stop or slow down
  • Computer appears to be off
  • Computer stays asleep (doesn't wake up immediately)

Step 3c: Wake the computer

To wake the computer:

  • Press the power button
  • Or move your mouse
  • Or press a key on your keyboard

What should happen:

  • Screen turns on
  • Computer resumes from sleep
  • You're back to where you were

Step 4: Did It Work?

If the computer stayed asleep:

  • The fix works!
  • GPP0 was the problem
  • Now we need to make it permanent (see next section)

If the computer still wakes immediately:

  • GPP0 might not be the problem
  • Or there might be another issue
  • See troubleshooting section

Important: This fix is temporary. After you reboot, GPP0 will be enabled again, and the problem will return. We need to make it permanent.


Making the Fix Permanent

Why Make It Permanent?

The temporary fix works, but:

  • It resets every time you reboot
  • You'd have to run the command after every boot
  • It's annoying and easy to forget

The permanent fix:

  • Automatically disables GPP0 on every boot
  • You set it up once and forget about it
  • Works forever (until you remove it)

Step 1: Create a Systemd Service

Systemd is the system manager on modern Linux. We'll create a service that runs on boot.

Step 1a: Open the service file for editing:

sudo nano /etc/systemd/system/wakeup-disable-GPP0.service

What this command does:

  • sudo: Administrator privileges
  • nano: Simple text editor (easier than vim for beginners)
  • /etc/systemd/system/: Directory for systemd service files
  • wakeup-disable-GPP0.service: Name of our service file

If the file doesn't exist, nano will create it.

What you'll see:

  • A blank file (if new)
  • Or existing content (if file already exists - unlikely)

Step 1b: Add the service configuration:

Type or paste this into the file:

[Unit]
Description=Disable GPP0 as ACPI wakeup source
After=multi-user.target

[Service]
Type=oneshot
ExecStart=/bin/bash -c "echo GPP0 > /proc/acpi/wakeup"

[Install]
WantedBy=multi-user.target

What each section means:

[Unit] section:

  • Description=: Human-readable description of what the service does
  • After=multi-user.target: Run after the system reaches multi-user mode (after boot is complete)

[Service] section:

  • Type=oneshot: Service runs once and exits (doesn't stay running)
  • ExecStart=: Command to run when service starts
  • /bin/bash -c: Run a bash command
  • "echo GPP0 > /proc/acpi/wakeup": Disable GPP0 wakeup

[Install] section:

  • WantedBy=multi-user.target: Enable this service when system reaches multi-user mode

Step 1c: Save the file:

In nano:

  1. Press Ctrl + O (that's the letter O, not zero)
  2. You'll be asked for filename - just press Enter (it's already correct)
  3. Press Ctrl + X to exit

You should see:

[ Wrote 9 lines ]

This means the file was saved successfully.

Step 1d: Verify the file was created:

cat /etc/systemd/system/wakeup-disable-GPP0.service

What this does:

  • cat: Display file contents
  • Shows what's in the service file

You should see the configuration you just added:

[Unit]
Description=Disable GPP0 as ACPI wakeup source
After=multi-user.target

[Service]
Type=oneshot
ExecStart=/bin/bash -c "echo GPP0 > /proc/acpi/wakeup"

[Install]
WantedBy=multi-user.target

If you see this, the file is correct.

Step 2: Enable the Service

Now we need to tell systemd to run this service on every boot:

sudo systemctl enable wakeup-disable-GPP0.service

What this command does:

  • sudo: Administrator privileges
  • systemctl: System control tool
  • enable: Enable the service to start on boot
  • wakeup-disable-GPP0.service: The service we created

What you'll see:

If successful:

Created symlink /etc/systemd/system/multi-user.target.wants/wakeup-disable-GPP0.service → /etc/systemd/system/wakeup-disable-GPP0.service.

This means the service is enabled.

If you see an error:

  • Make sure the service file exists and is correct
  • Check for typos in the filename
  • See troubleshooting section

Step 3: Test the Service (Optional but Recommended)

Before rebooting, let's test that the service works:

sudo systemctl start wakeup-disable-GPP0.service

What this does:

  • start: Run the service now (don't wait for boot)
  • Tests that the service works correctly

What you'll see:

  • Usually nothing (no output means success)

Check if GPP0 is disabled:

cat /proc/acpi/wakeup | grep GPP0

You should see:

GPP0	  S4	*disabled   pci:0000:00:01.1

If GPP0 is disabled, the service works!

Check service status:

sudo systemctl status wakeup-disable-GPP0.service

What you should see:

● wakeup-disable-GPP0.service - Disable GPP0 as ACPI wakeup source
     Loaded: loaded (/etc/systemd/system/wakeup-disable-GPP0.service; enabled; vendor preset: disabled)
     Active: inactive (dead) since Mon 2025-01-15 10:30:00 EST; 5min ago

What this means:

  • Loaded: loaded: Service file is loaded
  • enabled: Service will run on boot
  • Active: inactive (dead): Service ran and exited (this is normal for oneshot services)

If you see this, everything is working correctly!

Step 4: Reboot to Apply Permanently

Now let's reboot to make sure the service runs on boot:

Step 4a: Save your work

  • Important: Save all open files
  • Close important applications

Step 4b: Reboot the computer

Method 1: Using the system menu

  • Click your username/power icon
  • Click "Restart" or "Reboot"

Method 2: Using terminal

sudo reboot

What this does:

  • sudo: Administrator privileges
  • reboot: Restart the computer

The computer will restart. This is normal.

Step 4c: After reboot, verify the fix

After your computer boots back up:

  1. Open a terminal (see "Diagnosing the Issue" section if needed)

  2. Check if GPP0 is disabled:

cat /proc/acpi/wakeup | grep GPP0

You should see:

GPP0	  S4	*disabled   pci:0000:00:01.1

If GPP0 shows *disabled, the permanent fix is working!

  1. Test sleep again:
  • Put the computer to sleep
  • It should stay asleep (not wake immediately)
  • Wake it with power button or mouse

If sleep works properly, the fix is complete!


Verifying the Fix

Step 1: Check Service Status

Verify the service is enabled and ran on boot:

sudo systemctl status wakeup-disable-GPP0.service

What you should see:

● wakeup-disable-GPP0.service - Disable GPP0 as ACPI wakeup source
     Loaded: loaded (/etc/systemd/system/wakeup-disable-GPP0.service; enabled; vendor preset: disabled)
     Active: inactive (dead) since Mon 2025-01-15 10:30:00 EST; 5min ago

Key indicators:

  • Loaded: loaded: Service file is loaded
  • enabled: Service is enabled (will run on boot)
  • Active: inactive (dead): Service ran and exited (normal for oneshot)

If you see this, the service is working correctly.

Step 2: Check GPP0 Status

Verify GPP0 is disabled:

cat /proc/acpi/wakeup | grep GPP0

You should see:

GPP0	  S4	*disabled   pci:0000:00:01.1

If you see *disabled, GPP0 is correctly disabled.

Step 3: Test Sleep Multiple Times

Test that sleep works consistently:

  1. Put computer to sleep
  2. Wait 10-30 seconds (make sure it stays asleep)
  3. Wake computer (power button or mouse)
  4. Repeat 2-3 times

If the computer stays asleep every time, the fix is working!

Step 4: Check Service Logs (Optional)

If you want to see when the service ran:

journalctl -u wakeup-disable-GPP0.service

What this does:

  • journalctl: View system logs
  • -u: For a specific unit (service)
  • wakeup-disable-GPP0.service: The service name

What you should see:

Jan 15 10:30:00 hostname systemd[1]: Starting Disable GPP0 as ACPI wakeup source...
Jan 15 10:30:00 hostname systemd[1]: Started Disable GPP0 as ACPI wakeup source.

This shows the service ran successfully on boot.


Troubleshooting

Problem 1: GPP0 Not Found in /proc/acpi/wakeup

Symptoms:

  • Running cat /proc/acpi/wakeup doesn't show GPP0
  • Or GPP0 shows as *disabled already

Possible causes:

  • Different motherboard (not Gigabyte B550)
  • Different device name
  • Already fixed
  • Different issue entirely

Solutions:

Solution 1: Check for other PCIe bridges

cat /proc/acpi/wakeup | grep -i "GPP\|PCI"

Look for other devices that might be causing the issue.

Solution 2: Check all enabled wakeup sources

cat /proc/acpi/wakeup | grep enabled

Look for devices that shouldn't be enabled:

  • PCIe bridges (GPP*, PEG*, etc.)
  • Unknown devices
  • Devices you don't recognize

Solution 3: Try disabling other devices

If you find another suspicious device (e.g., GPP1, GPP2):

# Test temporarily
echo GPP1 | sudo tee /proc/acpi/wakeup

# Test sleep
systemctl suspend

If this fixes it, create a service for that device instead of GPP0.

Solution 4: Check if it's a different issue

Other common sleep issues:

  • USB devices keeping system awake
  • Network wake-on-LAN
  • Hardware incompatibility
  • Kernel/driver issues

See ArchWiki for more troubleshooting:

Problem 2: Service Not Running on Boot

Symptoms:

  • Service is enabled but GPP0 is still enabled after reboot
  • Service status shows it didn't run

Solutions:

Solution 1: Check service is enabled

sudo systemctl is-enabled wakeup-disable-GPP0.service

Should show:

enabled

If it shows disabled:

sudo systemctl enable wakeup-disable-GPP0.service

Solution 2: Check service file syntax

sudo systemctl daemon-reload

What this does:

  • Reloads systemd configuration
  • Picks up any changes to service files

Then enable again:

sudo systemctl enable wakeup-disable-GPP0.service

Solution 3: Check service file location

ls -la /etc/systemd/system/wakeup-disable-GPP0.service

File should exist. If not, create it again (see "Making the Fix Permanent" section).

Solution 4: Check service logs

journalctl -u wakeup-disable-GPP0.service -b

What this does:

  • -b: Show logs from current boot only
  • Shows if service ran and any errors

Look for errors and fix them.

Problem 3: Permission Denied Errors

Symptoms:

  • Getting "Permission denied" when running commands
  • Can't write to /proc/acpi/wakeup

Solutions:

Solution 1: Use sudo

Make sure you're using sudo:

echo GPP0 | sudo tee /proc/acpi/wakeup

Not:

echo GPP0 > /proc/acpi/wakeup  # This won't work without sudo

Solution 2: Check sudo access

sudo whoami

Should show:

root

If it asks for password and works, sudo is configured correctly.

If it doesn't work:

  • You might not have sudo privileges
  • Ask your system administrator
  • Or use su instead (advanced)

Problem 4: Sleep Still Doesn't Work After Fix

Symptoms:

  • GPP0 is disabled
  • Service is running
  • But computer still wakes immediately

Possible causes:

  • Another device is causing wake-up
  • Different issue entirely
  • Hardware problem

Solutions:

Solution 1: Check all wakeup sources

cat /proc/acpi/wakeup | grep enabled

Look for other enabled devices that might be problematic.

Solution 2: Check what woke the system

After the system wakes, check logs:

journalctl -b -1 | grep -i "wake\|resume"

What this does:

  • -b -1: Previous boot
  • grep -i "wake\|resume": Search for wake/resume messages

Look for what device caused the wake-up.

Solution 3: Disable other wakeup sources temporarily

Try disabling USB wakeup (if you don't need it):

# Find USB devices
cat /proc/acpi/wakeup | grep USB

# Disable temporarily (replace USB0 with your device)
echo USB0 | sudo tee /proc/acpi/wakeup

# Test sleep
systemctl suspend

If this fixes it, you might need to disable USB wakeup instead of (or in addition to) GPP0.

Solution 4: Check for hardware issues

Other things to check:

  • Loose cables (can cause electrical signals)
  • Faulty hardware
  • BIOS/UEFI settings
  • Kernel issues

Try updating BIOS/UEFI:

  • Check Gigabyte website for updates
  • Update if newer version available
  • Warning: BIOS updates can be risky - follow instructions carefully

Problem 5: Service File Has Errors

Symptoms:

  • Service won't start
  • Getting errors when enabling service
  • Service file syntax errors

Solutions:

Solution 1: Check service file syntax

sudo systemctl daemon-reload
sudo systemctl status wakeup-disable-GPP0.service

Look for error messages and fix them.

Solution 2: Verify service file content

cat /etc/systemd/system/wakeup-disable-GPP0.service

Compare with the correct content from "Making the Fix Permanent" section.

Common mistakes:

  • Missing brackets [ ]
  • Wrong section names
  • Typos in commands
  • Missing quotes

Solution 3: Recreate the service file

Delete and recreate:

sudo rm /etc/systemd/system/wakeup-disable-GPP0.service
sudo nano /etc/systemd/system/wakeup-disable-GPP0.service

Then add the correct content again (see "Making the Fix Permanent" section).

Problem 6: Need to Remove the Fix

If you want to remove the fix (maybe you got a new motherboard):

Step 1: Disable the service

sudo systemctl disable wakeup-disable-GPP0.service

Step 2: Stop the service

sudo systemctl stop wakeup-disable-GPP0.service

Step 3: Remove the service file

sudo rm /etc/systemd/system/wakeup-disable-GPP0.service

Step 4: Reload systemd

sudo systemctl daemon-reload

The fix is now removed. GPP0 will be enabled again after reboot.


Summary

This comprehensive guide covered fixing the immediate wake-up sleep issue on Gigabyte B550 motherboards:

  1. Understanding the Problem - What causes the issue and why it happens
  2. Diagnosing the Issue - How to check if GPP0 is the problem
  3. Testing the Fix Temporarily - Testing if disabling GPP0 fixes the issue
  4. Making the Fix Permanent - Creating a systemd service to disable GPP0 on every boot
  5. Verifying the Fix - Confirming the fix works correctly
  6. Troubleshooting - Solutions for common problems

Key Takeaways:

  • GPP0 is incorrectly enabled as a wakeup source on Gigabyte B550 motherboards
  • Disabling GPP0 fixes the immediate wake-up issue
  • A systemd service makes the fix permanent (runs on every boot)
  • The fix is safe and reversible if needed
  • This is a firmware issue, not a Linux bug

What the fix does:

  • Disables GPP0 as a wakeup source
  • Prevents immediate wake-up after sleep
  • Allows normal sleep/wake functionality
  • Other wakeup sources (USB, power button) still work

Remember:

  • The temporary fix resets on reboot
  • The permanent fix requires creating a systemd service
  • Always test the temporary fix before making it permanent
  • Verify the fix works after rebooting

Next Steps


Important Notes

Safety

This fix is safe:

  • Only disables a wakeup source (doesn't change hardware)
  • Doesn't affect system stability
  • Can be easily reversed
  • Doesn't interfere with normal operation

What it doesn't affect:

  • USB wakeup (still works if enabled)
  • Power button wakeup (still works)
  • Network wake-on-LAN (still works if enabled)
  • Other wakeup sources (still work)

Compatibility

This fix works on:

  • Arch Linux and Arch-based distributions (CachyOS, Manjaro, etc.)
  • Ubuntu and Debian-based distributions
  • Fedora and Red Hat-based distributions
  • Other Linux distributions with systemd

The fix is distribution-agnostic:

  • Works on any Linux distribution
  • Uses standard Linux interfaces (/proc/acpi/wakeup)
  • Uses standard systemd (available on most modern Linux)

Other Motherboards

This fix might work for:

  • Other Gigabyte motherboards (X570, B450, etc.)
  • Other manufacturers with similar issues
  • Any motherboard where GPP0 (or similar) is incorrectly enabled

If you have a different motherboard:

  • Try the diagnostic steps
  • Look for similar devices (GPP*, PCIe bridges)
  • The same fix might work with a different device name

BIOS/UEFI Updates

Updating BIOS/UEFI might:

  • Fix the issue (if Gigabyte releases a fix)
  • Change device names (GPP0 might become something else)
  • Require adjusting the fix

If you update BIOS/UEFI:

  • Check if the issue is fixed
  • If not, verify GPP0 is still the problem
  • Adjust the fix if device names changed

This guide covers Arch Linux, CachyOS, Ubuntu, Debian, Fedora, and other Linux distributions. The fix has been tested and verified for 2025. For distribution-specific details, refer to your distribution's documentation.