|
1 | | -# GPUMode |
2 | | -System tray application for manual GPU mode switching on Ubuntu |
| 1 | +# GPUMode Ubuntu |
| 2 | + |
| 3 | +System tray application for manual GPU mode switching on Ubuntu laptops with AMD integrated and NVIDIA discrete graphics. |
| 4 | + |
| 5 | +--- |
| 6 | + |
| 7 | +## What It Does |
| 8 | + |
| 9 | +- **Manual GPU Mode Switching**: Switch between Integrated and Hybrid modes via system tray |
| 10 | +- **Power Change Prompts**: Optional prompts to switch GPU modes when AC power plugs/unplugs |
| 11 | +- **Automatic Power Profiles**: Automatically switches system power profiles (performance/power-saver) based on AC/battery status |
| 12 | +- **NVIDIA Mode Detection**: Detects when BIOS is set to NVIDIA-only mode and provides guidance |
| 13 | + |
| 14 | +--- |
| 15 | + |
| 16 | +## Prerequisites |
| 17 | + |
| 18 | +- AMD integrated GPU + NVIDIA discrete GPU |
| 19 | +- NVIDIA proprietary drivers installed |
| 20 | +- Ubuntu Linux |
| 21 | +- [envycontrol](https://github.com/bayasdev/envycontrol) installed |
| 22 | + |
| 23 | +--- |
| 24 | + |
| 25 | +## Graphics Modes |
| 26 | + |
| 27 | +### Hybrid Mode (Recommended) |
| 28 | +- Both GPUs active |
| 29 | +- AMD handles desktop/light tasks |
| 30 | +- NVIDIA handles games/heavy applications |
| 31 | +- Moderate battery impact |
| 32 | +- **Power consumption:** ~14.4W at idle (3 min idle, powersave mode, D0 power state, with **or** without envycontrol installed) |
| 33 | +- **Switchable via this app** |
| 34 | + |
| 35 | +### Integrated Mode (AMD-only) |
| 36 | +- NVIDIA completely off |
| 37 | +- Best battery life |
| 38 | +- Cannot run GPU-intensive applications |
| 39 | +- **Power consumption:** ~6.7W at idle (3 min idle, powersave mode) |
| 40 | +- **Power savings:** ~7.7W less than Hybrid mode (53% reduction at idle) |
| 41 | +- **Switchable via this app** |
| 42 | + |
| 43 | +### NVIDIA Mode (Discrete-only) |
| 44 | +- NVIDIA handles everything |
| 45 | +- AMD disabled |
| 46 | +- Maximum performance |
| 47 | +- High battery drain |
| 48 | +- **Must be set in BIOS (F2) - not switchable in app** |
| 49 | + |
| 50 | +--- |
| 51 | + |
| 52 | +## Installation |
| 53 | + |
| 54 | +1. Download latest .deb [from releases](https://github.com/FrameworkComputer/GPUMode/releases) |
| 55 | +2. Install: |
| 56 | + |
| 57 | + sudo dpkg -i gpumode_*.deb |
| 58 | + |
| 59 | +3. Reboot |
| 60 | + |
| 61 | +The tray icon will auto-start on login. |
| 62 | + |
| 63 | +--- |
| 64 | + |
| 65 | +## Usage |
| 66 | + |
| 67 | +### Switching GPU Modes |
| 68 | + |
| 69 | +1. Click GPUMode tray icon |
| 70 | +2. Select mode (Integrated/Hybrid) |
| 71 | +3. Authenticate when prompted |
| 72 | +4. **Reboot** for changes to take effect |
| 73 | + |
| 74 | +**Note:** If the system is in NVIDIA mode (set via BIOS), the app will detect this and disable switching. To regain switching functionality, reboot and set BIOS to Hybrid mode (F2 during boot). |
| 75 | + |
| 76 | +### Power Change Prompts |
| 77 | + |
| 78 | +Toggle "Prompt on Power Change" in the tray menu to enable/disable prompts when AC power changes. |
| 79 | + |
| 80 | +### Checking Current Mode |
| 81 | + |
| 82 | +Click tray icon to see current mode, or run: |
| 83 | + |
| 84 | + glxinfo | grep "OpenGL renderer" |
| 85 | + |
| 86 | +or |
| 87 | + |
| 88 | + nvidia-smi |
| 89 | + |
| 90 | +--- |
| 91 | + |
| 92 | +## Framework Laptop 16 AI 300 Series |
| 93 | + |
| 94 | +GPU modes can be set in BIOS (F2 during boot): |
| 95 | +- **Hybrid mode** (recommended): Enables app switching between Hybrid and Integrated |
| 96 | +- **NVIDIA mode**: App will detect this and block switching until BIOS is set back to Hybrid |
| 97 | +- **Integrated mode**: Can be set via BIOS or via this app |
| 98 | + |
| 99 | +For best experience, set BIOS to Hybrid and use this app for switching. |
| 100 | + |
| 101 | +--- |
| 102 | + |
| 103 | +## Troubleshooting |
| 104 | + |
| 105 | +### envycontrol not found |
| 106 | +Install envycontrol from https://github.com/bayasdev/envycontrol |
| 107 | + |
| 108 | +### Mode didn't change after reboot |
| 109 | +- Check BIOS graphics settings (may override in-OS) |
| 110 | +- Verify with: nvidia-smi or glxinfo |
| 111 | + |
| 112 | +### Authentication cancelled |
| 113 | +Click the mode again and enter password when prompted. |
| 114 | + |
| 115 | +### App shows "NVIDIA Mode Active" and blocks switching |
| 116 | +Your BIOS is set to NVIDIA-only mode. To regain switching functionality: |
| 117 | +1. Reboot and press F2 to enter BIOS |
| 118 | +2. Navigate to graphics settings |
| 119 | +3. Set mode to Hybrid |
| 120 | +4. Save and exit |
| 121 | +5. App will detect Hybrid mode and enable switching |
| 122 | + |
| 123 | +--- |
| 124 | + |
| 125 | +## How GPU Mode Detection Works |
| 126 | + |
| 127 | +The app uses glxinfo to detect the active GPU: |
| 128 | +- **NVIDIA-only detected**: App shows NVIDIA mode is active and blocks switching (BIOS setting required) |
| 129 | +- **AMD-only detected**: Checks envycontrol to confirm Integrated mode |
| 130 | +- **Both GPUs detected**: Confirms Hybrid mode |
| 131 | + |
| 132 | +This ensures accurate mode detection regardless of whether the mode was set via BIOS or the app. |
| 133 | + |
| 134 | +--- |
| 135 | + |
| 136 | +## Automatic Power Profile Management |
| 137 | + |
| 138 | +The power-profile-manager service runs automatically and switches between: |
| 139 | +- **Performance mode** when on AC power |
| 140 | +- **Power-saver mode** when on battery |
| 141 | + |
| 142 | +This happens independently of GPU mode switching and works with power-profiles-daemon. |
| 143 | + |
| 144 | +--- |
| 145 | + |
| 146 | +## Uninstallation |
| 147 | + |
| 148 | + sudo apt remove gpumode |
| 149 | + sudo apt autoremove |
| 150 | + |
| 151 | +--- |
| 152 | + |
| 153 | +## Reporting Bugs |
| 154 | + |
| 155 | +Include: |
| 156 | +- Ubuntu version (Needs to be 25.10+) |
| 157 | +- GPU models |
| 158 | +- Driver versions (nvidia-smi output) |
| 159 | +- BIOS graphics setting (Framework Laptop 16 users) |
| 160 | +- Steps to reproduce |
| 161 | +- Log file: ~/.local/share/gpumode/gpumode.log |
| 162 | + |
| 163 | +--- |
| 164 | + |
| 165 | +## License |
| 166 | + |
| 167 | +GPL-3.0 |
0 commit comments