Askannz / optimus-manager

A Linux program to handle GPU switching on Optimus laptops.
MIT License
2.25k stars 165 forks source link

laptop display stays black after switching to nvidia mode #547

Closed kqee closed 10 months ago

kqee commented 10 months ago

Describe the bug After switching to nvidia without any external HDMI monitors attached, the main display(laptop monitor) stays black, however, before loading up a desktop manager(using gdm), there is no problem(display manager does not cause the primary display to become black). It is also worth to note that this issue does not appear in gnome with /home/$USER/.config/monitors.xml present(otherwise it will stay black).

System info Please include :

This parameter defines the method used to power switch the Nvidia card. See the documentation

for a complete description of what each value does. Possible values :

#

- nouveau : load the nouveau module on the Nvidia card.

- bbswitch : power off the card using the bbswitch module (requires the bbswitch dependency).

- acpi_call : try various ACPI method calls to power the card on and off (requires the acpi_call dependency)

- custom: use custom scripts at /etc/optimus-manager/nvidia-enable.sh and /etc/optimus-manager/nvidia-disable.sh

- none : do not use an external module for power management. For some laptop models it's preferable to

use this option in combination with pci_power_control (see below).

switching=none

Enable PCI power management in "integrated" mode.

This option is incompatible with acpi_call and bbswitch, so it will be ignored in those cases.

pci_power_control=no

Remove the Nvidia card from the PCI bus.

May prevent crashes caused by power switching.

Ignored if switching=nouveau or switching=bbswitch.

pci_remove=no

Reset the Nvidia card at the PCI level before reloading the nvidia module.

Ensures the card is in a fresh state before reloading the nvidia module.

May fix some switching issues. Possible values :

#

- no : does not perform any reset

- function_level : perform a light "function-level" reset

- hot_reset : perform a "hot reset" of the PCI bridge. ATTENTION : this method messes with the hardware

directly, please read the online documentation of optimus-manager before using it.

Also, it will perform a PCI remove even if pci_remove=no.

# pci_reset=no

Automatically log out the current desktop session when switching GPUs.

This feature is currently supported for the following DE/WM :

GNOME, KDE Plasma, LXDE, Deepin, Xfce, i3, Openbox, AwesomeWM, bspwm, dwm, Xmonad, herbstluftwm

If this option is disabled or you use a different desktop environment,

GPU switching only becomes effective at the next graphical session login.

auto_logout=yes

GPU mode to use at computer startup.

Possible values: nvidia, integrated, hybrid, auto, intel (deprecated, equivalent to integrated)

"auto" is a special mode that auto-detects if the computer is running on battery

and selects a proper GPU mode. See the other options below.

startup_mode=hybrid

GPU mode to select when startup_mode=auto and the computer is running on battery.

Possible values: nvidia, integrated, hybrid, intel (deprecated, equivalent to integrated)

startup_auto_battery_mode=integrated

GPU mode to select when startup_mode=auto and the computer is running on external power.

Possible values: nvidia, integrated, hybrid, intel (deprecated, equivalent to integrated)

startup_auto_extpower_mode=nvidia

[intel]

Driver to use for the Intel GPU. Possible values : modesetting, intel

To use the intel driver, you need to install the package "xf86-video-intel".

driver=modesetting

Acceleration method (corresponds to AccelMethod in the Xorg configuration).

Only applies to the intel driver.

Possible values : sna, xna, uxa

Leave blank for the default (no option specified)

accel=

Enable TearFree option in the Xorg configuration.

Only applies to the intel driver.

Possible values : yes, no

Leave blank for the default (no option specified)

tearfree=

DRI version. Possible values : 2, 3

DRI=3

Whether or not to enable modesetting for the nouveau driver.

Does not affect modesetting for the Intel GPU driver !

This option only matters if you use nouveau as the switching backend.

modeset=yes

[amd]

Driver to use for the AMD GPU. Possible values : modesetting, amdgpu

To use the amdgpu driver, you need to install the package "xf86-video-amdgpu".

driver=modesetting

Enable TearFree option in the Xorg configuration.

Only applies to the amdgpu driver.

Possible values : yes, no

Leave blank for the default (no option specified)

tearfree=yes

DRI version. Possible values : 2, 3

DRI=3

[nvidia]

Whether or not to enable modesetting. Required for PRIME Synchronization (which prevents tearing).

modeset=yes

Whether or not to enable the NVreg_UsePageAttributeTable option in the Nvidia driver.

Recommended, can cause poor CPU performance otherwise.

PAT=yes

DPI value. This will be set using the Xsetup script passed to your login manager.

It will run the command

xrandr --dpi

Leave blank for the default (the above command will not be run).

DPI=96

If you're running an updated version of xorg-server (let's say to get PRIME Render offload enabled),

the nvidia driver may not load because of an ABI version mismatch. Setting this flag to "yes"

will allow the loading of the nvidia driver.

ignore_abi=no

Set to yes if you want to use optimus-manager with external Nvidia GPUs (experimental)

allow_external_gpus=no

Comma-separated list of Nvidia-specific options to apply.

Available options :

- overclocking : enable CoolBits in the Xorg configuration, which unlocks clocking options

in the Nvidia control panel. Note: does not work in hybrid mode.

- triple_buffer : enable triple buffering.

options=overclocking

Enable Runtime D3 (RTD3) Power Management in the Nvidia driver. While in hybrid mode,

this feature allows the Nvidia card to go into a low-power mode if it's not in use.

#

IMPORTANT NOTES:

- The feature is still experimental

- It's only supported on laptops with a Turing GPU or above, and an Intel Coffee Lake CPU

or above (not sure about the state of support for AMD CPUs).

- if your Nvidia card also has an audio chip (for HDMI) or a USB port wired to it, they may not

function properly while in low-power mode

#

For more details, see

https://download.nvidia.com/XFree86/Linux-x86_64/460.39/README/dynamicpowermanagement.html

#

Available options:

- no (the default): RTD3 power management is disabled.

- coarse: the card only goes to low-power if no application is using it.

- fine: the card is also allowed to go to low-power if applications are using it but have not

actively submitted GPU work in some amount of time.

dynamic_power_management=fine

The Nvidia driver handles power to the video memory separately from the rest of GPU.

When dynamic_power_management=fine, this options controls the threshold of memory utilization

(in Megabytes) under which the memory is put in a low-power state.

Values over 200MB are ignored. Leave blank for the default (200MB).

Setting this value to 0 keeps the memory powered at all times.

dynamic_power_management_memory_threshold=


**Logs**
Run `optimus-manager --status` in a console, and if an error message appears, post it here. The message should also point you to a log path, attach it here as well. If there is no error message but you are still experiencing issues, grab the most recent files in `/var/log/optimus-manager/switch/` and `/var/log/optimus-manager/daemon/`.

/var/log/optimus-manager/switch:

[7] INFO: # Xorg pre-start hook [28] INFO: Previous state was: {'type': 'pending_pre_xorg_start', 'requested_mode': 'integrated', 'current_mode': 'hybrid'} [29] INFO: Requested mode is: integrated [56] INFO: Available modules: ['nouveau', 'nvidia', 'nvidia_drm', 'nvidia_modeset', 'nvidia_uvm'] [56] INFO: Unloading modules ['nvidia_drm', 'nvidia_modeset', 'nvidia_uvm', 'nvidia'] (if loaded) [712] INFO: switching=none, nothing to do [712] INFO: Setting Nvidia PCI power state to auto [4689] INFO: Writing "auto" to /sys/bus/pci/devices/0000:01:00.0/power/control [4690] INFO: Writing "auto" to /sys/bus/pci/devices/0000:01:00.1/power/control [8575] INFO: Writing to /etc/X11/xorg.conf.d/10-optimus-manager.conf [8576] INFO: Writing state {'type': 'pending_post_xorg_start', 'switch_id': '20230822T115831', 'requested_mode': 'integrated'} [8576] INFO: Xorg pre-start hook completed successfully. [7] INFO: # Xorg post-start hook [1903] INFO: Running /etc/optimus-manager/xsetup-integrated.sh [1928] INFO: Writing state {'type': 'done', 'switch_id': '20230822T115831', 'current_mode': 'integrated'} [1929] INFO: Xorg post-start hook completed successfully. [10] INFO: # Xorg pre-start hook [35] INFO: RUNNING_UNDER_GDM is set and Xorg is still running. Aborting this hook because it was likely called by GDM when closing its login screen. [8] INFO: # Xorg pre-start hook [32] INFO: RUNNING_UNDER_GDM is set and Xorg is still running. Aborting this hook because it was likely called by GDM when closing its login screen. [8] INFO: # Xorg pre-start hook [31] INFO: RUNNING_UNDER_GDM is set and Xorg is still running. Aborting this hook because it was likely called by GDM when closing its login screen.

/var/log/optimus-manager/daemon:

[20] INFO: # Daemon pre-start hook [20] INFO: Removing /etc/X11/xorg.conf.d/10-optimus-manager.conf (if present) [21] INFO: Copying /etc/optimus-manager/optimus-manager.conf to /var/lib/optimus-manager/tmp/config_copy.conf [23] INFO: Startup mode is: hybrid [24] INFO: Writing state {'type': 'pending_pre_xorg_start', 'requested_mode': 'hybrid', 'current_mode': None} [24] INFO: Daemon pre-start hook completed successfully. [24] INFO: Calling Xorg pre-start hook. [1] INFO: # Commands daemon [1] INFO: Opening UNIX socket [1] INFO: Awaiting commands [246476] INFO: Received command : {"type": "switch", "args": {"mode": "integrated"}} [246477] INFO: Writing requested GPU mode integrated [246477] INFO: Writing state {'type': 'pending_pre_xorg_start', 'requested_mode': 'integrated', 'current_mode': 'hybrid'}

kqee commented 10 months ago

No longer using Linux, thank you for reading this.