LizardByte / Sunshine

Self-hosted game stream host for Moonlight.
http://app.lizardbyte.dev/Sunshine/
GNU General Public License v3.0
17.95k stars 868 forks source link

Unable to run Sunshine Flatpak on Fedora atomic desktops with Wayland (Kinoite 40, Silverblue 40, Aurora, Bluefin) #2948

Open wiseindy opened 1 month ago

wiseindy commented 1 month ago

Is there an existing issue for this?

Is your issue described in the documentation?

Is your issue present in the latest beta/pre-release?

This issue is present in the latest pre-release

Describe the Bug

I've been trying to run the Sunshine flatpak on Fedora atomic desktops running Wayland, however, I keep seeing this error even after following this guide here https://docs.lizardbyte.dev/projects/sunshine/en/latest/about/setup.html#install

Attention! Sunshine detected these errors during startup. We STRONGLY RECOMMEND fixing them before streaming.

    Fatal: You must run [sudo setcap cap_sys_admin+p $(readlink -f $(which sunshine))] for KMS display capture to work! If you installed from AppImage or Flatpak, please refer to the official documentation: https://docs.lizardbyte.dev/projects/sunshine/en/latest/about/setup.html#install
    Fatal: Unable to find display or encoder during startup.
    Fatal: Please check that a display is connected and powered on. 

I've also searched and read through other issues (e.g. https://github.com/LizardByte/Sunshine/issues/2840), however, nothing has worked for me.

The flatpak works on X11, but not on Wayland.

I've tried the latest release as well as the pre-releases with no luck.

Expected Behavior

Sunshine flatpak should run on Wayland

Additional Context

No response

Host Operating System

Linux

Operating System Version

Fedora Kinoite 40

Architecture

64 bit

Sunshine commit or version

v2024.730.191523

Package

Linux - flatpak

GPU Type

Intel

GPU Model

Intel UHD Graphics 630

GPU Driver/Mesa Version

Mesa Intel(R) UHD Graphics 630 (CFL GT2)

Capture Method

None

Config

default

Apps

No response

Relevant log output

[2024:08:02:13:30:14]: Info: Sunshine version: v2024.730.191523
[2024:08:02:13:30:14]: Error: Couldn't load cuda: -1
[2024:08:02:13:30:14]: Info: Found display [/run/flatpak/wayland-0]
[2024:08:02:13:30:14]: Info: Found interface: zxdg_output_manager_v1(31) version 3
[2024:08:02:13:30:14]: Info: Found interface: wl_output(61) version 4
[2024:08:02:13:30:14]: Warning: Missing Wayland wire for wlr-export-dmabuf
[2024:08:02:13:30:14]: Error: Failed to gain CAP_SYS_ADMIN
[2024:08:02:13:30:14]: Info: /dev/dri/card0 -> i915
[2024:08:02:13:30:14]: Error: Failed to gain CAP_SYS_ADMIN
[2024:08:02:13:30:14]: Error: Couldn't get handle for DRM Framebuffer [127]: Probably not permitted
[2024:08:02:13:30:14]: Fatal: You must run [sudo setcap cap_sys_admin+p $(readlink -f $(which sunshine))] for KMS display capture to work!
If you installed from AppImage or Flatpak, please refer to the official documentation:
https://docs.lizardbyte.dev/projects/sunshine/en/latest/about/setup.html#install
[2024:08:02:13:30:14]: Info: Found display [/run/flatpak/wayland-0]
[2024:08:02:13:30:14]: Info: Found display [/run/flatpak/wayland-0]
[2024:08:02:13:30:14]: Info: Found interface: zxdg_output_manager_v1(31) version 3
[2024:08:02:13:30:14]: Info: Found interface: wl_output(61) version 4
[2024:08:02:13:30:14]: Info: Resolution: 2560x1440
[2024:08:02:13:30:14]: Info: Offset: 0x0
[2024:08:02:13:30:14]: Info: Logical size: 2560x1440
[2024:08:02:13:30:14]: Info: Name: HDMI-A-2
[2024:08:02:13:30:14]: Info: Found monitor: HP Inc. OMEN by HP 27/CNK7201MB7   
[2024:08:02:13:30:14]: Info: -------- Start of KMS monitor list --------
[2024:08:02:13:30:14]: Warning: Mismatch on expected Resolution compared to actual resolution: 0x0 vs 2560x1440
[2024:08:02:13:30:14]: Info: Monitor 0 is HDMI-A-2: HP Inc. OMEN by HP 27/CNK7201MB7   
[2024:08:02:13:30:14]: Info: --------- End of KMS monitor list ---------
[2024:08:02:13:30:14]: Error: Unable to initialize capture method
[2024:08:02:13:30:14]: Error: Platform failed to initialize
[2024:08:02:13:30:14]: Warning: Gamepad ds5 is disabled due to Permission denied
[2024:08:02:13:30:14]: Info: // Testing for available encoders, this may generate errors. You can safely ignore those errors. //
[2024:08:02:13:30:14]: Info: Trying encoder [nvenc]
[2024:08:02:13:30:14]: Info: System tray created
[2024:08:02:13:30:15]: Info: Encoder [nvenc] failed
[2024:08:02:13:30:15]: Info: Trying encoder [vaapi]
[2024:08:02:13:30:15]: Info: Encoder [vaapi] failed
[2024:08:02:13:30:15]: Info: Trying encoder [software]
[2024:08:02:13:30:15]: Info: Encoder [software] failed
[2024:08:02:13:30:15]: Fatal: Unable to find display or encoder during startup.
[2024:08:02:13:30:15]: Fatal: Please check that a display is connected and powered on.
[2024:08:02:13:30:15]: Error: Video failed to find working encoder
[2024:08:02:13:30:15]: Info: Configuration UI available at [https://localhost:47990]
[2024:08:02:13:30:15]: Info: Adding avahi service Sunshine
[2024:08:02:13:30:16]: Info: Avahi service Sunshine successfully established.
ReenigneArcher commented 1 month ago

What is the command you used to start Sunshine?

wiseindy commented 1 month ago

First I run setcap (got this from https://github.com/LizardByte/Sunshine/issues/2840), followed by flatpak run

sudo setcap cap_sys_admin+p $(readlink -f $(find /var/lib/flatpak/app -name sunshine | grep /bin/sunshine))
flatpak run dev.lizardbyte.app.Sunshine
ReenigneArcher commented 1 month ago

I have no idea if that command works. I expect it doesn't due to the sandboxing of flatpak.

This is the command in our docs for the pre-release.

sudo -i PULSE_SERVER=unix:$(pactl info | awk '/Server String/{print$3}') \
  flatpak run dev.lizardbyte.app.Sunshine

https://docs.lizardbyte.dev/projects/sunshine/en/master/about/setup.html#install

wiseindy commented 1 month ago

Yeah I tried that too. Sunshine doesn't start

$ sudo -i PULSE_SERVER=unix:$(pactl info | awk '/Server String/{print$3}') \
  flatpak run dev.lizardbyte.app.Sunshine
bwrap: Can't find source path /run/user/1000/pulse/native: Permission denied

The path does indeed exist

$ ls /run/user/1000/pulse/native
/run/user/1000/pulse/native
$ pactl info
Server String: /run/user/1000/pulse/native
Library Protocol Version: 35
Server Protocol Version: 35
Is Local: yes
Client Index: 91
Tile Size: 65472
User Name: redacted
Host Name: redacted
Server Name: PulseAudio (on PipeWire 1.0.7)
Server Version: 15.0.0
Default Sample Specification: float32le 2ch 48000Hz
Default Channel Map: front-left,front-right
Default Sink: alsa_output.pci-0000_00_1f.3.analog-stereo
Default Source: alsa_output.pci-0000_00_1f.3.analog-stereo.monitor
Cookie: ef46:e3d8

$ (pactl info | awk '/Server String/{print$3}')
/run/user/1000/pulse/native

I've tried giving additional permissions to Sunshine flatpak via Flatseal, tried a reboot as well. No luck

ReenigneArcher commented 1 month ago

Sorry, I don't know. Maybe @istori1 has some idea?

wiseindy commented 1 month ago

No worries, thank you for helping!

For the bwrap issue, I came across this https://github.com/LizardByte/Sunshine/discussions/569#discussioncomment-8654055, but it didn't help sadly

$ cp /usr/bin/bwrap /home/<user>/writable/dir/

$ sudo -i PULSE_SERVER=unix:$(pactl info | awk '/Server String/{print$3}') FLATPAK_BWRAP=/home/<user>/writable/dir/bwrap flatpak run dev.lizardbyte.app.Sunshine
bwrap: Can't find source path /run/user/1000/pulse/native: Permission denied

It's this combination of Flatpak + Wayland + Atomic desktop which is proving to be a challenge. Switching to X11 or a non-atomic desktop works.

Are there any reports of the above combination working for anyone?

ReenigneArcher commented 1 month ago

Atomic desktop

Honestly, I've never heard of it.

AesaraB commented 1 month ago

Atomic desktop

Honestly, I've never heard of it.

It's basically an operating system with much of the root filesystem locked down as read-only