Alternative to Steam Link/Sunshine?
-
I have an exclusive gaming PC. Ideally what I’d like to do is shove it in a closet or other vacant room to contain the heat and then stream games over LAN.
The problem with existing solutions is:
- They need a monitor connected
- The monitor to be powered on
- They don’t support varying refresh rates/resolutions. Only whatever is displayed on the connected monitor. I want to play on my 4k/60Hz TV in the living room for AAA visual spectacle games that work best with controller, and the 1440p/120Hz display in my office for FPS or otherwise fast-moving games that demand KBM, and the 5k monitor for photo/video editing.
- I haven’t had much success getting these working at all. Red screens, 1/4 screens, image noise, etc.
They’re literally just mirroring the screen of the connected display.
I really don’t want to have to buy a dedicated PC for each use-case. Does a solution like this exist? What are their pros and cons? Preferably something that doesn’t require a degree in software engineering.
Currently I am using Bazzite OS with 5700x + 6800xt, if that matters.
-
I have an exclusive gaming PC. Ideally what I’d like to do is shove it in a closet or other vacant room to contain the heat and then stream games over LAN.
The problem with existing solutions is:
- They need a monitor connected
- The monitor to be powered on
- They don’t support varying refresh rates/resolutions. Only whatever is displayed on the connected monitor. I want to play on my 4k/60Hz TV in the living room for AAA visual spectacle games that work best with controller, and the 1440p/120Hz display in my office for FPS or otherwise fast-moving games that demand KBM, and the 5k monitor for photo/video editing.
- I haven’t had much success getting these working at all. Red screens, 1/4 screens, image noise, etc.
They’re literally just mirroring the screen of the connected display.
I really don’t want to have to buy a dedicated PC for each use-case. Does a solution like this exist? What are their pros and cons? Preferably something that doesn’t require a degree in software engineering.
Currently I am using Bazzite OS with 5700x + 6800xt, if that matters.
Parsec? It has virtual monitors.
-
I have an exclusive gaming PC. Ideally what I’d like to do is shove it in a closet or other vacant room to contain the heat and then stream games over LAN.
The problem with existing solutions is:
- They need a monitor connected
- The monitor to be powered on
- They don’t support varying refresh rates/resolutions. Only whatever is displayed on the connected monitor. I want to play on my 4k/60Hz TV in the living room for AAA visual spectacle games that work best with controller, and the 1440p/120Hz display in my office for FPS or otherwise fast-moving games that demand KBM, and the 5k monitor for photo/video editing.
- I haven’t had much success getting these working at all. Red screens, 1/4 screens, image noise, etc.
They’re literally just mirroring the screen of the connected display.
I really don’t want to have to buy a dedicated PC for each use-case. Does a solution like this exist? What are their pros and cons? Preferably something that doesn’t require a degree in software engineering.
Currently I am using Bazzite OS with 5700x + 6800xt, if that matters.
I’m not sure if I am just picky but I have literally tried everything on brand new wifi 6 and access points and it just never is that perfect feeling, I always notice a tiny bit of input lag and I’m not sure if it’s possible to fix it at all. Playable, but I just can’t do it - miles ahead of cloud gaming still.
-
I have an exclusive gaming PC. Ideally what I’d like to do is shove it in a closet or other vacant room to contain the heat and then stream games over LAN.
The problem with existing solutions is:
- They need a monitor connected
- The monitor to be powered on
- They don’t support varying refresh rates/resolutions. Only whatever is displayed on the connected monitor. I want to play on my 4k/60Hz TV in the living room for AAA visual spectacle games that work best with controller, and the 1440p/120Hz display in my office for FPS or otherwise fast-moving games that demand KBM, and the 5k monitor for photo/video editing.
- I haven’t had much success getting these working at all. Red screens, 1/4 screens, image noise, etc.
They’re literally just mirroring the screen of the connected display.
I really don’t want to have to buy a dedicated PC for each use-case. Does a solution like this exist? What are their pros and cons? Preferably something that doesn’t require a degree in software engineering.
Currently I am using Bazzite OS with 5700x + 6800xt, if that matters.
Shameless plug: I’m the main developer of Games on Whales.
I’ve built Wolf exactly because of those shortcomings of other solutions: it runs fully headless, spins up virtual Wayland desktops that matches the resolution/FPS that’s requested from the clients and everything runs in Docker so it doesn’t pollute your host OS (just your HDD).
I’m currently working on a massive performance improvement in this PR if you’d like to try it, I’d suggest to pick that tag.
-
Shameless plug: I’m the main developer of Games on Whales.
I’ve built Wolf exactly because of those shortcomings of other solutions: it runs fully headless, spins up virtual Wayland desktops that matches the resolution/FPS that’s requested from the clients and everything runs in Docker so it doesn’t pollute your host OS (just your HDD).
I’m currently working on a massive performance improvement in this PR if you’d like to try it, I’d suggest to pick that tag.
That’s very cool. Thank you for creating this and for sharing it here. No shame necessary as it seems to fulfill exactly what I asked for.
Unfortunately Docker containers and terminal coding is a bit over my head.
Also YT doesn’t like to let me watch their videos so if you uploaded them somewhere else for sharing, that would be cool.
-
I have an exclusive gaming PC. Ideally what I’d like to do is shove it in a closet or other vacant room to contain the heat and then stream games over LAN.
The problem with existing solutions is:
- They need a monitor connected
- The monitor to be powered on
- They don’t support varying refresh rates/resolutions. Only whatever is displayed on the connected monitor. I want to play on my 4k/60Hz TV in the living room for AAA visual spectacle games that work best with controller, and the 1440p/120Hz display in my office for FPS or otherwise fast-moving games that demand KBM, and the 5k monitor for photo/video editing.
- I haven’t had much success getting these working at all. Red screens, 1/4 screens, image noise, etc.
They’re literally just mirroring the screen of the connected display.
I really don’t want to have to buy a dedicated PC for each use-case. Does a solution like this exist? What are their pros and cons? Preferably something that doesn’t require a degree in software engineering.
Currently I am using Bazzite OS with 5700x + 6800xt, if that matters.
Buy a headless plug, like this: https://www.amazon.com/EVanlak-DisplayPort-Headless-Emulator-3840x2160/dp/B07YLP1GG4
I use one to do VR, I can leave the computer in the corner and still do desktop stuff. Works great!
-
Buy a headless plug, like this: https://www.amazon.com/EVanlak-DisplayPort-Headless-Emulator-3840x2160/dp/B07YLP1GG4
I use one to do VR, I can leave the computer in the corner and still do desktop stuff. Works great!
It looks like this plug only emulates 4k@17Hz?
-
I just found a random one as an example, I don’t remember what I bought a few years ago
-
I have an exclusive gaming PC. Ideally what I’d like to do is shove it in a closet or other vacant room to contain the heat and then stream games over LAN.
The problem with existing solutions is:
- They need a monitor connected
- The monitor to be powered on
- They don’t support varying refresh rates/resolutions. Only whatever is displayed on the connected monitor. I want to play on my 4k/60Hz TV in the living room for AAA visual spectacle games that work best with controller, and the 1440p/120Hz display in my office for FPS or otherwise fast-moving games that demand KBM, and the 5k monitor for photo/video editing.
- I haven’t had much success getting these working at all. Red screens, 1/4 screens, image noise, etc.
They’re literally just mirroring the screen of the connected display.
I really don’t want to have to buy a dedicated PC for each use-case. Does a solution like this exist? What are their pros and cons? Preferably something that doesn’t require a degree in software engineering.
Currently I am using Bazzite OS with 5700x + 6800xt, if that matters.
I wrote a tutorial that might be of interest to you:
Virtual displays for Sunshine/Moonlight without dongle on amdgpu in Bazzite-Gnome - feddit.org
# Virtual displays for Sunshine/Moonlight without dongle on amdgpu in Bazzite-Gnome ## Introduction Users of GPUs leveraging the amdgpu driver can create virtual displays without using any dongle for use with Sunshine. This can be done via a kernel parameter as described here [https://www.reddit.com/r/linux_gaming/comments/199ylqz/streaming_with_sunshine_from_virtual_screens/] and here [https://paulines-gallery.myhome-server.de/shaarli/?UlteqA]. However we opt for bringing up the screen during multiuser-target. This has the advantage of a faster boottime and it keeps the splash screen intact. ## Preparation ### Install Sunshine To install Sunshine open a terminal and enter: ujust setup-sunshine ### Identify ports You need to identify actual ports on your GPU to map the virtual display to. The following command will list potential ports (DP-1 - DP-X, HDMI-1 - HDMI-X). for p in /sys/class/drm/*/status; do con=${p%/status}; echo -n "${con#*/card?-}: "; cat $p; done Any disconnected port will do. ### Prepare EDID firmware to accomodate your target screen To make the kernel aware of the proper resolution and refresh rate of your virtual display we need an EDID firmware file. This can either be retrieved for example here [1] [https://git.linuxtv.org/v4l-utils.git/tree/utils/edid-decode/data]. Alternatively you can also create a tailored EDID file with this handy tool [2] [https://github.com/akatrevorjay/edid-generator]. The tool takes a modeline from xorg and generates the EDID bin from it. To get a modeline for your target resolution you can use this website [3] [https://arachnoid.com/modelines/]. To prepare and use edid-generator on Bazzite-Gnome proceed as follows in a terminal: ujust distrobox-assemble //Choose Ubuntu distrobox enter ubuntu sudo apt install zsh edid-decode automake dos2unix mkdir -p ~/build/ cd ~/build/ git clone https://github.com/akatrevorjay/edid-generator cd edid-generator ./modeline2edid - <<< 'Modeline "2560x1600" 348.16 2560 2752 3032 3504 1600 1601 1604 1656 -HSync +Vsync' //Replace with your modeline in the single brackets make You should now have a .bin file named according to the content of the first brackets in the modline. Copy this into your local firmware folder. Carry on in the terminal: mkdir -p /usr/local/lib/firmware sudo cp 2560x1600.bin /usr/local/lib/firmware/ ### Test your target display We will now create a helper script to enable your virtual display. Open the editor of your choice and paste the following, then replace DP-2 with a non connected interface and 2560x1600.bin with your EDID file: #!/bin/bash cat /usr/local/lib/firmware/2560x1600.bin > /sys/kernel/debug/dri/0/DP-2/edid_override echo on > /sys/kernel/debug/dri/0/DP-2/force echo 1 > /sys/kernel/debug/dri/0/DP-2/trigger_hotplug Save the file as “enable-screens.sh [http://enable-screens.sh]”. Then make it available to the root user: sudo cp enable-screens.sh /usr/local/sbin/ sudo chmod +x /usr/local/sbin/enable-screens.sh You can now test if everything works: sudo /usr/local/sbin/enable-screens.sh gnome-control-center display The control center should now start up with the display section and show the newly created display. ## Automation ### Automatically bring up screen via systemd You can trigger the script on startup via a systemd unit file. For this open the editor of your choice and paste the following: [Unit] Description=Enable Virtual Displays [Service] ExecStart=/usr/bin/bash /usr/local/sbin/enable-screens.sh [Install] WantedBy=multi-user.target Save under “/etc/systemd/system/enable-screens.service”. Then enable the service and reboot: sudo systemctl daemon-reload sudo systemctl enable enable-screens.service systemctl reboot After the system has restarted check your display is available in control center: gnome-control-center display ### Autostarting Sunshine Sunshine autostart is currently not working in bazzite-gnome [4] [https://github.com/ublue-os/bazzite/issues/2044]. To work around this use xdg autostart. sudo cp /usr/share/applications/sunshine.desktop /etc/xdg/autostart/ ### Switching screens in Sunshine Gnome has recently added gdctl as a tool to manipulate screen layout across X and Wayland. This can be used in a Sunlight application in “Do Command” and “Undo Command” to setup the appropriate screen configuration. I use this to enable a multiscreen setup in desktop mode, but I also have an exclusive desktop mode just on my tablet and exclusive Big Picture to my tablet. For the multiscreen “Do Command” add (I use scale on the small tablet screen to get a readable UI): gdctl set --logical-monitor --primary --monitor DP-1 --logical-monitor --monitor DP-2 --scale 2 --right-of DP-1 In “Undo Command”: gdctl set --logical-monitor --primary --monitor DP-1 You can now connect to the application from your device with Moonlight. ## Conclusion I hope this little guide was helpful. Please put pointers to problems and I will try to correct them in the original post. Feel free to also share your successes. Enjoy your virtual display and Sunshine/Moonlight.
(feddit.org)
It describes setting up Sunshine on Bazzite without a HDMI dongle. Hope this helps.
-
I wrote a tutorial that might be of interest to you:
Virtual displays for Sunshine/Moonlight without dongle on amdgpu in Bazzite-Gnome - feddit.org
# Virtual displays for Sunshine/Moonlight without dongle on amdgpu in Bazzite-Gnome ## Introduction Users of GPUs leveraging the amdgpu driver can create virtual displays without using any dongle for use with Sunshine. This can be done via a kernel parameter as described here [https://www.reddit.com/r/linux_gaming/comments/199ylqz/streaming_with_sunshine_from_virtual_screens/] and here [https://paulines-gallery.myhome-server.de/shaarli/?UlteqA]. However we opt for bringing up the screen during multiuser-target. This has the advantage of a faster boottime and it keeps the splash screen intact. ## Preparation ### Install Sunshine To install Sunshine open a terminal and enter: ujust setup-sunshine ### Identify ports You need to identify actual ports on your GPU to map the virtual display to. The following command will list potential ports (DP-1 - DP-X, HDMI-1 - HDMI-X). for p in /sys/class/drm/*/status; do con=${p%/status}; echo -n "${con#*/card?-}: "; cat $p; done Any disconnected port will do. ### Prepare EDID firmware to accomodate your target screen To make the kernel aware of the proper resolution and refresh rate of your virtual display we need an EDID firmware file. This can either be retrieved for example here [1] [https://git.linuxtv.org/v4l-utils.git/tree/utils/edid-decode/data]. Alternatively you can also create a tailored EDID file with this handy tool [2] [https://github.com/akatrevorjay/edid-generator]. The tool takes a modeline from xorg and generates the EDID bin from it. To get a modeline for your target resolution you can use this website [3] [https://arachnoid.com/modelines/]. To prepare and use edid-generator on Bazzite-Gnome proceed as follows in a terminal: ujust distrobox-assemble //Choose Ubuntu distrobox enter ubuntu sudo apt install zsh edid-decode automake dos2unix mkdir -p ~/build/ cd ~/build/ git clone https://github.com/akatrevorjay/edid-generator cd edid-generator ./modeline2edid - <<< 'Modeline "2560x1600" 348.16 2560 2752 3032 3504 1600 1601 1604 1656 -HSync +Vsync' //Replace with your modeline in the single brackets make You should now have a .bin file named according to the content of the first brackets in the modline. Copy this into your local firmware folder. Carry on in the terminal: mkdir -p /usr/local/lib/firmware sudo cp 2560x1600.bin /usr/local/lib/firmware/ ### Test your target display We will now create a helper script to enable your virtual display. Open the editor of your choice and paste the following, then replace DP-2 with a non connected interface and 2560x1600.bin with your EDID file: #!/bin/bash cat /usr/local/lib/firmware/2560x1600.bin > /sys/kernel/debug/dri/0/DP-2/edid_override echo on > /sys/kernel/debug/dri/0/DP-2/force echo 1 > /sys/kernel/debug/dri/0/DP-2/trigger_hotplug Save the file as “enable-screens.sh [http://enable-screens.sh]”. Then make it available to the root user: sudo cp enable-screens.sh /usr/local/sbin/ sudo chmod +x /usr/local/sbin/enable-screens.sh You can now test if everything works: sudo /usr/local/sbin/enable-screens.sh gnome-control-center display The control center should now start up with the display section and show the newly created display. ## Automation ### Automatically bring up screen via systemd You can trigger the script on startup via a systemd unit file. For this open the editor of your choice and paste the following: [Unit] Description=Enable Virtual Displays [Service] ExecStart=/usr/bin/bash /usr/local/sbin/enable-screens.sh [Install] WantedBy=multi-user.target Save under “/etc/systemd/system/enable-screens.service”. Then enable the service and reboot: sudo systemctl daemon-reload sudo systemctl enable enable-screens.service systemctl reboot After the system has restarted check your display is available in control center: gnome-control-center display ### Autostarting Sunshine Sunshine autostart is currently not working in bazzite-gnome [4] [https://github.com/ublue-os/bazzite/issues/2044]. To work around this use xdg autostart. sudo cp /usr/share/applications/sunshine.desktop /etc/xdg/autostart/ ### Switching screens in Sunshine Gnome has recently added gdctl as a tool to manipulate screen layout across X and Wayland. This can be used in a Sunlight application in “Do Command” and “Undo Command” to setup the appropriate screen configuration. I use this to enable a multiscreen setup in desktop mode, but I also have an exclusive desktop mode just on my tablet and exclusive Big Picture to my tablet. For the multiscreen “Do Command” add (I use scale on the small tablet screen to get a readable UI): gdctl set --logical-monitor --primary --monitor DP-1 --logical-monitor --monitor DP-2 --scale 2 --right-of DP-1 In “Undo Command”: gdctl set --logical-monitor --primary --monitor DP-1 You can now connect to the application from your device with Moonlight. ## Conclusion I hope this little guide was helpful. Please put pointers to problems and I will try to correct them in the original post. Feel free to also share your successes. Enjoy your virtual display and Sunshine/Moonlight.
(feddit.org)
It describes setting up Sunshine on Bazzite without a HDMI dongle. Hope this helps.
I did see that (and even commented on it) but I’m not nearly smart enough for that.
-
Maybe you have to wait for Artemis/Apollo becoming available for Linux. They seem to be looking into Linux support.
-
Shameless plug: I’m the main developer of Games on Whales.
I’ve built Wolf exactly because of those shortcomings of other solutions: it runs fully headless, spins up virtual Wayland desktops that matches the resolution/FPS that’s requested from the clients and everything runs in Docker so it doesn’t pollute your host OS (just your HDD).
I’m currently working on a massive performance improvement in this PR if you’d like to try it, I’d suggest to pick that tag.
I really love your project but couldn’t get it up and running on Bazzite due to only supporting podman out of the box. Do you know of a good guide for Bazzite?
-
Shameless plug: I’m the main developer of Games on Whales.
I’ve built Wolf exactly because of those shortcomings of other solutions: it runs fully headless, spins up virtual Wayland desktops that matches the resolution/FPS that’s requested from the clients and everything runs in Docker so it doesn’t pollute your host OS (just your HDD).
I’m currently working on a massive performance improvement in this PR if you’d like to try it, I’d suggest to pick that tag.
Games on Whales… the naming department was on-fire this day.
-
Parsec? It has virtual monitors.
That’s what I use
Edit: I see you’re using linux though, I can’t really speak to its performance there as I only use it for windows
-
I really love your project but couldn’t get it up and running on Bazzite due to only supporting podman out of the box. Do you know of a good guide for Bazzite?
We support podman, you just have to enable the Podman System Service so that Wolf can use that socket to spin up and down additional containers.
I really should add a section in the quickstart guide…
-
That’s very cool. Thank you for creating this and for sharing it here. No shame necessary as it seems to fulfill exactly what I asked for.
Unfortunately Docker containers and terminal coding is a bit over my head.
Also YT doesn’t like to let me watch their videos so if you uploaded them somewhere else for sharing, that would be cool.
Unfortunately Docker containers and terminal coding is a bit over my head.
That’s absolutely understandable, getting comfortable with the terminal is definitely the first step to be able to shove that PC in a closet.
Ideally, in the meantime I’ll have made all this stack even easier to run!
-
Games on Whales… the naming department was on-fire this day.
Probably the only thing I wouldn’t change in the project after all these years!
-
Maybe you have to wait for Artemis/Apollo becoming available for Linux. They seem to be looking into Linux support.
Interesting, I’ll keep an eye on that, thanks for the heads up.
-
I have an exclusive gaming PC. Ideally what I’d like to do is shove it in a closet or other vacant room to contain the heat and then stream games over LAN.
The problem with existing solutions is:
- They need a monitor connected
- The monitor to be powered on
- They don’t support varying refresh rates/resolutions. Only whatever is displayed on the connected monitor. I want to play on my 4k/60Hz TV in the living room for AAA visual spectacle games that work best with controller, and the 1440p/120Hz display in my office for FPS or otherwise fast-moving games that demand KBM, and the 5k monitor for photo/video editing.
- I haven’t had much success getting these working at all. Red screens, 1/4 screens, image noise, etc.
They’re literally just mirroring the screen of the connected display.
I really don’t want to have to buy a dedicated PC for each use-case. Does a solution like this exist? What are their pros and cons? Preferably something that doesn’t require a degree in software engineering.
Currently I am using Bazzite OS with 5700x + 6800xt, if that matters.
This does everything you need with a super simple setup, but all the screen trickery is Windows only unfortunately. Still I can heartily recommend it: https://github.com/ClassicOldSong/Apollo
-
This does everything you need with a super simple setup, but all the screen trickery is Windows only unfortunately. Still I can heartily recommend it: https://github.com/ClassicOldSong/Apollo
It’s not currently working for Linux, unfortunately