Optimus laptop; switcherooctl does not list Nvidia card; external portable monitor does not work

I have an Optimus laptop with hardware as shown in inxi output below. openSUSE Tumbleweed was originally installed several years ago. In that installation with Nvidia drivers installed as described in the openSUSE wiki and SUSE Prime installed as in the openSUSE wiki and the SUSE Prime wiki page worked well (after removing bbswitch). I recently had to reinstall openSUSE (for reasons that a rollback would not suffice). Now the external portable PCD: 3s ~ ❯$ switcherooctl
Device: 0
Name: Intel Corporation TigerLake-H GT1 [UHD Graphics]
Default: yes
Environment: DRI_PRIME=pci-0000_00_02_0
‘’’
monitor I use as a second screen with the laptop is not recognized by openSUSE Tumbleweed. The little investigation I could do shows that the Nvidia card is not listed shown by switcherooctl:

Please post output from following commands:
inxi -GSaz
zypper se -si nvidia suse-prime bbswitch
zypper lr -d

Please make sure to post the complete output in preformatted text tags </> via the forum editor. Your initial post seems to miss several output…

Thanks for the reply. Here are the requested additional outputs.

 ~  ❯$ inxi -GSaz
System:
  Kernel: 6.15.7-1-default arch: x86_64 bits: 64 compiler: gcc v: 15.1.1
    clocksource: tsc avail: acpi_pm
    parameters: BOOT_IMAGE=/boot/vmlinuz-6.15.7-1-default
    root=UUID=f4722192-17fc-45bb-8e8b-0e206a913cef splash=silent
    resume=/dev/disk/by-uuid/980ddbbf-9b79-4390-be21-850e62b7ebb2 quiet
    security=selinux selinux=1 rd.driver.blacklist=nouveau mitigations=auto
  Desktop: KDE Plasma v: 6.4.3 tk: Qt v: N/A info: frameworks v: 6.16.0
    wm: kwin_wayland tools: avail: xscreensaver vt: 3 dm: SDDM Distro: openSUSE
    Tumbleweed 20250723
Graphics:
  Device-1: Intel TigerLake-H GT1 [UHD Graphics] vendor: Lenovo driver: i915
    v: kernel alternate: xe arch: Xe process: Intel 10nm built: 2020-21 ports:
    active: eDP-1 empty: DP-1, DP-2, DP-3, DP-4, DP-5, HDMI-A-1
    bus-ID: 00:02.0 chip-ID: 8086:9a60 class-ID: 0300
  Device-2: NVIDIA GA107BM [GeForce RTX 3050 Mobile] vendor: Lenovo
    driver: nvidia v: 570.172.08 alternate: nouveau,nvidia_drm
    non-free: 550/565.xx+ status: current (as of 2025-01; EOL~2026-12-xx)
    arch: Ampere code: GAxxx process: TSMC n7 (7nm) built: 2020-2023 pcie:
    gen: 4 speed: 16 GT/s lanes: 8 link-max: lanes: 16 bus-ID: 01:00.0
    chip-ID: 10de:25e2 class-ID: 0300
  Device-3: Chicony Integrated Camera driver: uvcvideo type: USB rev: 2.0
    speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 3-6:2 chip-ID: 04f2:b67d
    class-ID: 0e02
  Display: wayland server: X.org v: 1.21.1.15 with: Xwayland v: 24.1.8
    compositor: kwin_wayland driver: X: loaded: modesetting unloaded: nvidia
    dri: iris gpu: i915 display-ID: 0
  Monitor-1: eDP-1 model: California Institute of eDP-1-0x1606 built: 2020
    res: mode: 2560x1600 hz: 165 scale: 100% (1) dpi: 188 gamma: 1.2
    size: 345x215mm (13.58x8.46") diag: 407mm (16") ratio: 16:10
    modes: 2560x1600
  API: EGL v: 1.5 hw: drv: intel iris drv: nvidia platforms: device: 0
    drv: nvidia device: 1 drv: iris device: 2 drv: swrast gbm: drv: iris
    surfaceless: drv: nvidia wayland: drv: iris x11: drv: iris
  API: OpenGL v: 4.6.0 compat-v: 4.5 vendor: intel mesa v: 25.1.6 glx-v: 1.4
    direct-render: yes renderer: Mesa Intel UHD Graphics (TGL GT1)
    device-ID: 8086:9a60 memory: 22.71 GiB unified: yes display-ID: :1.0
  API: Vulkan v: 1.4.321 layers: 2 device: 0 type: integrated-gpu name: Intel
    UHD Graphics (TGL GT1) driver: N/A device-ID: 8086:9a60 surfaces: N/A
    device: 1 type: discrete-gpu name: NVIDIA GeForce RTX 3050 Laptop GPU
    driver: N/A device-ID: 10de:25e2 surfaces: N/A device: 2 type: cpu
    name: llvmpipe (LLVM 20.1.8 256 bits) driver: N/A device-ID: 10005:0000
    surfaces: N/A
  Info: Tools: api: clinfo, eglinfo, glxinfo, vulkaninfo
    de: kscreen-console,kscreen-doctor gpu: nvidia-smi wl: wayland-info
    x11: xdpyinfo, xprop, xrandr
PCD: 5s ~  ❯$ zypper se -si nvidia suse-prime bbswitch
Loading repository data...
Reading installed packages...

S  | Name                                      | Type    | Version                  | Arch   | Repository
---+-------------------------------------------+---------+--------------------------+--------+------------------
i  | kernel-firmware-nvidia                    | package | 20250516-4.1             | noarch | repo-oss
i  | libnvidia-egl-gbm1                        | package | 1.1.2-7.13               | x86_64 | repo-non-free
i  | libnvidia-egl-wayland1                    | package | 1.1.19-49.7              | x86_64 | repo-non-free
i  | libnvidia-egl-x111                        | package | 1.0.1-18.3               | x86_64 | repo-non-free
i  | nvidia-common-G06                         | package | 570.172.08-37.1          | x86_64 | repo-non-free
i  | nvidia-compute-G06                        | package | 570.172.08-37.1          | x86_64 | repo-non-free
i+ | nvidia-compute-utils-G06                  | package | 570.172.08-37.1          | x86_64 | repo-non-free
i  | nvidia-gl-G06                             | package | 570.172.08-37.1          | x86_64 | repo-non-free
i  | nvidia-modprobe                           | package | 570.172.08-16.1          | x86_64 | repo-non-free
i  | nvidia-open-driver-G06-signed-kmp-default | package | 570.172.08_k6.15.7_1-1.3 | x86_64 | (System Packages)
i  | nvidia-open-driver-G06-signed-kmp-default | package | 570.169_k6.15.4_1-2.1    | x86_64 | (System Packages)
i  | nvidia-persistenced                       | package | 570.172.08-2.1           | x86_64 | repo-non-free
i  | nvidia-userspace-meta-G06                 | package | 570.172.08-10.1          | noarch | repo-non-free
i  | nvidia-userspace-meta-G06                 | package | 570.172.08-10.1          | noarch | repo-non-free
i  | nvidia-video-G06                          | package | 570.172.08-37.1          | x86_64 | repo-non-free
i  | nvidia-xconfig                            | package | 570.172.08-2.1           | x86_64 | repo-non-free
i+ | openSUSE-repos-Tumbleweed-NVIDIA          | package | 20250714.a450212-1.1     | x86_64 | (System Packages)
i+ | suse-prime                                | package | 0.8.18-2.1               | noarch | repo-oss
PCD: 2s ~  ❯$ zypper lr -d
# | Alias                      | Name               | Enabled | GPG Check | Refresh | Keep | Priority | Type   | URI                                                     | Service
--+----------------------------+--------------------+---------+-----------+---------+------+----------+--------+---------------------------------------------------------+---------
1 | NVIDIA:repo-non-free       | repo-non-free      | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | https://download.nvidia.com/opensuse/tumbleweed         | NVIDIA
2 | code                       | Visual Studio Code | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | https://packages.microsoft.com/yumrepos/vscode          | 
3 | google-chrome              | google-chrome      | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | https://dl.google.com/linux/chrome/rpm/stable/x86_64    | 
4 | openSUSE:repo-non-oss      | repo-non-oss       | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://cdn.opensuse.org/tumbleweed/repo/non-oss         | openSUSE
5 | openSUSE:repo-openh264     | repo-openh264      | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://codecs.opensuse.org/openh264/openSUSE_Tumbleweed | openSUSE
6 | openSUSE:repo-oss          | repo-oss           | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://cdn.opensuse.org/tumbleweed/repo/oss             | openSUSE
7 | openSUSE:repo-oss-debug    | repo-oss-debug     | No      | ----      | ----    | -    |   99     | N/A    | http://cdn.opensuse.org/debug/tumbleweed/repo/oss       | openSUSE
8 | openSUSE:repo-oss-source   | repo-oss-source    | No      | ----      | ----    | -    |   99     | N/A    | http://cdn.opensuse.org/source/tumbleweed/repo/oss      | openSUSE
9 | openSUSE:update-tumbleweed | update-tumbleweed  | Yes     | (r ) Yes  | Yes     | -    |   99     | rpm-md | http://cdn.opensuse.org/update/tumbleweed               | openSUSE

The system is not up to date. Properly upgrade your system to the latest snapshot via zypper dup.

Do not use deprecated suse-prime. Follow the instructions in this wiki SDB:
https://en.opensuse.org/SDB:NVIDIA_Switcheroo_Control

After you have performed the above steps, repeat following commands and post the output:
zypper se -si nvidia suse-prime bbswitch
switcherooctl list

ping @malcolmlewis

This issue has been occurring for a couple of months. It has happened when the system was up-to-date, so I don’t believe that is an issue.

I know that SUSE Prime is deprecated but i require the ability to use the dedicated graphics card for the entire session when the laptop is plugged in. The referenced link states

You may need to run programs using the discrete graphics card, but you don’t want the discrete graphics active all the time, because that would cause the laptop to consume too much energy.

You also are using either Gnome or the KDE desktop environment with Wayland, which both offer GUI integration for hybrid graphics

Neither of these cases apply to me. I want the discrete graphics card to be active all the time (when the laptop is plugged in). I also want to use X11 not Wayland.

Depending on your laptop model, there may be the ability to do this via the BIOS/UEFI.

Setting the DRI_PRIME variable globally (in /etc/environment) might be another option perhaps?

The laptop BIOS/UEFI has an option to use the “Discrete” or “Dynamic” modes for running the internal screen. When I first got the laptop I used “Discrete” but any installation without the Nvidia driver readily available resulted in a black screen when set to “Discrete”.

A couple of questions, shouldnt switcherooctl show both cards in openSUSE; it does on other distributions on the same laptop? Shouldn’t nvidia_drm be shown in the output of lsmod?

I can’t edit the original post, so I’ll add one additional piece of information I forgot here: If I set SUSE Prime to “nvidia” instead of “offload”, the external screen works but the internal laptop screen is black.

No if suse-prime is installed. suse-prime and switcherooctl are not compatible with each other, so you must choose. Since switcherooctl works way better and suse-prime is deprecated anyway I would have no doubt.

1 Like