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
- Understanding the Problem
- Diagnosing the Issue
- Testing the Fix Temporarily
- Making the Fix Permanent
- Verifying the Fix
- 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:
- GPP0, GPP1, GPP2, etc.
- PCIe bridges
- GPP0 is often the culprit on Gigabyte B550
- USB0, USB1, EHC1, EHC2, XHC
- USB controllers
- These are usually fine to have enabled (you want USB to wake the system)
- PWRB
- Power button
- Should be enabled (you want power button to wake the system)
- 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 commandsudo: 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 commandgrep 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 + Lthen 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 toolsuspend: 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 privilegesnano: Simple text editor (easier than vim for beginners)/etc/systemd/system/: Directory for systemd service fileswakeup-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 doesAfter=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:
- Press
Ctrl + O(that's the letter O, not zero) - You'll be asked for filename - just press
Enter(it's already correct) - Press
Ctrl + Xto 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 privilegessystemctl: System control toolenable: Enable the service to start on bootwakeup-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 loadedenabled: Service will run on bootActive: 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 privilegesreboot: Restart the computer
The computer will restart. This is normal.
Step 4c: After reboot, verify the fix
After your computer boots back up:
-
Open a terminal (see "Diagnosing the Issue" section if needed)
-
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!
- 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 loadedenabled: 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:
- Put computer to sleep
- Wait 10-30 seconds (make sure it stays asleep)
- Wake computer (power button or mouse)
- 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/wakeupdoesn't show GPP0 - Or GPP0 shows as
*disabledalready
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
suinstead (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 bootgrep -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:
- Understanding the Problem - What causes the issue and why it happens
- Diagnosing the Issue - How to check if GPP0 is the problem
- Testing the Fix Temporarily - Testing if disabling GPP0 fixes the issue
- Making the Fix Permanent - Creating a systemd service to disable GPP0 on every boot
- Verifying the Fix - Confirming the fix works correctly
- 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
- Power Management Guide - Complete guide to power management on Linux (if it exists)
- Systemd Services Guide - Learn more about systemd services
- Hardware Troubleshooting - General hardware troubleshooting
- ArchWiki Power Management: https://wiki.archlinux.org/title/Power_management
- ArchWiki Suspend and Hibernate: https://wiki.archlinux.org/title/Power_management/Suspend_and_hibernate
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.