Wayland breaks hybrid GPU / docking station setup

Hi everyone, I sucessfully updated my laptop (Dell Latitude) to KDE6 and by now got everything back to work the way I want.

However, the one thing I am still struggling with is Intel/nVidia Hybrid Grafik support for my docking station (HDMI and Display Port) dual monitor setup.
For years I had a reliable setup using X11, bumblebeed.service, intel-virtual-output and xrandr to create a virtual display which will be picked up just fine under Plasma.

Now with the recent update to KDE6 and the switch to Wayland this isn’t working any longer. The issue seems to be Wayland related because once I switch to X11 all is in order again.

So I thought that before I make an effort troubleshooting I’d check here if my setup is actually supposed to work? If not I will happily default back to X11 (didn’t notice a difference with Wayland anyway to be honest) and move on. If this should work, maybe with your help I can figure out what needs to be done?

By the way, I went through some initial troubleshooting here Dual Monitor support for Plasma6, Wayland and hybrid GPU (Intel+nVidia) setup - Plasma - EndeavourOS but think this subject is probably better discussed in this forum anyway.

  • OS: Arch
  • Device-1: Intel HD Graphics 530
  • Device-2: NVIDIA GM107GLM [Quadro M1000M]
  • Wayland
  • KDE6

Are you on EndeavourOS or pure Arch? They are not the same.

In the link you posted, this is no longer true?

https://wiki.archlinux.org/title/SDDM#Autologin

That should do the trick

TomZ

TheRaOct

5d

…it did :slight_smile:

Back to two monitors now, not even a reboot required.
Bluetooth is still broken though…I guess that will need a reboot.

Thanks for helping along

In that thread, you mention optrun, isn’t that for optimus? Is that still valid? Should you not use prime-run?

I do know that historically using prime in combination with multiple monitors has been a pain in the a**, if even possible.

I have not followed the development of it since I only use one monitor with prime so my CPU handles rendering normally and GPU is called upon with prime-run.

About the docking station.
I have a feeling this has to do with “reverse prime” and even though I have thought to myself, “lets completely learn this”, I always give up after getting frustratingly confused every time. :frowning:
I also have a feeling it might involve xrander, and not sure how that works in combination with wayland, you probably know more about that than I do.

Plain Arch on this laptop, but I stick around the EndevourOS forum because they are nice and knowledgeable people :slight_smile:

<In the link you posted, this is no longer true?>
That “it did the trick” was for getting back to X11, Wayland is still broken.

I may be confusing things because it’s been years since I set it up and haven’t touched it since. And like you wrote, it’s been a true PITA :slight_smile:
If I remember correctly Optimus was just a different way to talk to the nVidia card, but my knowledge is old and fading :slight_smile:

Yes it does, I had to configure my virtual output with Xrandr once.

And that’s exactly why I started this thread, if someone more knowledgeable tells me that this simply won’t work because of xyz not being implemented I am back to X11 and we are done.
However, if there are new ways to do this with Wayland I’d be happy to spend some time to get it to work and fully stay on Wayland for good.

They are, and you get murdered less for “asking the wrong question” than on Arch forums… :innocent:

I actually came in after the introduction of the hybrid prime drivers were introduced and have only used them so I have zero experience with optimus, so don’t listen too closely to what I say when it comes to that.

So just to be clear, you can not even log into wayland, but x11 works?
And on x11, the dock is the problem?

And you are on the latest nvidia drivers?
Output of inxi -G please.

Edit
Seems I am incorrect:
https://wiki.archlinux.org/title/NVIDIA_Optimus

Sorry no, X11 works, docked and undocked. I am writing this post from an X11 session with both monitors active.

What’s not working is Wayland+Docked. Wayland undocked works fine too.
With Wayland active I can get one external monitor, the one wired to the Intel GPU and the Laptop screen active in parallel. But I somehow am unable to activate the docks Display Port which is wired to the nVidia GPU.

So it’s really only about if this Optimus/Hybrid/whatever we call it thing is supposed to work with Wayland or not.

Supposed to? Most likely.
Is it though? No idea.

It really sounds like a reverse prime (that is what nvidia calls it) thing, you need to route the output to the specific port, and that is done with xrandr as far as I know.

And now we immediately steps in to confusion zone for me because if you read the arch wiki on Optimus I linked to above, when looking at point 4 " Use switchable graphics" it references to Prime instead:

4.1 Using PRIME render offload

This is the official NVIDIA method to support switchable graphics.

See PRIME#PRIME render offload for details.

So before I elaborate. We could try to figure it out, but it might take a lot of time and hair pulling, are you willing to do that or are you fine with using x11?
I ask because I could invest some time into this, but only if it actually leads to something. xD

Edit
Also, have you looked into this? GitHub - Askannz/optimus-manager: A Linux program to handle GPU switching on Optimus laptops.
It is referenced to in the arch wiki for optimus at point 4.6
Maybe you can just use something like that?
Or some of the other applications referenced to in that wiki?

You have a few options to try.

Exactly what I do with X11 now

Things are coming back as we start writing about this subject, yes Optimus is about switching between Intel and nVidia, I decided against Optimus back then because I have no need to switch between Intel and nVidia, but rather use them both in parallel because that is the only way to get a signal at both ports of my docking Station.
One port is wired to the Intel GPU and the second port is wired to nVidia.
From a users perspective a horrible hardware design in my opinion but hey…

And as the configuration nightmares :sweat: are coming back as we write about this subject I think I might better put this to rest and continue on with X11 until X11 finally breaks, or my laptop, whatever’s first. :grinning:

1 Like

I hear you brother, I REALLY do.

“HEY, it works, DO NOT FKN TOUCH ANYTHING NOW!!!” xD

Besides, I feel the big scary “ooooh, x11 is going away” is a tiiiiny bit over exaggerated, especially on a platform like Arch.

1 Like

Looks like I spoke to soon, there is in fact a new issue with KDE6 + X11 and intel-virtual-output.
The system freezes when when trying to come back from sleep. The only way to get it back seems to be via REISUB.

Now this is a proper issue I can’t live with, but I’ll do some research first before bringing this up here again.
Seems like this has occurred before KDE6 as well: pci Unable to change power state from D3cold to D0 / Newbie Corner / Arch Linux Forums

Mär 12 11:27:27 hermes wpa_supplicant[828]: nl80211: deinit ifname=wlp2s0 disabled_11b_rates=0
Mär 12 11:27:27 hermes kernel: snd_hda_intel 0000:01:00.1: Unable to change power state from D3cold to D0, device inaccessible
Mär 12 11:27:28 hermes kernel: snd_hda_codec_hdmi hdaudioC1D0: HDMI: invalid ELD buf size -1
Mär 12 11:27:28 hermes kernel: snd_hda_codec_hdmi hdaudioC1D0: HDMI: invalid ELD buf size -1
Mär 12 11:27:28 hermes kernel: snd_hda_codec_hdmi hdaudioC1D0: HDMI: invalid ELD buf size -1
Mär 12 11:27:28 hermes kernel: snd_hda_codec_hdmi hdaudioC1D0: HDMI: invalid ELD buf size -1
Mär 12 11:27:28 hermes kernel: snd_hda_codec_hdmi hdaudioC1D0: HDMI: invalid ELD buf size -1
Mär 12 11:27:28 hermes kernel: snd_hda_codec_hdmi hdaudioC1D0: HDMI: invalid ELD buf size -1
-- Boot 3f1dfe7a3f7c491dacd389f5eb95cdab --
Mär 12 14:09:33 hermes kernel: Linux version 6.6.21-1-lts (linux-lts@archlinux)

Would be really great with a inxi -Fazy

What hooks and modules do you have in mkinitcpio.conf?

My hooks below:

HOOKS=(base udev autodetect microcode modconf block encrypt btrfs filesystems keyboard resume fsck)

And the inxy output is as follows:

$ inxi -Fazy              
System:
  Kernel: 6.6.21-1-lts arch: x86_64 bits: 64 compiler: gcc v: 13.2.1
    clocksource: tsc avail: hpet,acpi_pm parameters: initrd=\intel-ucode.img
    initrd=\initramfs-linux-lts.img
    cryptdevice=UUID=5f5a8caa-fea4-4858-963d-a5fedd746e09:luksOS:allow-discards
    root=/dev/mapper/luksOS rootflags=subvol=@ rd.luks.options=discard rw
    resume=/dev/mapper/luksOS resume_offset=29160981 intel_iommu=on iommu=pt
  Desktop: KDE Plasma v: 6.0.1 tk: Qt v: N/A info: frameworks v: 6.0.0
    wm: kwin_x11 with: krunner vt: 2 dm: SDDM Distro: Arch Linux
Machine:
  Type: Laptop System: Dell product: Precision 7510 v: N/A
    serial: <superuser required> Chassis: type: 9 serial: <superuser required>
  Mobo: Dell model: 0M1YNP v: A00 serial: <superuser required> part-nu: 06D9
    uuid: <superuser required> UEFI: Dell v: 1.30.3 date: 11/17/2022
Battery:
  ID-1: BAT0 charge: 57.1 Wh (100.0%) condition: 57.1/91.0 Wh (62.7%)
    volts: 12.5 min: 11.4 model: LGC-LGC3.975 DELL RDYCT22 type: Li-ion
    serial: <filter> status: full
  Device-1: hidpp_battery_0 model: Logitech Wireless Mouse MX Master 3
    serial: <filter> charge: 100% (should be ignored) rechargeable: yes
    status: discharging
CPU:
  Info: model: Intel Core i7-6920HQ bits: 64 type: MT MCP arch: Skylake-S
    gen: core 6 level: v3 note: check built: 2015 process: Intel 14nm family: 6
    model-id: 0x5E (94) stepping: 3 microcode: 0xF0
  Topology: cpus: 1x cores: 4 tpc: 2 threads: 8 smt: enabled cache:
    L1: 256 KiB desc: d-4x32 KiB; i-4x32 KiB L2: 1024 KiB desc: 4x256 KiB
    L3: 8 MiB desc: 1x8 MiB
  Speed (MHz): avg: 900 min/max: 800/3800 scaling: driver: intel_pstate
    governor: powersave cores: 1: 900 2: 900 3: 900 4: 900 5: 900 6: 900 7: 900
    8: 900 bogomips: 46419
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
  Vulnerabilities:
  Type: gather_data_sampling status: Vulnerable: No microcode
  Type: itlb_multihit status: KVM: Split huge pages
  Type: l1tf mitigation: PTE Inversion; VMX: conditional cache flushes, SMT
    vulnerable
  Type: mds mitigation: Clear CPU buffers; SMT vulnerable
  Type: meltdown mitigation: PTI
  Type: mmio_stale_data mitigation: Clear CPU buffers; SMT vulnerable
  Type: retbleed mitigation: IBRS
  Type: spec_rstack_overflow status: Not affected
  Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via
    prctl
  Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer
    sanitization
  Type: spectre_v2 mitigation: IBRS, IBPB: conditional, STIBP: conditional,
    RSB filling, PBRSB-eIBRS: Not affected
  Type: srbds mitigation: Microcode
  Type: tsx_async_abort mitigation: TSX disabled
Graphics:
  Device-1: Intel HD Graphics 530 vendor: Dell driver: i915 v: kernel
    arch: Gen-9 process: Intel 14n built: 2015-16 ports: active: DP-1 off: eDP-1
    empty: DP-2, DP-3, HDMI-A-1, HDMI-A-2, HDMI-A-3 bus-ID: 00:02.0
    chip-ID: 8086:191b class-ID: 0300
  Device-2: NVIDIA GM107GLM [Quadro M1000M] vendor: Dell driver: nvidia
    v: 550.54.14 alternate: nouveau,nvidia_drm non-free: 545.xx+ status: current
    (as of 2024-02; EOL~2026-12-xx) arch: Maxwell code: GMxxx
    process: TSMC 28nm built: 2014-2019 pcie: gen: 1 speed: 2.5 GT/s lanes: 16
    link-max: gen: 3 speed: 8 GT/s bus-ID: 01:00.0 chip-ID: 10de:13b1
    class-ID: 0300
  Device-3: Sunplus Innovation Dell E5570 integrated webcam driver: uvcvideo
    type: USB rev: 2.0 speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 1-11:7
    chip-ID: 1bcf:2b91 class-ID: 0e02
  Device-4: Logitech HD Pro Webcam C920 driver: snd-usb-audio,uvcvideo
    type: USB rev: 2.0 speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 1-7.3:6
    chip-ID: 046d:082d class-ID: 0102 serial: <filter>
  Display: x11 server: X.Org v: 21.1.11 with: Xwayland v: 23.2.4
    compositor: kwin_x11 driver: X: loaded: intel unloaded: modesetting,vesa
    alternate: fbdev dri: iris gpu: i915 display-ID: :0 screens: 1
  Screen-1: 0 s-res: 5120x1440 s-dpi: 96 s-size: 1351x380mm (53.19x14.96")
    s-diag: 1403mm (55.25")
  Monitor-1: DP1 pos: primary,left res: 2560x1440 hz: 60 dpi: 93
    size: 700x390mm (27.56x15.35") diag: 801mm (31.55") modes: N/A
  Monitor-2: VIRTUAL6 pos: right res: 2560x1440 hz: 60 size: N/A modes: N/A
  Monitor-3: eDP1 size-res: N/A modes: N/A
  API: EGL v: 1.5 hw: drv: intel iris drv: nvidia platforms: device: 0
    drv: nvidia device: 1 drv: iris device: 2 drv: swrast surfaceless:
    drv: nvidia x11: drv: iris inactive: gbm,wayland
  API: OpenGL v: 4.6.0 compat-v: 4.5 vendor: intel mesa v: 24.0.2-arch1.2
    glx-v: 1.4 direct-render: yes renderer: Mesa Intel HD Graphics 530 (SKL GT2)
    device-ID: 8086:191b memory: 30.39 GiB unified: yes
  API: Vulkan v: 1.3.279 layers: 5 device: 0 type: discrete-gpu
    name: Quadro M1000M driver: nvidia v: 550.54.14 device-ID: 10de:13b1
    surfaces: xcb,xlib
Audio:
  Device-1: Intel 100 Series/C230 Series Family HD Audio vendor: Dell
    driver: snd_hda_intel v: kernel alternate: snd_soc_avs bus-ID: 00:1f.3
    chip-ID: 8086:a170 class-ID: 0403
  Device-2: NVIDIA GM107 High Definition Audio [GeForce 940MX] vendor: Dell
    driver: snd_hda_intel v: kernel pcie: speed: Unknown lanes: 63 link-max:
    gen: 6 speed: 64 GT/s bus-ID: 01:00.1 chip-ID: 10de:0fbc class-ID: 0403
  Device-3: DSEA A/S Sennheiser PC 8.2 USB
    driver: hid-generic,snd-usb-audio,usbhid type: USB rev: 2.0 speed: 12 Mb/s
    lanes: 1 mode: 1.1 bus-ID: 1-5.3:8 chip-ID: 1395:0099 class-ID: 0300
    serial: <filter>
  Device-4: Logitech HD Pro Webcam C920 driver: snd-usb-audio,uvcvideo
    type: USB rev: 2.0 speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 1-7.3:6
    chip-ID: 046d:082d class-ID: 0102 serial: <filter>
  API: ALSA v: k6.6.21-1-lts status: kernel-api tools: N/A
  Server-1: PipeWire v: 1.0.3 status: active with: 1: pipewire-pulse
    status: active 2: wireplumber status: active 3: pw-jack type: plugin
    tools: pactl,pw-cat,pw-cli,wpctl
Network:
  Device-1: Intel Ethernet I219-LM vendor: Dell driver: e1000e v: kernel
    port: N/A bus-ID: 00:1f.6 chip-ID: 8086:15b7 class-ID: 0200
  IF: enp0s31f6 state: up speed: 1000 Mbps duplex: full mac: <filter>
  Device-2: Intel Wireless 8260 driver: iwlwifi v: kernel pcie: gen: 1
    speed: 2.5 GT/s lanes: 1 bus-ID: 02:00.0 chip-ID: 8086:24f3 class-ID: 0280
  IF: wlp2s0 state: up mac: <filter>
  IF-ID-1: br-b543a88a1e2e state: down mac: <filter>
  IF-ID-2: docker0 state: down mac: <filter>
  Info: services: NetworkManager, systemd-timesyncd, wpa_supplicant
Bluetooth:
  Device-1: Intel Bluetooth wireless interface driver: btusb v: 0.8 type: USB
    rev: 2.0 speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 1-6:3 chip-ID: 8087:0a2b
    class-ID: e001
  Report: btmgmt ID: hci0 rfk-id: 3 state: up address: <filter> bt-v: 4.2
    lmp-v: 8 status: discoverable: no pairing: no class-ID: 6c010c
Drives:
  Local Storage: total: 2.29 TiB used: 1.47 TiB (64.5%)
  SMART Message: Unable to run smartctl. Root privileges required.
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Toshiba
    model: KXG60ZNV512G NVMe 512GB size: 476.94 GiB block-size: physical: 512 B
    logical: 512 B speed: 31.6 Gb/s lanes: 4 tech: SSD serial: <filter>
    fw-rev: 10604107 temp: 39.9 C scheme: GPT
  ID-2: /dev/sda maj-min: 8:0 vendor: Samsung model: SSD 860 QVO 2TB
    size: 1.82 TiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s
    tech: SSD serial: <filter> fw-rev: 1B6Q scheme: GPT
Partition:
  ID-1: / raw-size: 476.42 GiB size: 476.42 GiB (100.00%)
    used: 358.68 GiB (75.3%) fs: btrfs dev: /dev/dm-0 maj-min: 254:0
    mapped: luksOS
  ID-2: /boot raw-size: 511 MiB size: 510.7 MiB (99.95%)
    used: 261.1 MiB (51.1%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:1
  ID-3: /home raw-size: 476.42 GiB size: 476.42 GiB (100.00%)
    used: 358.68 GiB (75.3%) fs: btrfs dev: /dev/dm-0 maj-min: 254:0
    mapped: luksOS
  ID-4: /var/log raw-size: 476.42 GiB size: 476.42 GiB (100.00%)
    used: 358.68 GiB (75.3%) fs: btrfs dev: /dev/dm-0 maj-min: 254:0
    mapped: luksOS
Swap:
  Kernel: swappiness: 60 (default) cache-pressure: 100 (default) zswap: yes
    compressor: zstd max-pool: 20%
  ID-1: swap-1 type: zram size: 7.84 GiB used: 11 MiB (0.1%) priority: 100
    comp: zstd avail: lzo,lzo-rle,lz4,lz4hc,842 max-streams: 8 dev: /dev/zram0
  ID-2: swap-2 type: file size: 32 GiB used: 0 KiB (0.0%) priority: -2
    file: /mnt/@swap/swapfile
Sensors:
  System Temperatures: cpu: 59.0 C pch: 62.0 C mobo: 56.0 C
  Fan Speeds (rpm): cpu: 3349 fan-1: 3398
Info:
  Memory: total: 32 GiB available: 31.12 GiB used: 15.25 GiB (49.0%)
  Processes: 407 Power: uptime: 1h 47m states: freeze,mem,disk suspend: deep
    avail: s2idle wakeups: 0 hibernate: platform avail: shutdown, reboot,
    suspend, test_resume image: 12.44 GiB services: org_kde_powerdevil,upowerd
    Init: systemd v: 255 default: graphical tool: systemctl
  Packages: pm: pacman pkgs: 1813 libs: 430 tools: paru Compilers:
    clang: 17.0.6 gcc: 13.2.1 Shell: Zsh v: 5.9 running-in: konsole inxi: 3.3.33

btrfs, smart, easy restores with snapper/timeshift?
(just so I know in case I were to give advice that might make it worse)

You do not use any of the nvidia modules.
Might not have anything to do with this, but could be good to try.
Check the arch wiki, it is pretty straight forward how to add them.

IIRC there is also a nvidia-modesetting thing you prob should add in the kernel line in grub. I see you have intel_iommu=on iommu=pt and I think that is correct for hw acceleration, I THINK. (I have read about it somewhere)

To me it sounds like a power thing, but nvidia and modesetting COULD be the culprit, only way to find out is to try.

More importantly easy access to files which disappeared with an “oops” :slight_smile:
Timeshift was a little to oppinionated for me so I wrote my own little script which creates hourly snapshots and updates the Systemd-Boot files. But to be honest I never had to use the boot into snapshot feature. It’s usually just individual files I am after.

Need to read up on this. I guess I am not loading any nVidia modules because under normal/un-docked circumstances I don’t use the nVidia GPU?

Given that this setup has been working flawlessly for ~4 years something must have happened along the KDE6 upgrade, a new kernel, new nVidia driver, Bumblebee or in fact something KDE related. Got things to test…

It’s surprising how often those “oops” situations happen even though I am supposed to “know what I am doing”. :slight_smile:

I did not find any references to bumblebee in what you provided.
Bumblebee was one of the things that came to mind that might be a problem. It is also mentioned in the trouble section of the different arch wikis for nvidia things.

Please keep us updated if you manage to find something about this.