Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

SysDVR Switch: Difference between revisions

From GameBrew
No edit summary
No edit summary
Line 1: Line 1:
{{Infobox Switch Homebrews
{{Infobox Switch Homebrews
|title=SysDVR
|title=SysDVR
|image=sysdvrswitch.png
|image=sysdvrnx.png
|description=Stream switch games to your PC via USB or network.
|description=Stream switch games to your PC via USB or network.
|author=exelix11
|author=exelix11
|lastupdated=2023/04/30
|lastupdated=2023/05/05
|type=Plugins
|type=Plugins
|version=5.5.5
|version=5.5.2.5
|license=GPL-2.0
|license=GPL-2.0
|download=https://dlhb.gamebrew.org/switchhomebrews/sysdvrswitch.7z
|download=https://dlhb.gamebrew.org/switchhomebrews/sysdvrswitch.7z
Line 13: Line 13:
|donation=https://ko-fi.com/exelix11
|donation=https://ko-fi.com/exelix11
}}
}}
{{#seo:
SysDVR is a sysmodule that enables users to capture and stream the output of a game in real-time to their PC through either a USB or network connection.  
|title=Switch Homebrew Apps (Plugins) - GameBrew
|title_mode=append
|image=sysdvrswitch.png
|image_alt=SysDVR
}}
SysDVR is a highly useful sysmodule that enables users to capture and stream the output of a game in real-time to their PC through either a USB or network connection. Essentially, this means that individuals can play their Nintendo Switch games on a larger screen, such as their computer monitor, while still utilizing the Switch console as the primary gaming device.
 
The benefits of using SysDVR are numerous. For starters, it allows gamers to play their favorite Switch games on a larger display, which can greatly enhance the overall gaming experience. Moreover, it is an excellent way to share gameplay with others, as the captured footage can be streamed to a wider audience via various streaming platforms.
 
One of the main features of SysDVR is its versatility in terms of connectivity options. Users can connect their Switch console to their PC via either a USB or network connection, depending on their preferences and available hardware. USB connectivity is a great option for those who have a compatible USB capture card, while network connectivity is ideal for those who prefer to stream their gameplay over the internet.
 
Another notable feature of SysDVR is its user-friendly interface. The sysmodule is designed to be easy to use, even for those who are not particularly tech-savvy. Users can quickly and easily adjust the various settings, such as resolution and frame rate, to achieve the desired level of video quality.
 
Perhaps one of the most significant advantages of using SysDVR is the ability to record gameplay footage for later viewing. This is particularly useful for those who want to review their gameplay or create gaming content, such as walkthroughs or Let's Play videos. The captured footage can be saved to the user's PC and edited using various video editing software, providing ample opportunities for creative expression.


== Features ==
== Features ==
* Cross platform, can stream to Windows, Mac and Linux.
* Cross platform, can stream to Windows, Mac and Linux.
* Stream via USB or Wifi.
* Stream via USB or Wifi.
* '''Video quality is fixed to 720p @ 30fps with h264 compression, this is a hardware limit'''.
* Video quality is fixed to 720p @ 30fps with h264 compression, this is a hardware limit.
* Audio quality is fixed to 16bit PCM @ 48kHz stereo. Not compressed.
* Audio quality is fixed to 16bit PCM @ 48kHz stereo. Not compressed.
* Very low latency with an optimal setup, most games are playable!
* Very low latency with an optimal setup, most games are playable!


==Usage==
==Installation==
===Setup===
===Requirements===
====Requirements====
*To use SysDVR your console must be hacked, as in be running a CFW.
* To use SysDVR your console must be hacked, as in be running a CFW
*Make sure you're using latest version of Atmosphere.
* Users reported that SysDVR doesn't seem to cause bans
* Only games that support video recording (long press of the capture button) are compatible with SysDVR
** There is an [[DVR-Patches Switch|experimental patch]] to enable support for all games, use it at your own risk
* To stream homebrew you must launch a game that supports video recording with title takeover, aka keeping R pressed while launching the game will actually launch the homebrew launcher
* Stream quality depends heavily on the environment, you need a good usb wire or a stable connection
** Stable connection means good WiFi signal strength on both pc and switch, NOT your internet speed
====Setting up SysDVR====
Before proceeding, ensure that you are using the latest version of [[Atmosphere Switch]]. While other custom firmware (CFW) options may work, support will not be provided for them.
 
To install SysDVR, download the 7z file here, where you'll find the following options:
 
* SysDVR.zip is the "full" version, which can stream using both network and USB modes and comes with a homebrew app to switch between them.
* SysDVR-USB-Only.zip will only stream via USB, but it uses less memory and should run alongside multiple sysmodules. Unless you have specific memory requirements, you should use the full version, regardless of how you want to stream.
 
Download one of the builds and extract it to the root of your SD card. If you use FTP, be sure to restart your console. These releases are intended to work with Atmosphere. If you are using different CFWs, you will need to rename the folders accordingly.
 
By default, SysDVR will stream with Simple network mode. To switch between modes and set the default one, use the SysDVR Settings homebrew included in the zip file.
 
'''Optionally, you can install recording patches to support most games. By default, some games may not be compatible with SysDVR, but you can download [[DVR-Patches Switch]] to add support for them. Please read the warnings and steps in the dvr-patches repository'''.
 
====SysDVR Client setup====
To improve performance, the SysDVR-Client application acts as a bridge between SysDVR and your video player. If you encounter any issues, refer to the troubleshooting section.
 
To download SysDVR-Client, download the [https://github.com/exelix11/SysDVR/releases SysDVR-Client.7z] file and extract the SysDVR-Client.7z file, which is a single release compatible with all supported operating systems. The file contains two executables: SysDVR-Client.exe (or SysDVR-Client.dll on Linux and Mac) and SysDVR-ClientGUI.exe. The former is a command-line application that requires launching through the terminal or cmd on Windows, while the latter is a GUI launcher for SysDVR-Client, exclusive to Windows, designed for less experienced users. Since version 5.5, the releases also include the SysDVR-Client.flatpak file, which is a flatpak package for easy installation on Linux.
 
=====Windows setup=====
# To set up SysDVR-Client on Windows, download and install the latest x64 version of [https://dotnet.microsoft.com/download .NET] 6 or newer. Older versions like framework or 5 won't work.
# You may also need to install the latest x64 MSVC libs from [https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads Microsoft], although this is not always necessary.
# Once installed, launch SysDVR-Client.exe from cmd or double click SysDVR-ClientGUI. The latter is a user-friendly GUI that automatically configures streaming modes and creates shortcuts for them.
 
=====Linux setup=====
The SysDVR-Client version 5.5 is now available in a flatpak package, but it's still experimental and only compatible with x64 systems. If you encounter any issues, you can try the manual installation process instead.
 
The installation commands provided are intended for the default Ubuntu package manager. If you're using a different distribution, you'll need to find equivalent commands on your own.


Arm devices like Raspberry Pi 3 and 4 are only supported through manual installation, and their support is subject to the availability of .NET. Older boards such as Raspberry Pi 2 or 1 are not supported by .NET.
A few info to keep in mind:
*Users reported that SysDVR doesn't seem to cause bans.
*To stream homebrew you must launch a game that supports video recording with title takeover, aka keeping R pressed while launching the game.
*Stream quality depends heavily on the environment, you need a good USB wire or a stable connection (i.e. good WiFi signal strength on both PC and Switch).
*Only games that support video recording (long press of the capture button) are compatible with SysDVR.  
**There is an experimental patch to enable support for all games, use it at your own risk.


======Flatpak install======
===SysDVR setup===
# For the flatpak installation, first install flatpak using your package manager with the command sudo apt install flatpak.
Go to the [https://github.com/exelix11/SysDVR/releases Releases page], you'll find the following releases:
# Next, download the '''SysDVR-Client.flatpak''' file from the [https://github.com/exelix11/SysDVR/releases Releases tab].
*<code>SysDVR.zip</code> - "Full" version, can stream using both network and USB modes and comes with an homebrew app to switch between them.
# Install the flatpak using the command '''flatpak --user install SysDVR-Client.flatpak'''.
*<code>SysDVR-USB-Only.zip</code> - Only stream via USB but uses less memory and should run alongside multiple sysmodules.
# Finally, you can launch SysDVR-Client with the command '''flatpak run com.github.exelix11.sysdvr'''. Note that since you installed it from flatpak, you'll need to use this command instead of SysDVR-Client to launch the client.
*Unless you have specific memory requirements you should use the full version, regardless of how you want to stream.


======Manual install======
How to setup:
# For manual installation, you'll need to download and install [https://dotnet.microsoft.com/download .NET] version 6 or newer. Mono and .NET Core will not work.
*Download one of the builds and extract it in the root of your SD card, if you use FTP make sure to reboot your console.
# Install SDL2 sudo apt install libsdl2-dev
*Releases are meant to work on atmosphere. If you're using different CFWs you'll have to rename the folders accordingly.
# Install ffmpeg sudo apt install ffmpeg
*By default SysDVR will stream with Simple network mode, to switch between modes and set the default one you can use the SysDVR Settings homebrew included in the zip.
#* You need ffmpeg 5.1.x
#* In particular we need libavcodec59, this may not be available in your package manager, if that's the case you'll have to build ffmpeg from source
#* Failing to install the exact version of ffmpeg will result in a module not found error when you launch SysDVR-Client
# You should be ready, open a terminal in the same folder where you extracted the zip and check if it works by running dotnet SysDVR-Client.dll --help


Once you've completed the manual installation, open a terminal in the same folder where you extracted the zip and run the command dotnet SysDVR-Client.dll --help to check if it works. Note that since you're not on Windows, you'll need to use the command dotnet SysDVR-Client.dll instead of SysDVR-Client to launch the client.
(Optional) Install recording patches to support most games:
*With the default configuration some games are not compatible with SysDVR, you can however download [[DVR-Patches Switch|dvr-patches]] to add support for most games.
*Read the warnings and steps in the [https://github.com/exelix11/dvr-patches/ dvr-patches repo]


======MacOS setup======
===SysDVR Client setup===
The install commands use brew, if you use a different package manager you'll have to find equivalent commands on your own.
SysDVR-Client is a PC application that acts as a bridge between SysDVR and your video player, it's needed to improve performances by using some custom-built streaming protocols. It contains the following files:
*<code>SysDVR-Client.exe</code> (or SysDVR-Client.dll on linux and mac) - The actual client. It's a command line application and requires to be launched via terminal or cmd on Windows.
*<code>SysDVR-ClientGUI.exe</code> - A GUI launcher for SysDVR-Client, this is Windows-only and it's meant to make things easier for less experienced users.
*Since 5.5 the releases also contain the SysDVR-Client.flatpak file, this is a flatpak package that can be used to easily install SysDVR-Client on linux.


# Download and install [https://dotnet.microsoft.com/download .NET].
Windows setup:
# You need .NET 6 or newer, mono and .NET core will not work
*Download and install latest [https://dotnet.microsoft.com/download .NET] (6 or newer only). Make sure to get the x64 version [https://aka.ms/dotnet/6.0/windowsdesktop-runtime-win-x64.exe direct link].
# You must install the native .NET version for your device: if you have an apple silicon mac download the arm64 version, if you have an intel mac download the x64 version. Running SysDVR with rosetta will not work
*This is not always needed but you may need to install latest x64 MSVC libs from [https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads Microsoft].
# Install ffmpeg brew install ffmpeg@5.1.2
*You should be ready, launch <code>SysDVR-Client.exe</code> from cmd or double click SysDVR-ClientGUI.
# Install SDL2 brew install SDL2
**SysDVR-ClientGUI is a user-friendly GUI for SysDVR-Client that will automatically configure streaming modes and create shortcuts for them.
# Install libusb brew install libusb


You should be ready, open a terminal in the same folder where you extracted the zip and check if it works by running dotnet SysDVR-Client.dll --help
For Linux and MacOS, please refer to the [https://github.com/exelix11/SysDVR/wiki/SysDVR-Client-setup wiki].
Note that the guide uses SysDVR-Client to launch the client, since you are not on windows you will have to use dotnet SysDVR-Client.dll instead with the terminal opened in the same folder as the extracted zip


====USB Driver setup====
===USB Driver setup===
To stream via USB, it's necessary to install the custom SysDVR driver. However, if you're only using network modes, you can skip this step. In order to use standard drivers, SysDVR now presents itself as an Android device, which may be displayed as Google Inc. Nexus/Pixel Device (fastboot) on some operating systems. Windows should display it correctly as SysDVR.
To stream via USB, it's necessary to install the custom SysDVR driver. However, if you're only using network modes, you can skip this step. In order to use standard drivers, SysDVR now presents itself as an Android device, which may be displayed as <code>Google Inc. Nexus/Pixel Device (fastboot)</code> on some operating systems. Windows should display it correctly as SysDVR.


If you did this before version 5.5, you must do it again since the USB implementation has changed. If you have the full version of SysDVR, launch the SysDVR Settings homebrew on your console and switch to USB streaming mode before continuing.
If you did this before version 5.5, you must do it again since the USB implementation has changed. If you have the full version of SysDVR, launch the SysDVR Settings homebrew on your console and switch to USB streaming mode before continuing.
Line 114: Line 70:
To avoid any issues, do not use a USB C to USB C cable. Instead, use a standard USB A to USB C cable.
To avoid any issues, do not use a USB C to USB C cable. Instead, use a standard USB A to USB C cable.


=====Driver setup on windows=====
Driver setup on Windows:
# Driver setup on Windows involves plugging your switch into the computer and launching SysDVR-ClientGUI.exe.
* Driver setup on Windows involves plugging your switch into the computer and launching <code>SysDVR-ClientGUI.exe</code>.
# Then, select USB (requires setting up USB drivers) and click launch.
* Then, select <code>USB (requires setting up USB drivers)</code> and click launch.
# If this is your first time using SysDVR, you will be prompted to install the driver. Click "yes" and follow the steps. It may take a few minutes, so be patient. If you don't see the driver install prompt and USB streaming doesn't work, you probably have an old version of SysDVR-Client.
* If this is your first time using SysDVR, you will be prompted to install the driver. Click "yes" and follow the steps. It may take a few minutes, so be patient. If you don't see the driver install prompt and USB streaming doesn't work, you probably have an old version of SysDVR-Client.
# If everything goes correctly, unplug the console for a few seconds. The driver is now installed, and you can stream via USB. If you encounter any errors, you can try installing the driver manually.
* If everything goes correctly, unplug the console for a few seconds. The driver is now installed, and you can stream via USB. If you encounter any errors, you can try installing the driver manually.


=====Driver setup on linux=====
Driver setup for [https://github.com/exelix11/SysDVR/wiki/SysDVR-Client-setup follow Linux and MacOS].
# Driver setup on Linux involves installing libusb using your package manager. For example, on Ubuntu, you can use the command "sudo apt install libusb-1.0-0".
# Additionally, install the sysdvr udev rule to allow USB access to the console without root. This can be done with the command "sudo wget https://raw.githubusercontent.com/exelix11/SysDVR/master/Client/linux/sysdvr.rules -O /etc/udev/rules.d/99-sysdvr.rules && sudo udevadm control --reload-rules".
# If you prefer to do it manually, download the udev rule file from here, move it to /etc/udev/rules.d/ (you may need to create the folder), and run "sudo udevadm control --reload-rules" to reload the rules.
# Instructions may vary if you have an uncommon distro.


=====Driver setup on mac=====
==User guide==
For Mac, installing the libusb library should be enough. Simply run "brew install libusb".
The complete guide can be found on [https://github.com/exelix11/SysDVR/wiki SysDVR wiki].


===Streaming===
===Streaming===
Line 134: Line 86:
There are three options to choose from:
There are three options to choose from:


# '''TCP Bridge (recommended)''': This option allows you to stream with the highest possible quality via network. To set this up, you'll need to install SysDVR-Client on your PC and follow the TCP Bridge guide.
* [[#TCP Bridge mode|TCP Bridge]] (recommended) - This option allows you to stream with the highest possible quality via network. To set this up, you'll need to install SysDVR-Client on your PC and follow the TCP Bridge guide.
# '''USB''': This option also allows for high-quality streaming, but only via USB and cannot be used when docked. To get started, you'll need to install SysDVR-Client on your PC and the custom USB driver (both only needed for the first time), and then follow the USB streaming guide.
* [[#USB streaming|USB]] - This option also allows for high-quality streaming, but only via USB and cannot be used when docked. To get started, you'll need to install SysDVR-Client on your PC and the custom USB driver (both only needed for the first time), and then follow the USB streaming guide.
# '''Simple network mode''': This option provides decent quality streaming directly to a video player via network, but may have high latency or not look as good as the other modes. It doesn't require the client app, so you can use it to stream to your phone or smart TV. To get started, follow the simple network mode guide.
* [[#Network RTSP mode (default)|Simple network mode]] (Network RTSP mode) - This option provides decent quality streaming directly to a video player via network, but may have high latency or not look as good as the other modes. It doesn't require the client app, so you can use it to stream to your phone or smart TV. To get started, follow the simple network mode guide.


====TCP Bridge====
===TCP Bridge mode===
In order to use this mode, you need to set up SysDVR-Client, but you don't need the USB driver. To activate this mode, choose TCP Bridge mode in the SysDVR Settings on your console. After that, launch a compatible game and connect to the client using one of the following methods:
To use this mode you must:
=====SysDVR-ClientGUI (Windows only)=====
* [[#SysDVR Client setup|Setup SysDVR-Client]], the USB driver is not needed.
For Windows users, use the SysDVR-ClientGUI and select TCP Bridge (network mode). Type your switch IP address and click launch. The stream should start in a few seconds. Your console IP address can be found in the settings.
* Select <code>TCP Bridge mode</code> in SysDVR Settings on your console.
=====SysDVR-Client=====
* Now launch a compatible game and connect with the client in one of the following ways.
If you're not a Windows user, launch the SysDVR-Client by typing "SysDVR-Client bridge <switch ip address>" in the command prompt. Replace "<switch ip address>" with your console IP address. You don't need to specify a port. If you wish to disable one of the streams, add either "--no-audio" or "--no-video" at the end.


If you don't like the built-in video player, you can use an external player by selecting one of the options available.
'''SysDVR-ClientGUI (Windows only):'''
*Select <code>TCP Bridge (network mode)</code>, type your switch IP address and click launch. In a few seconds the stream should start.
*You can find your console IP address in the settings.


====USB====
'''SysDVR-Client:'''
In order to use this mode, you need to set up the SysDVR-Client and USB driver. To stream through USB, choose USB mode in the SysDVR settings on your console. After selecting a compatible game, connect with the client using one of the following methods:
*Launch it like: <code>SysDVR-Client bridge <switch ip address></code>, replace <code><switch ip address></code> with your console IP address, no port is needed.
*You can specify <code>--no-audio</code> or <code>--no-video</code> at the end to disable one of the streams.


=====SysDVR-ClientGUI (Windows only)=====
If you don't like the built-in video player you can stream to a different one using one of the [https://github.com/exelix11/SysDVR/wiki/Advanced-tips#streaming-with-different-players external player options.]
For Windows users, launch the SysDVR-ClientGUI, select USB (which requires setting up the USB drivers), and then click on "launch." If this is your first time using SysDVR, you may be prompted to install the driver. Simply click "yes" and follow the steps, which may take a few minutes. If everything went smoothly, unplug the console, wait a few seconds, and then try streaming again.


=====SysDVR-Client=====
===USB streaming===
Alternatively, launch the SysDVR-Client and select "usb" to begin streaming. You can disable either the audio or video stream by specifying "--no-audio" or "--no-video" at the end. If you prefer to use a different video player, you can choose one of the external player options.
To use this mode you must:
* [[#SysDVR Client setup|Setup SysDVR-Client]] and then the [[#USB Driver setup|USB driver]].
* Select <code>USB mode</code> in SysDVR Settings on your console.
* Now launch a compatible game and connect with the client in one of the following ways.


====Simple Network Mode====
'''SysDVR-ClientGUI (Windows only):'''
To set up your console for streaming, you can choose the Simple network mode, which is easy to configure but requires a strong connection between your PC and console. You will need a video player that supports RTSP, but you don't need SysDVR-Client. For better quality, use TCP Bridge.
*Select <code>USB (requires setting up USB drivers)</code> and click launch.
*If this is the first time you are using SysDVR you may be prompted to install the driver, click yes and follow through the steps, it may take a few minutes just be patient. If everything went correctly unplug the console, wait a few seconds then try streaming again.


# To begin, launch the SysDVR Settings homebrew on your console and select Simple network mode.
'''SysDVR-Client:'''
# Then, launch a compatible game.
*Launch </code>SysDVR-Client usb</code> to begin streaming.
# Open your video player and connect to rtsp://<SwitchIpAddress>:6666/. Replace <SwitchIpAddress> with the IP address of your console, which you can find in the settings.
*You can specify <code>--no-audio</code> and <code>--no-video</code> at the end to disable one of the streams.


If you're using Windows, we recommend using [https://mpv.io/ mpv] as your video player. After downloading it, open a command prompt in the folder that contains mpv and run mpv rtsp://<SwitchIpAddress>:6666/.
If you don't like the built-in video player you can stream to a different one using one of the [https://github.com/exelix11/SysDVR/wiki/Advanced-tips#streaming-with-different-players external player options].


Note: The provided gif shows the SysDVR-client folder, but you should open the command prompt in the folder that contains mpv.
===Network RTSP mode (default)===
This is the simplest to setup but requires a very strong connection between the PC and your console. For this you need just your console and a video player that supports RTSP, SysDVR-Client is not needed. For better quality you should try [[#TCP Bridge mode|TCP Bridge]].


https://dlhb.gamebrew.org/switchhomebrews/sysdvrswitch-03.gif
*Launch the SysDVR Settings homebrew on your console and select <code>Simple network mode</code>.
*Launch a compatible game.
*Open your video player and connect to <code>rtsp://<SwitchIpAddress>:6666/</code>, replace <code><SwitchIpAddress></code> with the IP address of your console, you can find it in the settings.


If you're using Windows 10 and don't have a LAN adapter, you can use the hotspot mode. However, Windows Firewall may block data from the switch when using certain players. As a workaround, try a different player or temporarily disable Windows Firewall while streaming.
=====Recommended player on Windows=====
On windows you can use mpv. After downloading it open a cmd in its folder and run mpv rtsp://<SwitchIpAddress>:6666/.


=====RTSP over TCP and UDP=====
How to open a command prompt in the mpv directory on Windows:
The SysDVR server supports RTSP over TCP and UDP. Different programs may connect using different modes, so you may want to test which one works best for you. For example, mpv always uses TCP, while OBS tries UDP first and then TCP. To force UDP mode in mpv, run mpv rtsp://<SwitchIpAddress>:6666/ --rtsp-transport=udp.
 
https://dlhb.gamebrew.org/switchhomebrews/sysdvrnx5.gif


==Media==
(this gif shows the SysDVR-client folder, you need to do it in the folder that contains mpv)
'''How to Stream Nintendo Switch Games to PC without Capture Card | SysDVR Switch 16.0 Tutorial - ([https://www.youtube.com/watch?v=HpW7QbxZQfw Manito])'''<br>
<youtube>HpW7QbxZQfw</youtube>


==Screenshots==
Note for windows 10 users: In the past it was recommended to use windows 10 hotspot mode in case you don't have a LAN adapter, turns out that windows firewall may block the data from the switch when using certain players, as a workaround you can try a different player or temporarily disable windows firewall while streaming.
https://dlhb.gamebrew.org/switchhomebrews/sysdvrswitch-01.png
https://dlhb.gamebrew.org/switchhomebrews/sysdvrswitch-02.png


==Advanced tips==
=====RTSP over TCP and UDP=====
The [https://github.com/exelix11/SysDVR/wiki/Advanced-tips page contains] some advanced tips for using SysDVR, The tips include:
The SysDVR server supports both RTSP over TCP and UDP, this usually doesn't matter but different programs will connect using different modes, eg. mpv will always use TCP while obs will try UDP first and then TCP. Depending on your network environment you can find one to perform worse than the other so you'll have to test which one works best for you.


* How to use a hardware accelerated decoder for better performance on the built-in video player in SysDVR-Client 5.0.
In mpv you can force udp mode by running <code>mpv rtsp://<SwitchIpAddress>:6666/ --rtsp-transport=udp</code>.
* How to stream with different players such as mpv or obs using command line options.
* What are the best streaming setups depending on the connection type.
* How to use libusb on windows if the WinUsb backend does not work.
* How to choose between RTSP over TCP and UDP depending on the player and the network mode.


==Troubleshooting==
===Troubleshooting===
If you have issues make sure to read the the [https://github.com/exelix11/SysDVR/wiki/Troubleshooting common issues page].
If you have issues make sure to read the the [https://github.com/exelix11/SysDVR/wiki/Troubleshooting common issues page].


== Limitations ==
=== Limitations ===
* '''Only works on games that have video recording enabled''' (aka you can long-press the capture button to save a video)
* Only works on games that have video recording enabled (aka you can long-press the capture button to save a video):
** [[DVR-Patches Switch|There is now a workaround to support most games]], as it may cause issues it's hosted on a different repo and must be installed manually.
** [[DVR-Patches Switch|There is now a workaround to support most games]], as it may cause issues it's hosted on a different repo and must be installed manually.
* Only captures game output. System UI, home menu and homebrews running as applet won't be captured.
* Only captures game output. System UI, home menu and homebrews running as applet won't be captured.
* Stream quality depends heavily on the environment, bad usb wires or low wifi signal can affect it significantly.
* Stream quality depends heavily on the environment, bad usb wires or low wifi signal can affect it significantly.
* '''USB streaming is not available when docked'''
* USB streaming is not available when docked.
* Requires at least firmware 6.0.0
* Requires at least firmware 6.0.0.
 
Clearly with these limitations this sysmodule doesn't fully replace a capture card.
 
==Screenshots==
https://dlhb.gamebrew.org/switchhomebrews/sysdvrnx2.png
 
https://dlhb.gamebrew.org/switchhomebrews/sysdvrnx3.png


Clearly with these limitations '''this sysmodule doesn't fully replace a capture card'''.
https://dlhb.gamebrew.org/switchhomebrews/sysdvrnx4.png
 
==Media==
'''How to Stream Nintendo Switch Games to PC without Capture Card | SysDVR Switch 16.0 Tutorial ([https://www.youtube.com/watch?v=HpW7QbxZQfw Manito])'''<br>
<youtube>HpW7QbxZQfw</youtube>


==Changelog==
==Changelog==
'''v.5.5.5'''
'''v5.5.5 2023/04/30'''
* Fix network mode disconnection issue [https://github.com/exelix11/SysDVR/issues/226 #226]
* Fix network mode disconnection issue [https://github.com/exelix11/SysDVR/issues/226 #226].
** This issue requried increasing the socket buffer sizes so SysDVR now uses more memory than v5.5, unfortunately i couldn't find any way around it, it's still better than 5.4 and previous version but not as good as 5.5.
** This issue requried increasing the socket buffer sizes so SysDVR now uses more memory than v5.5, unfortunately i couldn't find any way around it, it's still better than 5.4 and previous version but not as good as 5.5.
* Added a splash screen to replace the white screen shown while connecting
* Added a splash screen to replace the white screen shown while connecting.
* Introduce audio/video stream synchronization in the built-in player: SysDVR will automatically attempt to sync the streams to avoid delays
* Introduce audio/video stream synchronization in the built-in player: SysDVR will automatically attempt to sync the streams to avoid delays.
** The correction delay scales over the number of errors detected, in bad network condition you may feel some delay because the player gives up synchronization to avoid stuttering, opening the home menu at any time will resync the streams.
** The correction delay scales over the number of errors detected, in bad network condition you may feel some delay because the player gives up synchronization to avoid stuttering, opening the home menu at any time will resync the streams.
** If you encounter stuttering this feature can be disabled in the advanced settings of the GUI or with the command line argument --debug nosync
** If you encounter stuttering this feature can be disabled in the advanced settings of the GUI or with the command line argument <code>--debug nosync</code>.
* Introduce duplicate keyframe dropping: When SysDVR on the console detects many duplicated packets in a short period of time it will stop sending them to save bandwidth and reduce delay.
* Introduce duplicate keyframe dropping: When SysDVR on the console detects many duplicated packets in a short period of time it will stop sending them to save bandwidth and reduce delay.
** The effectiveness of this feature depends on the game, since it may cause visual artifacts this feature can be disabled in the advanced settings of the SysDVR-Settings homebrew.
** The effectiveness of this feature depends on the game, since it may cause visual artifacts this feature can be disabled in the advanced settings of the SysDVR-Settings homebrew.
* Improved scheduling of the video frames in the built-in player: reduces occasional stuttering that was not related to the channel bandwidth.
* Improved scheduling of the video frames in the built-in player: reduces occasional stuttering that was not related to the channel bandwidth.
* Some command line arguments have changed, in particular the --print-stats option has been renamed to --debug stats
* Some command line arguments have changed, in particular the <code>--print-stats</code> option has been renamed to <code>--debug stats</code>.
'''v.5.5'''
* Edit: on 02/05/2023 i updated the client binaries to fix an issue when using the record to file feature #228 , if you're affected redownload the client. To confirm the build version right clicking properties and then details on Windows the updated one will show v5.5.1.5
* On 05/05/2023 i updated the client zip to fix a warning message that was mistakelny shown on mac os, updated build shows v5.5.2.5, it's just a text issue so no user action is needed.
 
'''v5.5 2023/04/15'''
* Completely fixed USB mode crashes and stuck in "switching modes" issues, for real this time.
* Completely fixed USB mode crashes and stuck in "switching modes" issues, for real this time.
** The communication protocol changed, make sure to update both the client on your pc and the sysmodule on your console.
** The communication protocol changed, make sure to update both the client on your pc and the sysmodule on your console.
** After copying the sysmodule reboot your console.
** After copying the sysmodule reboot your console.
* On Windows now we use a new WinUSB driver signed by Google.
* On Windows now we use a new WinUSB driver signed by Google.
** SysDVR will appear as an android device using standard ADB drivers
** SysDVR will appear as an android device using standard ADB drivers.
** In practice this won't change anything except that now installing drivers is much more streamlined and they come from a more trusted source.
** In practice this won't change anything except that now installing drivers is much more streamlined and they come from a more trusted source.
* Memory usage of the full version of SysDVR has been substantially reduced.
* Memory usage of the full version of SysDVR has been substantially reduced.
** In general this means SysDVR should cause less crashes when used with other sysmodules
** In general this means SysDVR should cause less crashes when used with other sysmodules.
** If you were using the usb only version due to memory concerns give the full version another chance.
** If you were using the usb only version due to memory concerns give the full version another chance.
* Now SysDVR-Client is also distributed as a flatpak, this should make installing it on linux much easier solving all dependency issues
* Now SysDVR-Client is also distributed as a flatpak, this should make installing it on linux much easier solving all dependency issues.
** For the time being flatpak support is considered experimental due to limited testing, let me know of any issues
** For the time being flatpak support is considered experimental due to limited testing, let me know of any issues.
** Instructions to install the flatpak version have been added to the guide
** Instructions to install the flatpak version have been added to the guide.
* Fix connection issues when in TCP Bridge mode
* Fix connection issues when in TCP Bridge mode.
* Fix libusb errors on arm macs
* Fix libusb errors on arm macs.
* Minor bug fixes
* Minor bug fixes.
'''v.5.4'''
 
* SysDVR-settings can now update dvr-patches from github releases automatically
'''v5.4 2022/12/19'''
** This feature works for USB-Only versions too however the USB-Only builds don't come with the settings app, you can get the NRO manually from the regular release
* SysDVR-settings can now update dvr-patches from github releases automatically.
* Most "mode switching" errors should have been solved
** This feature works for USB-Only versions too however the USB-Only builds don't come with the settings app, you can get the NRO manually from the regular release.
* Fix rtsp mode which has been broken probably since update 5.0 and no one noticed
* Most "mode switching" errors should have been solved.
* Other minor fixes
* Fix rtsp mode which has been broken probably since update 5.0 and no one noticed.
* Other minor fixes.
* The USB protocol was changed, do not use 5.4 SysDVR with older clients and vice versa.
* The USB protocol was changed, do not use 5.4 SysDVR with older clients and vice versa.
* Dependency management was tweaked, problems on non-windows systems may appear as far as i could test everything works fine but let me know in case of issues.
* Dependency management was tweaked, problems on non-windows systems may appear as far as i could test everything works fine but let me know in case of issues.
'''v.5.3.1'''
 
* Automatic driver installation with libwdi on Windows
'''v5.3.1 2022/08/08'''
* Automatic driver installation with libwdi on Windows.
** If this is the first time you use SysDVR just open the GUI and you will be prompted to install the driver when you try to stream, if you already installed it with zadig nothing changes.
** If this is the first time you use SysDVR just open the GUI and you will be prompted to install the driver when you try to stream, if you already installed it with zadig nothing changes.
** This means that zadig is not needed anymore, if you're following a guide that requires it is outdated
** This means that zadig is not needed anymore, if you're following a guide that requires it is outdated.
** The official guide in the wiki has been updated to reflect this
** The [https://github.com/exelix11/SysDVR/wiki official guide] in the wiki has been updated to reflect this.
* Linux and mac users: ffmpeg (libavcodec) has been updated to version 59, if you still have the old 58 version update it with you package manager
* Linux and mac users: ffmpeg (libavcodec) has been updated to version 59, if you still have the old 58 version update it with you package manager.
* Better native dependency handling on MacOS and linux
* Better native dependency handling on MacOS and linux.
** For MacOS all the dylib loading problems should be fixed now, you just need to install the libraries with brew
** For MacOS all the dylib loading problems should be fixed now, you just need to install the libraries with brew.
'''v.5.3'''
 
'''v5.3 2022/04/30'''
* SysDVR-Client is now built with .NET 6, if you're still using .NET 5 you must update.
* SysDVR-Client is now built with .NET 6, if you're still using .NET 5 you must update.
** Remember to choose the x64 version if your windows install is 64-bits or it won't work.
** Remember to choose the x64 version if your windows install is 64-bits or it won't work.
** If after installing it SysDVR can't find it manually fix your PATH environment variable
** If after installing it SysDVR can't find it manually fix your [https://github.com/dotnet/sdk/issues/7428#issuecomment-270423072 PATH environment variable].
* Arm "apple silicon" macs are now supported and should work as expected #166
* Arm "apple silicon" macs are now supported and should work as expected [https://github.com/exelix11/SysDVR/issues/166 #166].
** If you previously used SysDVR over rosetta you must install native arm .NET and native arm dependencies with brew, refer to the guide for more info.
** If you previously used SysDVR over rosetta you must install native arm .NET and native arm dependencies with brew, refer to the [https://github.com/exelix11/SysDVR/wiki guide] for more info.
* The USB protocol has been improved, stuttering should be gone now.
* The USB protocol has been improved, stuttering should be gone now.
** This means that latest client is not compatible with older sysdvr versions and vice versa, make sure to update the sysmodule on your console and reboot afterwards.
** This means that latest client is not compatible with older sysdvr versions and vice versa, make sure to update the sysmodule on your console and reboot afterwards.
* Improvements of the video decoding process, the client should use less CPU now.
* Improvements of the video decoding process, the client should use less CPU now.
* Now it's possible to set the video player title with the --title command line option
* Now it's possible to set the video player title with the <code>--title</code> command line option [https://github.com/exelix11/SysDVR/issues/170 #170].
* Other minor improvements
* Other minor improvements.
'''v.5.2'''
*dvr-patches note: If you want to stream incompatible games don't forget to download dvr-patches as well, at the time of writing latest firmware 14.1.1 is supported.
* Compatibility with dotnet 6, you won't have to download an outdated version to run SysDVR-client anymore. (dotnet 5 still works)
 
* Support for streaming from multiple consoles over USB
'''v5.2 2022/01/28'''
** By default SysDVR-client will connect to the first available console it finds, the serial is shown in the command window
* Compatibility with dotnet 6, you won't have to download an outdated version to run SysDVR-client anymore. (dotnet 5 still works).
** You can specify which console to connect to by adding --usb-serial your_serial to the command line, partial serials are matched by the last digits, for example --usb-serial 123 will connect to any console whoose serial ends with 123
* Support for streaming from multiple consoles over USB.
** By default SysDVR-client will connect to the first available console it finds, the serial is shown in the command window.
** You can specify which console to connect to by adding <code>--usb-serial your_serial</code> to the command line, partial serials are matched by the last digits, for example <code>--usb-serial 123</code> will connect to any console whoose serial ends with <code>123</code>.
** This feature won't work if sysdvr can't find the console serial, this can happen if you used prodinfo editing tools.
** This feature won't work if sysdvr can't find the console serial, this can happen if you used prodinfo editing tools.
* When using the built-in player you can add the --fullscreen option to the command line to automatically switch to full screen  
* When using the built-in player you can add the <code>--fullscreen</code> option to the command line to automatically switch to full screen [https://github.com/exelix11/SysDVR/issues/138 #138].
* Fix a bug where sysdvr would get stuck on switching modes and required a reboot  
* Fix a bug where sysdvr would get stuck on switching modes and required a reboot [https://github.com/exelix11/SysDVR/issues/132 #132].
* When in full screen mode the window shouldn't disappear when it loses focus  
* When in full screen mode the window shouldn't disappear when it loses focus [https://github.com/exelix11/SysDVR/issues/161 #161].
* When in full screen mode the mouse cursor is hidden
* When in full screen mode the mouse cursor is hidden [https://github.com/exelix11/SysDVR/issues/133 #133].
* The SysDVR-settings homebrew shouldn't crash anymore when SysDVR isn't running
* The SysDVR-settings homebrew shouldn't crash anymore when SysDVR isn't running [https://github.com/exelix11/SysDVR/issues/165 #165].
'''v.5.1'''
 
* Fixed random image corruption in certain games, used to happen especially on still images [https://github.com/exelix11/SysDVR/issues/91 #91]
'''v5.1 2021/02/25'''
* Fixed USB errors on linux [https://github.com/exelix11/SysDVR/issues/106 #106]
* Fixed random image corruption in certain games, used to happen especially on still images [https://github.com/exelix11/SysDVR/issues/91 #91].
* Export recordings as mp4 files [https://github.com/exelix11/SysDVR/issues/104 #104]
* Fixed USB errors on linux [https://github.com/exelix11/SysDVR/issues/106 #106].
** The recorded data is not processed to keep the cpu usage low, the output file may be big and not all video players may be able to play it. It's recommended to remux/re-encode the file after recording, an easy way of doing that is with ffmpeg: ffmpeg -i video.mp4 -c:v h264 -c:a aac output.mp4
* Export recordings as mp4 files [https://github.com/exelix11/SysDVR/issues/104 #104].
** The recorded data is not processed to keep the cpu usage low, the output file may be big and not all video players may be able to play it. It's recommended to remux/re-encode the file after recording, an easy way of doing that is with ffmpeg: <code>ffmpeg -i video.mp4 -c:v h264 -c:a aac output.mp4</code>
** While this seems to work well enough i didn't thoroughly test it with long recordings, please let me know of any issues.
** While this seems to work well enough i didn't thoroughly test it with long recordings, please let me know of any issues.
* Reduced stuttering in the built-in video player
* Reduced stuttering in the built-in video player.
* The "simple network mode" RTSP server should now be more reliable and works in most video players
* The "simple network mode" RTSP server should now be more reliable and works in most video players.
'''v.5.0.2'''
 
* Fix USB on 11.0
'''v5.0.2 2020/12/06'''
* Fix scaling for the built-in player when using a monitor that's not 16:9
* Fix USB on 11.0.
'''v.5.0.1'''
* Fix scaling for the built-in player when using a monitor that's not 16:9.
 
'''v5.0.1 2020/11/29'''
* Added full screen mode for the built-in player, press F11 to toggle it ([https://github.com/exelix11/SysDVR/issues/98 #98]).
* Added full screen mode for the built-in player, press F11 to toggle it ([https://github.com/exelix11/SysDVR/issues/98 #98]).
* Added scale filters for the built-in player, now the streaming should look better on high resolution screens.
* Added scale filters for the built-in player, now the streaming should look better on high resolution screens.
Line 288: Line 264:
* Show current PID in the player titlebar to allow streaming software to distinguish between multiple instances.
* Show current PID in the player titlebar to allow streaming software to distinguish between multiple instances.
* Minor fixes.
* Minor fixes.
'''v.5.0'''
'''v5.0 2020/11/17'''
*SysDVR-Client was upgraded to the just released .NET 5.0. Make sure to download it before trying this update. On windows you must install the x64 version
*SysDVR-Client was upgraded to the just released .NET 5.0. Make sure to [https://dotnet.microsoft.com/download download] it before trying this update. On windows you must install the x64 version.
*Custom built-in video player to ensure best performances, brings down latency to about 100ms or less, literally can't get better than this.
*Custom built-in video player to ensure best performances, brings down latency to about 100ms or less, literally can't get better than this.
**The built-in player uses ffmpeg and SDL2. Dlls are included for windows 64-bit, on mac and linux you can install them from your package managers, i added example commands in the [https://github.com/exelix11/SysDVR/wiki/SysDVR-Client-setup guide].
**The built-in player uses ffmpeg and SDL2. Dlls are included for windows 64-bit, on mac and linux you can install them from your package managers, i added example commands in the [https://github.com/exelix11/SysDVR/wiki/SysDVR-Client-setup guide].
**As for 32 bit Windows ffmpeg officially doesn't provide 32 bit builds anymore. If you're still using a 32 bit PC you can get unofficial builds from third parties and extract them to the SysDVR-Client folder, this should work but i'm not providing support for it, you should upgrade your PC.
**As for 32 bit Windows ffmpeg officially doesn't provide 32 bit builds anymore. If you're still using a 32 bit PC you can get unofficial builds from third parties and extract them to the SysDVR-Client folder, this should work but i'm not providing support for it, you should upgrade your PC.
**The implementation is still pretty rough and there's room for improvement but it's already a major step up from mpv, looking forward to user feedback.
**The implementation is still pretty rough and there's room for improvement but it's already a major step up from mpv, looking forward to user feedback.
**All the previous streaming modes are still avalilable, you can see them with the --help option
**All the previous streaming modes are still avalilable, you can see them with the --help option.
*New settings app with a proper GUI, explainations and links to the guide.
*New settings app with a proper GUI, explainations and links to the guide.
*SysDVR-Client GUI has been updated to be simpler to use: only select USB or type the IP and click launch to stream.
*SysDVR-Client GUI has been updated to be simpler to use: only select USB or type the IP and click launch to stream.
*Tweaked some timing and threading priorities that should improve performances on the console side
*Tweaked some timing and threading priorities that should improve performances on the console side.
**Due to the limited testing i can do on my own i don't know if these changes have any negative side effects, i didn't notice anything wrong but in case of problems like lag in games or degraded performances let me know and i'll revert it if it's necessary.
**Due to the limited testing i can do on my own i don't know if these changes have any negative side effects, i didn't notice anything wrong but in case of problems like lag in games or degraded performances let me know and i'll revert it if it's necessary.
*Added support for 32 bit arm in SysDVR-Client, now it can run on many single board computers like the raspberry pi
*Added support for 32 bit arm in SysDVR-Client, now it can run on many single board computers like the raspberry pi.
**Depends on .NET support for your board. Raspberry pi zero and 1 are not supported due to older arm version.
**Depends on .NET support for your board. Raspberry pi zero and 1 are not supported due to older arm version.
**Will most likely need manual configuration of hardware accelerated decoding to run smoothly, there's an explaination [https://github.com/exelix11/SysDVR/wiki/Advanced-tips#hardware-accelerated-decoder here].
**Will most likely need manual configuration of hardware accelerated decoding to run smoothly, there's an explaination [https://github.com/exelix11/SysDVR/wiki/Advanced-tips#hardware-accelerated-decoder here].
*Due to the changes to SysDVR-Client the command line arguments have slightly changed as well, this will likely break launch scripts generated by the GUI, make sure to delete them and create new ones with the latest version.
*Due to the changes to SysDVR-Client the command line arguments have slightly changed as well, this will likely break launch scripts generated by the GUI, make sure to delete them and create new ones with the latest version.
'''v.4.0.1'''
 
Known issues:
* Using an audio device with more than two channels will fail to initialize the audio subsystem, either set your PC to stereo mode or use the build provided in [https://github.com/exelix11/SysDVR/issues/94 #94].
 
'''v4.0.1 2020/06/10'''
*General system stability improvements to enhance the user's experience:
*General system stability improvements to enhance the user's experience:
**Reduced the number of FS sessions used by the sysmodule, should fix crashes when running alongside other sysmodules.
**Reduced the number of FS sessions used by the sysmodule, should fix crashes when running alongside other sysmodules.
**Fix a possible crash on windows versions that don't use the english alphabet.
**Fix a possible crash on windows versions that don't use the english alphabet.
'''v.4.0'''
'''v4.0 2020/05/26'''
*Low latency streaming is now supported.
*Low latency streaming is now supported.
**Stdin mpv streaming mode has been revamped to support low latency video streaming.
**Stdin mpv streaming mode has been revamped to support low latency video streaming.
Line 313: Line 293:
**Streaming both audio and video is possible only via RTSP as stdin mode only supports one channel. Read the advanced section of the guide to find out how to launch mpv in low-latency mode.
**Streaming both audio and video is possible only via RTSP as stdin mode only supports one channel. Read the advanced section of the guide to find out how to launch mpv in low-latency mode.
*USB streaming protocol has been updated to improve performances.
*USB streaming protocol has been updated to improve performances.
**On windows the driver has been changed to WinUsb, if you previously installed the libusb driver you will have to replace it with zadig. The guide has been updated to explain how.
**On windows the driver has been changed to WinUsb, if you previously installed the libusb driver you will have to replace it with zadig. [https://github.com/exelix11/SysDVR/wiki/SysDVR-Client-setup#usb-driver-setup The guide has been updated to explain how].
**If you wish to keep on streaming with libusb add --no-winusb to the command line or enable Force LibUsb backend in the GUI.
**If you wish to keep on streaming with libusb add <code>--no-winusb</code> to the command line or enable <code>Force LibUsb backend</code> in the GUI.
**On linux libusb is still used and nothing changes.
**On linux libusb is still used and nothing changes.
*TCPBridge protocol has been changed as well to improve performances.
*TCPBridge protocol has been changed as well to improve performances.
*Reduced the memory usage of SysDVR from 3MB to ~1.1MB if you previously used the USB-only build due to memory concerns check if this solves your problems.
*Reduced the memory usage of SysDVR from 3MB to ~1.1MB if you previously used the USB-only build due to memory concerns check if this solves your problems.
**This may also fix SXOS compatibility but i haven't tested, will update once someone lets me know.
**This may also fix SXOS compatibility but i haven't tested, will update once someone lets me know.
**Edit: Received mixed reports, some say that it works some that it doesn't, please report in #39 if you still experience crashes.
**Edit: Received mixed reports, some say that it works some that it doesn't, please report in [https://github.com/exelix11/SysDVR/issues/39 #39] if you still experience crashes.
*All legacy args for SysDVR-Client have been replaced with a new syntax, less used functions have been removed, if you're using bat files from the GUI delete them and create new ones.
*All legacy args for SysDVR-Client have been replaced with a new syntax, less used functions have been removed, if you're using bat files from the GUI delete them and create new ones.
**Due to the protocol changes you can't use previous versions of the client and clientGUI with the new sysmodule
**Due to the protocol changes you can't use previous versions of the client and clientGUI with the new sysmodule.
*Now it's possible to stream to stdout so you can pipe the raw data to any video player (one channel only)**Fix #30 #33 and several other bugs and crashes.
*Now it's possible to stream to stdout so you can pipe the raw data to any video player (one channel only).
'''v.3.0'''
*Fix [https://github.com/exelix11/SysDVR/issues/30 #30] [https://github.com/exelix11/SysDVR/issues/33 #33] and several other bugs and crashes.
 
Known issues:
*In case of network errors <code>ExtendedSocketException</code> is shown instead of a proper error message, if you need to know the full error message try the build provided in the related issue [https://github.com/exelix11/SysDVR/issues/30 #30].
*Sx os is not fully supported due to memory issues, some games will crash with 2003-0008. This is an sx os issue and won't be fixed in SysDVR ([https://github.com/exelix11/SysDVR/issues/39 #39]).
*On some computers there seem to be a <code>NullReferenceException</code> crash due to a race condition when beginning to stream, this seems to be pretty rare, if you're facing it there's a fix in the related issue [https://github.com/exelix11/SysDVR/issues/33 #33].
 
'''v3.0 2020/02/10'''
*UsbStream has been renamed to SysDVR-Client, if you have the old version on your pc, delete it before extracting the new zip.
*UsbStream has been renamed to SysDVR-Client, if you have the old version on your pc, delete it before extracting the new zip.
*RTSP Streaming has been implemented in both SysDVR and SysDVR-Client, this implies the following:
*RTSP Streaming has been implemented in both SysDVR and SysDVR-Client, this implies the following:
Line 331: Line 318:
**As now streaming requires a single player instance the GoLive feature on discord works as expected.
**As now streaming requires a single player instance the GoLive feature on discord works as expected.
**Unfortunately due to RTSP caching latency may have slightly increased, some players allow to disable it but not all, in the end is a stability/synchronization vs delay compromise (if you prefer less delay most of the previous modes are still available but not recommended)
**Unfortunately due to RTSP caching latency may have slightly increased, some players allow to disable it but not all, in the end is a stability/synchronization vs delay compromise (if you prefer less delay most of the previous modes are still available but not recommended)
**While RTSP works fine mostly, some players like vlc don't really play nice with it, mpv is still the recommended player
**While RTSP works fine mostly, some players like vlc don't really play nice with it, mpv is still the recommended player.
*The following streaming modes have been added:
*The following streaming modes have been added:
**Direct RTSP from SysDVR : it's possible to connect a player to the switch in the local network without any extra setup. This means you don't even need SysDVR-client, just type your switch ip address in mpv on your phone/pc and you're good to go !
**Direct RTSP from SysDVR : it's possible to connect a player to the switch in the local network without any extra setup. This means you don't even need SysDVR-client, just type your switch ip address in mpv on your phone/pc and you're good to go.
**TCP Bridge : video and audio data is sent via network to SysDVR-Client and it's relayed over RTSP (this has a few advantages over Direct RTSP as explained in the guide)
**TCP Bridge : video and audio data is sent via network to SysDVR-Client and it's relayed over RTSP (this has a few advantages over Direct RTSP as explained in the guide).
**RTSP mode from USB : video and audio data are sent over USB and streamed via RTSP on the local pc
**RTSP mode from USB : video and audio data are sent over USB and streamed via RTSP on the local pc.
*The old TCP streaming mode has been removed in favor of TCP bridge, it had major synchronization issues, in case you still need it it's still available in older versions.
*The old TCP streaming mode has been removed in favor of TCP bridge, it had major synchronization issues, in case you still need it it's still available in older versions.
*Fixed a few issues reported on GitHub
*Fixed a few issues reported on GitHub.
'''v.2.0'''
 
'''v2.0 2019/10/28'''
* The Network and USB versions have been merged in a single sysmodule, the zip includes an homebrew to set the streaming mode without having to reboot.
* The Network and USB versions have been merged in a single sysmodule, the zip includes an homebrew to set the streaming mode without having to reboot.
** This also allows to temporarily disable the USB stream so you can launch other homebrews like nxmtp or GoldLeaf (solves #5)
** This also allows to temporarily disable the USB stream so you can launch other homebrews like nxmtp or GoldLeaf (solves [https://github.com/exelix11/SysDVR/issues/5 #5]).
** As low memory usage is important to some users an USB-Only version is still provided, this however does not support the settings app and you have to manually remove it and reboot to use an homebrew requiring USB access.
** As low memory usage is important to some users an USB-Only version is still provided, this however does not support the settings app and you have to manually remove it and reboot to use an homebrew requiring USB access.
* Fixed the annoying "10 minutes bug" [https://github.com/exelix11/SysDVR/issues/2 #2]
* Fixed the annoying "10 minutes bug" [https://github.com/exelix11/SysDVR/issues/2 #2].
* Added UsbStreamGUI (Windows only), a graphical launcher for UsbStream for less experienced users
* Added UsbStreamGUI (Windows only), a graphical launcher for UsbStream for less experienced users.
* Minor changes to UsbStream to help troubleshoot issues
* Minor changes to UsbStream to help troubleshoot issues.
'''v.1.0'''
 
* First Release.
Note about new atmosphere versions (>= 0.10.0):
*Since 0.10.0 the /atmosphere/titles folder was renamed to /atmosphere/contents these releases still follow the old naming scheme, before extracting the release to your sd card make sure to rename the folder from the zip (extract to pc, rename, copy).
*Starting from next version releases will use the new naming.
 
'''v1.0 2019/10/21'''
*First public release, please read the [https://github.com/exelix11/SysDVR/blob/master/readme.md readme] to set it up.
*UsbStream requires [https://dotnet.microsoft.com/download/dotnet-core/3.0/runtime .NET core 3.0].
 
Known issues:
*There seems to be a bug that causes [https://github.com/exelix11/SysDVR/issues/2 UsbStream to close after about 10 minutes] while streaming both video and audio, an update is coming soon to fix this.


== Credits ==
== Credits ==
* Everyone from libnx and the people who reversed grc:d and wrote the service wrapper, mission2000 in particular for the suggestion on how to fix audio lag.
* Everyone from libnx and the people who reversed grc:d and wrote the service wrapper, mission2000 in particular for the suggestion on how to fix audio lag.
* [https://github.com/retronx-team/mtp-server-nx mtp-server-nx] for their usb implementation
* [https://github.com/retronx-team/mtp-server-nx mtp-server-nx] for their usb implementation.
* [https://github.com/ngraziano/SharpRTSP RTSPSharp] for the C# RTSP library
* [https://github.com/ngraziano/SharpRTSP RTSPSharp] for the C# RTSP library.
* Bonta on discord for a lot of help implementing a custom RTSP server
* Bonta on discord for a lot of help implementing a custom RTSP server.
* [https://github.com/xerpi Xerpi] for a lot of help while working on the UVC branch
* [https://github.com/xerpi Xerpi] for a lot of help while working on the UVC branch.


== External links ==
== External links ==
* Gbatemp - https://gbatemp.net/threads/sysdvr-stream-gameplay-directly-to-a-pc.550616/
* GitHub - https://github.com/exelix11/SysDVR
* Github - https://github.com/exelix11/SysDVR
* GBAtemp - https://gbatemp.net/threads/sysdvr-stream-gameplay-directly-to-a-pc.550616/

Revision as of 06:25, 31 Mayıs 2023

SysDVR
Sysdvrnx.png
General
Authorexelix11
TypePlugins
Version5.5.2.5
LicenseGPL-2.0
Last Updated2023/05/05
Links
Download
Website
Source
Support Author

SysDVR is a sysmodule that enables users to capture and stream the output of a game in real-time to their PC through either a USB or network connection.

Features

  • Cross platform, can stream to Windows, Mac and Linux.
  • Stream via USB or Wifi.
  • Video quality is fixed to 720p @ 30fps with h264 compression, this is a hardware limit.
  • Audio quality is fixed to 16bit PCM @ 48kHz stereo. Not compressed.
  • Very low latency with an optimal setup, most games are playable!

Installation

Requirements

  • To use SysDVR your console must be hacked, as in be running a CFW.
  • Make sure you're using latest version of Atmosphere.

A few info to keep in mind:

  • Users reported that SysDVR doesn't seem to cause bans.
  • To stream homebrew you must launch a game that supports video recording with title takeover, aka keeping R pressed while launching the game.
  • Stream quality depends heavily on the environment, you need a good USB wire or a stable connection (i.e. good WiFi signal strength on both PC and Switch).
  • Only games that support video recording (long press of the capture button) are compatible with SysDVR.
    • There is an experimental patch to enable support for all games, use it at your own risk.

SysDVR setup

Go to the Releases page, you'll find the following releases:

  • SysDVR.zip - "Full" version, can stream using both network and USB modes and comes with an homebrew app to switch between them.
  • SysDVR-USB-Only.zip - Only stream via USB but uses less memory and should run alongside multiple sysmodules.
  • Unless you have specific memory requirements you should use the full version, regardless of how you want to stream.

How to setup:

  • Download one of the builds and extract it in the root of your SD card, if you use FTP make sure to reboot your console.
  • Releases are meant to work on atmosphere. If you're using different CFWs you'll have to rename the folders accordingly.
  • By default SysDVR will stream with Simple network mode, to switch between modes and set the default one you can use the SysDVR Settings homebrew included in the zip.

(Optional) Install recording patches to support most games:

  • With the default configuration some games are not compatible with SysDVR, you can however download dvr-patches to add support for most games.
  • Read the warnings and steps in the dvr-patches repo

SysDVR Client setup

SysDVR-Client is a PC application that acts as a bridge between SysDVR and your video player, it's needed to improve performances by using some custom-built streaming protocols. It contains the following files:

  • SysDVR-Client.exe (or SysDVR-Client.dll on linux and mac) - The actual client. It's a command line application and requires to be launched via terminal or cmd on Windows.
  • SysDVR-ClientGUI.exe - A GUI launcher for SysDVR-Client, this is Windows-only and it's meant to make things easier for less experienced users.
  • Since 5.5 the releases also contain the SysDVR-Client.flatpak file, this is a flatpak package that can be used to easily install SysDVR-Client on linux.

Windows setup:

  • Download and install latest .NET (6 or newer only). Make sure to get the x64 version direct link.
  • This is not always needed but you may need to install latest x64 MSVC libs from Microsoft.
  • You should be ready, launch SysDVR-Client.exe from cmd or double click SysDVR-ClientGUI.
    • SysDVR-ClientGUI is a user-friendly GUI for SysDVR-Client that will automatically configure streaming modes and create shortcuts for them.

For Linux and MacOS, please refer to the wiki.

USB Driver setup

To stream via USB, it's necessary to install the custom SysDVR driver. However, if you're only using network modes, you can skip this step. In order to use standard drivers, SysDVR now presents itself as an Android device, which may be displayed as Google Inc. Nexus/Pixel Device (fastboot) on some operating systems. Windows should display it correctly as SysDVR.

If you did this before version 5.5, you must do it again since the USB implementation has changed. If you have the full version of SysDVR, launch the SysDVR Settings homebrew on your console and switch to USB streaming mode before continuing.

To avoid any issues, do not use a USB C to USB C cable. Instead, use a standard USB A to USB C cable.

Driver setup on Windows:

  • Driver setup on Windows involves plugging your switch into the computer and launching SysDVR-ClientGUI.exe.
  • Then, select USB (requires setting up USB drivers) and click launch.
  • If this is your first time using SysDVR, you will be prompted to install the driver. Click "yes" and follow the steps. It may take a few minutes, so be patient. If you don't see the driver install prompt and USB streaming doesn't work, you probably have an old version of SysDVR-Client.
  • If everything goes correctly, unplug the console for a few seconds. The driver is now installed, and you can stream via USB. If you encounter any errors, you can try installing the driver manually.

Driver setup for follow Linux and MacOS.

User guide

The complete guide can be found on SysDVR wiki.

Streaming

To select your preferred streaming mode, open the SysDVR settings app from the homebrew menu on your console. Please note that if you downloaded the USB-only version, you won't have access to this app, and thus can't change the streaming mode.

There are three options to choose from:

  • TCP Bridge (recommended) - This option allows you to stream with the highest possible quality via network. To set this up, you'll need to install SysDVR-Client on your PC and follow the TCP Bridge guide.
  • USB - This option also allows for high-quality streaming, but only via USB and cannot be used when docked. To get started, you'll need to install SysDVR-Client on your PC and the custom USB driver (both only needed for the first time), and then follow the USB streaming guide.
  • Simple network mode (Network RTSP mode) - This option provides decent quality streaming directly to a video player via network, but may have high latency or not look as good as the other modes. It doesn't require the client app, so you can use it to stream to your phone or smart TV. To get started, follow the simple network mode guide.

TCP Bridge mode

To use this mode you must:

  • Setup SysDVR-Client, the USB driver is not needed.
  • Select TCP Bridge mode in SysDVR Settings on your console.
  • Now launch a compatible game and connect with the client in one of the following ways.

SysDVR-ClientGUI (Windows only):

  • Select TCP Bridge (network mode), type your switch IP address and click launch. In a few seconds the stream should start.
  • You can find your console IP address in the settings.

SysDVR-Client:

  • Launch it like: SysDVR-Client bridge <switch ip address>, replace <switch ip address> with your console IP address, no port is needed.
  • You can specify --no-audio or --no-video at the end to disable one of the streams.

If you don't like the built-in video player you can stream to a different one using one of the external player options.

USB streaming

To use this mode you must:

  • Setup SysDVR-Client and then the USB driver.
  • Select USB mode in SysDVR Settings on your console.
  • Now launch a compatible game and connect with the client in one of the following ways.

SysDVR-ClientGUI (Windows only):

  • Select USB (requires setting up USB drivers) and click launch.
  • If this is the first time you are using SysDVR you may be prompted to install the driver, click yes and follow through the steps, it may take a few minutes just be patient. If everything went correctly unplug the console, wait a few seconds then try streaming again.

SysDVR-Client:

  • Launch SysDVR-Client usb to begin streaming.
  • You can specify --no-audio and --no-video at the end to disable one of the streams.

If you don't like the built-in video player you can stream to a different one using one of the external player options.

Network RTSP mode (default)

This is the simplest to setup but requires a very strong connection between the PC and your console. For this you need just your console and a video player that supports RTSP, SysDVR-Client is not needed. For better quality you should try TCP Bridge.

  • Launch the SysDVR Settings homebrew on your console and select Simple network mode.
  • Launch a compatible game.
  • Open your video player and connect to rtsp://<SwitchIpAddress>:6666/, replace <SwitchIpAddress> with the IP address of your console, you can find it in the settings.
Recommended player on Windows

On windows you can use mpv. After downloading it open a cmd in its folder and run mpv rtsp://<SwitchIpAddress>:6666/.

How to open a command prompt in the mpv directory on Windows:

sysdvrnx5.gif

(this gif shows the SysDVR-client folder, you need to do it in the folder that contains mpv)

Note for windows 10 users: In the past it was recommended to use windows 10 hotspot mode in case you don't have a LAN adapter, turns out that windows firewall may block the data from the switch when using certain players, as a workaround you can try a different player or temporarily disable windows firewall while streaming.

RTSP over TCP and UDP

The SysDVR server supports both RTSP over TCP and UDP, this usually doesn't matter but different programs will connect using different modes, eg. mpv will always use TCP while obs will try UDP first and then TCP. Depending on your network environment you can find one to perform worse than the other so you'll have to test which one works best for you.

In mpv you can force udp mode by running mpv rtsp://<SwitchIpAddress>:6666/ --rtsp-transport=udp.

Troubleshooting

If you have issues make sure to read the the common issues page.

Limitations

  • Only works on games that have video recording enabled (aka you can long-press the capture button to save a video):
  • Only captures game output. System UI, home menu and homebrews running as applet won't be captured.
  • Stream quality depends heavily on the environment, bad usb wires or low wifi signal can affect it significantly.
  • USB streaming is not available when docked.
  • Requires at least firmware 6.0.0.

Clearly with these limitations this sysmodule doesn't fully replace a capture card.

Screenshots

sysdvrnx2.png

sysdvrnx3.png

sysdvrnx4.png

Media

How to Stream Nintendo Switch Games to PC without Capture Card | SysDVR Switch 16.0 Tutorial (Manito)

Changelog

v5.5.5 2023/04/30

  • Fix network mode disconnection issue #226.
    • This issue requried increasing the socket buffer sizes so SysDVR now uses more memory than v5.5, unfortunately i couldn't find any way around it, it's still better than 5.4 and previous version but not as good as 5.5.
  • Added a splash screen to replace the white screen shown while connecting.
  • Introduce audio/video stream synchronization in the built-in player: SysDVR will automatically attempt to sync the streams to avoid delays.
    • The correction delay scales over the number of errors detected, in bad network condition you may feel some delay because the player gives up synchronization to avoid stuttering, opening the home menu at any time will resync the streams.
    • If you encounter stuttering this feature can be disabled in the advanced settings of the GUI or with the command line argument --debug nosync.
  • Introduce duplicate keyframe dropping: When SysDVR on the console detects many duplicated packets in a short period of time it will stop sending them to save bandwidth and reduce delay.
    • The effectiveness of this feature depends on the game, since it may cause visual artifacts this feature can be disabled in the advanced settings of the SysDVR-Settings homebrew.
  • Improved scheduling of the video frames in the built-in player: reduces occasional stuttering that was not related to the channel bandwidth.
  • Some command line arguments have changed, in particular the --print-stats option has been renamed to --debug stats.
  • Edit: on 02/05/2023 i updated the client binaries to fix an issue when using the record to file feature #228 , if you're affected redownload the client. To confirm the build version right clicking properties and then details on Windows the updated one will show v5.5.1.5
  • On 05/05/2023 i updated the client zip to fix a warning message that was mistakelny shown on mac os, updated build shows v5.5.2.5, it's just a text issue so no user action is needed.

v5.5 2023/04/15

  • Completely fixed USB mode crashes and stuck in "switching modes" issues, for real this time.
    • The communication protocol changed, make sure to update both the client on your pc and the sysmodule on your console.
    • After copying the sysmodule reboot your console.
  • On Windows now we use a new WinUSB driver signed by Google.
    • SysDVR will appear as an android device using standard ADB drivers.
    • In practice this won't change anything except that now installing drivers is much more streamlined and they come from a more trusted source.
  • Memory usage of the full version of SysDVR has been substantially reduced.
    • In general this means SysDVR should cause less crashes when used with other sysmodules.
    • If you were using the usb only version due to memory concerns give the full version another chance.
  • Now SysDVR-Client is also distributed as a flatpak, this should make installing it on linux much easier solving all dependency issues.
    • For the time being flatpak support is considered experimental due to limited testing, let me know of any issues.
    • Instructions to install the flatpak version have been added to the guide.
  • Fix connection issues when in TCP Bridge mode.
  • Fix libusb errors on arm macs.
  • Minor bug fixes.

v5.4 2022/12/19

  • SysDVR-settings can now update dvr-patches from github releases automatically.
    • This feature works for USB-Only versions too however the USB-Only builds don't come with the settings app, you can get the NRO manually from the regular release.
  • Most "mode switching" errors should have been solved.
  • Fix rtsp mode which has been broken probably since update 5.0 and no one noticed.
  • Other minor fixes.
  • The USB protocol was changed, do not use 5.4 SysDVR with older clients and vice versa.
  • Dependency management was tweaked, problems on non-windows systems may appear as far as i could test everything works fine but let me know in case of issues.

v5.3.1 2022/08/08

  • Automatic driver installation with libwdi on Windows.
    • If this is the first time you use SysDVR just open the GUI and you will be prompted to install the driver when you try to stream, if you already installed it with zadig nothing changes.
    • This means that zadig is not needed anymore, if you're following a guide that requires it is outdated.
    • The official guide in the wiki has been updated to reflect this.
  • Linux and mac users: ffmpeg (libavcodec) has been updated to version 59, if you still have the old 58 version update it with you package manager.
  • Better native dependency handling on MacOS and linux.
    • For MacOS all the dylib loading problems should be fixed now, you just need to install the libraries with brew.

v5.3 2022/04/30

  • SysDVR-Client is now built with .NET 6, if you're still using .NET 5 you must update.
    • Remember to choose the x64 version if your windows install is 64-bits or it won't work.
    • If after installing it SysDVR can't find it manually fix your PATH environment variable.
  • Arm "apple silicon" macs are now supported and should work as expected #166.
    • If you previously used SysDVR over rosetta you must install native arm .NET and native arm dependencies with brew, refer to the guide for more info.
  • The USB protocol has been improved, stuttering should be gone now.
    • This means that latest client is not compatible with older sysdvr versions and vice versa, make sure to update the sysmodule on your console and reboot afterwards.
  • Improvements of the video decoding process, the client should use less CPU now.
  • Now it's possible to set the video player title with the --title command line option #170.
  • Other minor improvements.
  • dvr-patches note: If you want to stream incompatible games don't forget to download dvr-patches as well, at the time of writing latest firmware 14.1.1 is supported.

v5.2 2022/01/28

  • Compatibility with dotnet 6, you won't have to download an outdated version to run SysDVR-client anymore. (dotnet 5 still works).
  • Support for streaming from multiple consoles over USB.
    • By default SysDVR-client will connect to the first available console it finds, the serial is shown in the command window.
    • You can specify which console to connect to by adding --usb-serial your_serial to the command line, partial serials are matched by the last digits, for example --usb-serial 123 will connect to any console whoose serial ends with 123.
    • This feature won't work if sysdvr can't find the console serial, this can happen if you used prodinfo editing tools.
  • When using the built-in player you can add the --fullscreen option to the command line to automatically switch to full screen #138.
  • Fix a bug where sysdvr would get stuck on switching modes and required a reboot #132.
  • When in full screen mode the window shouldn't disappear when it loses focus #161.
  • When in full screen mode the mouse cursor is hidden #133.
  • The SysDVR-settings homebrew shouldn't crash anymore when SysDVR isn't running #165.

v5.1 2021/02/25

  • Fixed random image corruption in certain games, used to happen especially on still images #91.
  • Fixed USB errors on linux #106.
  • Export recordings as mp4 files #104.
    • The recorded data is not processed to keep the cpu usage low, the output file may be big and not all video players may be able to play it. It's recommended to remux/re-encode the file after recording, an easy way of doing that is with ffmpeg: ffmpeg -i video.mp4 -c:v h264 -c:a aac output.mp4
    • While this seems to work well enough i didn't thoroughly test it with long recordings, please let me know of any issues.
  • Reduced stuttering in the built-in video player.
  • The "simple network mode" RTSP server should now be more reliable and works in most video players.

v5.0.2 2020/12/06

  • Fix USB on 11.0.
  • Fix scaling for the built-in player when using a monitor that's not 16:9.

v5.0.1 2020/11/29

  • Added full screen mode for the built-in player, press F11 to toggle it (#98).
  • Added scale filters for the built-in player, now the streaming should look better on high resolution screens.
  • Show a warning when running on Windows with an unsupported (x86) .NET runtime (#97).
  • Fix a crash when using an audio device with more than two channels (#94).
  • Show current PID in the player titlebar to allow streaming software to distinguish between multiple instances.
  • Minor fixes.

v5.0 2020/11/17

  • SysDVR-Client was upgraded to the just released .NET 5.0. Make sure to download it before trying this update. On windows you must install the x64 version.
  • Custom built-in video player to ensure best performances, brings down latency to about 100ms or less, literally can't get better than this.
    • The built-in player uses ffmpeg and SDL2. Dlls are included for windows 64-bit, on mac and linux you can install them from your package managers, i added example commands in the guide.
    • As for 32 bit Windows ffmpeg officially doesn't provide 32 bit builds anymore. If you're still using a 32 bit PC you can get unofficial builds from third parties and extract them to the SysDVR-Client folder, this should work but i'm not providing support for it, you should upgrade your PC.
    • The implementation is still pretty rough and there's room for improvement but it's already a major step up from mpv, looking forward to user feedback.
    • All the previous streaming modes are still avalilable, you can see them with the --help option.
  • New settings app with a proper GUI, explainations and links to the guide.
  • SysDVR-Client GUI has been updated to be simpler to use: only select USB or type the IP and click launch to stream.
  • Tweaked some timing and threading priorities that should improve performances on the console side.
    • Due to the limited testing i can do on my own i don't know if these changes have any negative side effects, i didn't notice anything wrong but in case of problems like lag in games or degraded performances let me know and i'll revert it if it's necessary.
  • Added support for 32 bit arm in SysDVR-Client, now it can run on many single board computers like the raspberry pi.
    • Depends on .NET support for your board. Raspberry pi zero and 1 are not supported due to older arm version.
    • Will most likely need manual configuration of hardware accelerated decoding to run smoothly, there's an explaination here.
  • Due to the changes to SysDVR-Client the command line arguments have slightly changed as well, this will likely break launch scripts generated by the GUI, make sure to delete them and create new ones with the latest version.

Known issues:

  • Using an audio device with more than two channels will fail to initialize the audio subsystem, either set your PC to stereo mode or use the build provided in #94.

v4.0.1 2020/06/10

  • General system stability improvements to enhance the user's experience:
    • Reduced the number of FS sessions used by the sysmodule, should fix crashes when running alongside other sysmodules.
    • Fix a possible crash on windows versions that don't use the english alphabet.

v4.0 2020/05/26

  • Low latency streaming is now supported.
    • Stdin mpv streaming mode has been revamped to support low latency video streaming.
    • Unfortunately the console produces audio with a slight delay, this means that real-time streaming audio and video is not possible. This is not a bandwidth problem and even streaming just audio will be slightly delayed.
    • Streaming both audio and video is possible only via RTSP as stdin mode only supports one channel. Read the advanced section of the guide to find out how to launch mpv in low-latency mode.
  • USB streaming protocol has been updated to improve performances.
    • On windows the driver has been changed to WinUsb, if you previously installed the libusb driver you will have to replace it with zadig. The guide has been updated to explain how.
    • If you wish to keep on streaming with libusb add --no-winusb to the command line or enable Force LibUsb backend in the GUI.
    • On linux libusb is still used and nothing changes.
  • TCPBridge protocol has been changed as well to improve performances.
  • Reduced the memory usage of SysDVR from 3MB to ~1.1MB if you previously used the USB-only build due to memory concerns check if this solves your problems.
    • This may also fix SXOS compatibility but i haven't tested, will update once someone lets me know.
    • Edit: Received mixed reports, some say that it works some that it doesn't, please report in #39 if you still experience crashes.
  • All legacy args for SysDVR-Client have been replaced with a new syntax, less used functions have been removed, if you're using bat files from the GUI delete them and create new ones.
    • Due to the protocol changes you can't use previous versions of the client and clientGUI with the new sysmodule.
  • Now it's possible to stream to stdout so you can pipe the raw data to any video player (one channel only).
  • Fix #30 #33 and several other bugs and crashes.

Known issues:

  • In case of network errors ExtendedSocketException is shown instead of a proper error message, if you need to know the full error message try the build provided in the related issue #30.
  • Sx os is not fully supported due to memory issues, some games will crash with 2003-0008. This is an sx os issue and won't be fixed in SysDVR (#39).
  • On some computers there seem to be a NullReferenceException crash due to a race condition when beginning to stream, this seems to be pretty rare, if you're facing it there's a fix in the related issue #33.

v3.0 2020/02/10

  • UsbStream has been renamed to SysDVR-Client, if you have the old version on your pc, delete it before extracting the new zip.
  • RTSP Streaming has been implemented in both SysDVR and SysDVR-Client, this implies the following:
    • Audio and video are finally properly synchronized.
    • Random stream desynchronization (lag) should be finally solved, it can still happen depending on the player and connection stability but pausing and unpausing the stream is enough to fix it.
    • Native support for many more players and other software such as OBS, live streaming from SysDVR has never been easier.
    • As now streaming requires a single player instance the GoLive feature on discord works as expected.
    • Unfortunately due to RTSP caching latency may have slightly increased, some players allow to disable it but not all, in the end is a stability/synchronization vs delay compromise (if you prefer less delay most of the previous modes are still available but not recommended)
    • While RTSP works fine mostly, some players like vlc don't really play nice with it, mpv is still the recommended player.
  • The following streaming modes have been added:
    • Direct RTSP from SysDVR : it's possible to connect a player to the switch in the local network without any extra setup. This means you don't even need SysDVR-client, just type your switch ip address in mpv on your phone/pc and you're good to go.
    • TCP Bridge : video and audio data is sent via network to SysDVR-Client and it's relayed over RTSP (this has a few advantages over Direct RTSP as explained in the guide).
    • RTSP mode from USB : video and audio data are sent over USB and streamed via RTSP on the local pc.
  • The old TCP streaming mode has been removed in favor of TCP bridge, it had major synchronization issues, in case you still need it it's still available in older versions.
  • Fixed a few issues reported on GitHub.

v2.0 2019/10/28

  • The Network and USB versions have been merged in a single sysmodule, the zip includes an homebrew to set the streaming mode without having to reboot.
    • This also allows to temporarily disable the USB stream so you can launch other homebrews like nxmtp or GoldLeaf (solves #5).
    • As low memory usage is important to some users an USB-Only version is still provided, this however does not support the settings app and you have to manually remove it and reboot to use an homebrew requiring USB access.
  • Fixed the annoying "10 minutes bug" #2.
  • Added UsbStreamGUI (Windows only), a graphical launcher for UsbStream for less experienced users.
  • Minor changes to UsbStream to help troubleshoot issues.

Note about new atmosphere versions (>= 0.10.0):

  • Since 0.10.0 the /atmosphere/titles folder was renamed to /atmosphere/contents these releases still follow the old naming scheme, before extracting the release to your sd card make sure to rename the folder from the zip (extract to pc, rename, copy).
  • Starting from next version releases will use the new naming.

v1.0 2019/10/21

Known issues:

Credits

  • Everyone from libnx and the people who reversed grc:d and wrote the service wrapper, mission2000 in particular for the suggestion on how to fix audio lag.
  • mtp-server-nx for their usb implementation.
  • RTSPSharp for the C# RTSP library.
  • Bonta on discord for a lot of help implementing a custom RTSP server.
  • Xerpi for a lot of help while working on the UVC branch.

External links

Advertising: