Skip to content

Releases: Moehammered/switch-remote-play

Switch Remote Play v1.0.0 - Multiple Controllers, Monitor Selection, and More

28 Nov 11:25
Compare
Choose a tag to compare

Download the 7z or zip archive and follow the instructions to setup
https://github.com/Moehammered/switch-remote-play/wiki

If you're just updating, simply delete the old switch-remote-play folder on your Switch's SD card and delete the PC program on your computer.
Then replace them with the updated versions in this release and off you go! (Make sure to reconfigure the settings in the application)

Compatibility

Atmosphere CFW is the only officially supported firmware. SX OS is not officially supported.

This version is not compatible at all with previous releases. Please make sure you completely remove traces of the old version from your Switch and PC.

So much has changed... A lot of features added, and a lot of cleaning up in preparation for future development and features. With that said, let's dive in!

Switch Application Changes

Touch Configuration and Virtual Input support added #17

  • Added a new configuration menu screen for 'Touch Configuration'
  • 2 modes of virtual touch interfacing are available: Virtual Touch and Simulated Mouse
  • Virtual Touch
    • Makes the Switch touch screen behave like a touch monitor for the PC
  • Simulated Mouse
    • Makes the Switch touch screen behave like a mouse (similar to a laptop trackpad)
    • Includes support for absolute and trackpad behaviour
      • Absolute behaviour means the mouse will be under your finger
      • Trackpad behaviour means the mouse matches the movement of your finger (like a laptop trackpad)
    • Please be aware, as the name implies it is simulated behaviour, so I've had to mimic how a mouse would work. It won't be perfect, but it is there for compatibility purposes.
    • I've enjoyed using trackpad mode personally (didn't think I would) but whenever I use absolute mode, I always prefer to switch to the Virtual Touch. I recommend Virtual Touch whenever you can use it.
  • Tested using it with cemu and Virtual Touch mode worked without issue while playing Super Mario Maker

Monitor Selection Added in Encoder Configuration Screen #21

  • Added the ability to select the monitor for streaming
  • Number starts at 0 for primary monitor and increases for secondary monitors

Multiple Controllers, Guide Button, and JoyCon Support

  • Home(PS4)/Guide(X360) Button Configuration Added #24
    • Added the ability to bind the Home button hotkey in the Controller Menu
    • Added the ability to configure the Home button hotkey trigger time (how long to hold the home button hotkey to trigger it)
  • Multiple controller support added #22 (yay! :D)
    • Added the ability to configure how many virtual controllers are created and streamed to the PC
    • IMPORTANT: PS4 controller mode will not respect player number order (joycon 1 might not be DS4 controller 1 on the PC)
      • Xbox 360 mode seems fine and I haven't had issues with out of order player/controller ordering.
      • I cannot control how the driver assigns player numbers, so for now this is considered a minor inconvenience. If you need player ordering, configure it in the game, use Xbox 360 mode, or simply hand over the controller.
  • JoyCons can be separated and used as individual controllers!
    • You'll need to separate and pair the JoyCons individually in the Switch OS
    • The buttons always get remapped in horizontal orientation as follows:
    • Face buttons = ABXY
    • Analog stick = Left Analog Stick
    • SL/SR = L/R
    • Plus/Minus = Plus
    • There are no plans to make this configurable in the near future (but I will revisit it after the Linux port has been completed)

Mouse Configuration Screen Added #27

  • Mouse configuration options have been removed from the 'controller' menu and been promoted to their own menu screen
  • Mouse wheel (scrolling up/down and left/right) is now configurable and assignable to the left or right analog stick
  • Mouse/Controller mode toggle hotkey is now configurable and assignable
  • Mouse/Controller mode toggle time is now configurable

Keyboard Configuration Screen Added #38

  • PC Keyboard keys can now be simulated when the program is in 'Mouse mode'
  • Keyboard buttons can be configured and assigned to the Switch Buttons
  • This initially was just a request to implement arrow keys, but I couldn't help plan ahead in case of expansion of the feature. Enjoy :)

Software Keyboard User Configuration Input #40

  • The built in Switch software keyboard has now been used everywhere applicable
  • Number inputs have been replaced with keyboard input prompts
  • IP Address input in the network configuration screen is now done via the software keyboard

Network Configuration Menu Cleanup #41

  • Created a new configuration menu to allow users to configure all aspects of connecting to the PC
  • IP, Broadcast Address, Manual IP Toggle, and data ports can all be configured
  • The PC program also has a respective network configuration file to allow for configuring the data ports
    • Make sure the settings on the Switch match the settings in the PC's network config file

Project Refactor and Cleanup #43

  • Did some long overdue cleaning through the code base for the Switch and PC application
  • Removed redundant code
  • Replaced magic variables with constants
  • Streaming code moved into separate helper classes for both the Switch and PC application
  • Added the ability to configure logging. File logging and verbosity are configurable.
  • Refactored code to separate common code into a folder shared between the Windows and Switch project
    • This was done in preparation for starting the Linux host application version #32
  • For the end user, this shouldn't matter much

PC Application Changes

Mouse centering on selected monitor #21 #27

  • When the stream starts, the program will center the mouse to the middle of the screen

Added configuration options #41, #43

  • Can now control console window minimise/restore on stream connect/disconnect
  • Logging verbosity is controllable
  • Log files can be enabled (to help with issue reporting hopefully)
  • PC Audio mute behaviour can be configured
  • Network data ports can be configured
    • Please make sure they match the settings on the Switch app's network configuration

Virtual Interfaces for touch, mouse and keyboard created #17 #27 #38

  • Cleaned up mouse code to allow for configurable behaviour such as relative and absolute positioning
  • Added a touch interface that injects touch data messages to Windows allowing for touch inputs to be simulated and interpreted as real touch inputs in Windows
  • Added a keyboard interface that behaves similar to the mouse interface. Tries to behave similar to a regular keyboard

There are probably more changes I've missed or repeated myself with. So much work was done since the last release over a long period so it's been tough collating all the changes.
If I've forgotten anything, I'm sorry about that. I'll modify the release notes if it's brought to my attention or if I remember something.

I'll be reading through the wiki and making modifications to it to include the new features. It'll take a while, so I apologise if there is something outdated in there.

For my Linux friends, the good news is I only have 1 more feature to investigate for the Windows version and then Linux gets 100% priority for development. I can't give an ETA, but I would like to say thank you all for being patient. :)

Hope you all enjoy the new features and this release!

\(^.^)/

Switch Remote Play v0.9.0 - Host Application Patch

24 Jul 10:17
Compare
Choose a tag to compare

Please download the full release from here: https://github.com/Moehammered/switch-remote-play/releases/tag/0.9.0

Then replace the switch-remote-play-host.exe with the patched version included in this release. Only a small change was made, but considering it is an important audio issue it was released standalone as a fix for now.

PC Host Application Changes

  • Audio distortion fix for multi-channel audio hardware (see #31 for more info)
    • A commit back in February commented out the audio arguments used to tell ffmpeg to capture audio in stereo channel configuration. This caused users with greater than stereo audio channel setups to get invalid audio data streamed
    • This also meant that even if you had stereo audio, ffmpeg was left in charge to decide the bitrate and audio codec. The missing code added back in also helps resolve this issue

Switch Remote Play v0.9.0 - AMD Hardware Encoder + Refactor

05 Jul 12:38
Compare
Choose a tag to compare

/!\ PC Application Patch Available /!\

Please make sure to replace the switch-remote-play-host.exe included in this release with the patched exe available at https://github.com/Moehammered/switch-remote-play/releases/tag/0.9.0-pc-audio-patch


Download the 7z or zip archive and follow the instructions to setup
https://github.com/Moehammered/switch-remote-play/wiki
Instructions have been updated and old instructions have been deleted. All instructions now will be placed in the wiki. Eventually there will be more pages added with helpful configuration options for the encoder settings.

Compatibility

  • Atmosphere CFW is the only officially supported firmware. SX OS is not officially supported.

A lot has changed under the hood. This is a breaking change, so following semantic versioning I should push this version to v1.0 however I am saving v1.0 once I manage to get a few other changes in.

Anyway, this means v0.9.0 is not compatible at all with previous versions of the program. So it is recommended to delete old versions of Switch Remote Play completely. (Feel free to make a backup of course in case this version doesn't work for you).

On to the changes!

PC Host Application Changes

  • Deleted old Switch HID Key definitions

    • LibNX has finally deleted the deprecated HID input implementation. So they were removed from here too.
  • Updated Configuration Data payload

    • This means that the pc program expects switch-remote-play v0.9.0 and will not work with older versions.
  • Updated network diagnostic output

    • The broadcast address config line advice it outputs now reflects the new configuration file format for the app
  • Ffmpeg Encoder argument parser added

    • Created an ffmpeg argument parser that will create an ffmpeg argument line for CPU or AMD GPU encoder codecs
  • Coloured console text

    • Text output is now coloured to help distinguish between different diagnostic sections
    • Any startup issues will be coloured in red to help identify problems
  • Invert Controller Analog Axis added #20

    • Added the ability to invert the X and Y analog axis for the left and right analog sticks

Switch Application Changes

  • Invert Controller Analog Axis added #20

    • Added the ability to configure and invert the X and Y analog axis for the left and right analog sticks
    • Thanks so much for being patient mathew77! :)
  • Deleted old Switch HID input API usage

    • LibNX has finally deleted the deprecated HID input implementation. So they were removed from here too.
  • UI Refactor

    • Almost all the UI screens had their code re-written and refactored to make it easier for myself to add parameters and more screens
    • This does not have any effect on the users, the behaviour of the UI is still the same, just the code behind it has changed so much
      • and I'm still not satisfied with it :P
  • Configuration File Refactor

    • Configuration is now broken up into separate files for each respective configuration screen/option
    • You will see a configuration file now for network, decoder, common, etc
    • Old configuration files are not compatible anymore. You can delete them or back them up and see if there are any settings you'd like to replicate in the new configuration screens
  • Encoder Configuration Overhaul - Includes h264_amf codec (AMD GPU encoder)

    • Encoder configuration menu has been overhauled now to allow for choosing which h264 encoder to use
      • To choose different codec, cycle through the 'codec' option on the Encoder Configuration page
      • Use d-pad left/right to change to the codec's parameters page to configure the respective options
    • h264 CPU encoder was simplified and had some other options added
      • Bitrate mode can be chosen now (constant or variable - before it was always variable)
      • Profile option was added (this can help low end hardware or latency by choosing 'baseline')
    • h264 AMF encoder added (AMD GPU hardware encoder)
      • This was the sole reason why I needed to completely overhaul and refactor the UI code.
      • Added options that I found had the most dramatic effects in testing
  • Built with latest LibNX(v4.1.3 at this time of release)

    • Meaning it should work fine for latest firmware (12.0.3 at this time)

This release is a huge amount of changes since the last release in February. If I've forgotten anything, sorry about that.

I want to say thank you so much for all the patient users out there!

Hope you all enjoy this release!

\(^.^)/

Switch Remote Play v0.8.3 - Controller Bug Fixes + Diagnostic Output

07 Feb 11:34
Compare
Choose a tag to compare

Download the 7z or zip archive and follow the instructions to setup
https://github.com/Moehammered/switch-remote-play/blob/master/instructions/Instructions.md
(Instructions have been updated with extra troubleshooting information related to automatic network discovery)

PC Host Application Changes:

  • Controller Bug Fixes
    • Fixed an issue where controller gamepad data was not being streamed correctly on certain network cards.
      • Basically, needed to confirm the size of the gamepad data payload and if it wasn't as expected, keep reading the socket before proceeding.
    • Fixed the incorrect button mapping for the joycon's 'minus' button being mapped to the 'guide' button on the Xbox 360 controller.
      • Now 'minus' is mapped to 'back' on the 360 controller.
    • Fixed a potential overflow bug with the virtual controller analog sticks for the DS4 and X360 controller.
  • Diagnostic Output
    • Network configuration information is checked and displayed by the program.
      • This will help when users report networking issues as well as help users be able to easily determine the IP address of the PC without having to use ipconfig.
    • Monitor display information is displayed. This will be useful when users report clipped desktops coming through the Switch.
    • Virtual controller sanity checks are performed now. This is to make sure the virtual controller driver is installed and working.
    • The output from FFMPEG when encoding video and audio is now a configuration option. Users can choose to show the encoder logging data or not. This will mainly be useful for debugging odd situations where audio isn't coming through or video seems to fail.
      • This is in a configuration file called 'config.ini'. It is located in the same place as 'switch-remote-play-host.exe'.

Switch Application Changes:

  • Configuration Options
    • Broadcast Address added as a configuration option. The PC application will display the broadcast address to be added to the switch application's config file. Adding it will allow automatic network discovery to work when pressing the 'L' button.
      • Without this option being specified it will default to 192.168.0.255. If you do not specify your broadcast address in the config file then you will have to use Manual IP Mode.
    • Manual IP Mode Enabled option is now stored in the config file. This will allow users to now be able to just press 'R' once the application opens to connect without having to go to the manual IP mode screen and press 'enabled'.

This release is a stepping stone towards more diagnostic info. I had other plans for this release but I had a fair few issues reported, with the controller issue being very high priority.

Thank you for being patient. More feature updates will come, but ensuring users can correctly report issues took priority for this release.

Enjoy!

Switch Remote Play v0.8.1 - Mac Prototype

16 Jan 05:49
Compare
Choose a tag to compare

For the Windows version, please go here: https://github.com/Moehammered/switch-remote-play/releases/latest

Please download the 7zip or zip archive and follow the Mac instructions for usage, limitations, and installation.
https://github.com/Moehammered/switch-remote-play/blob/master/instructions/mac/mac-instructions.md

M1 macs use the M1 version as it includes an ffmpeg binary compiled for M1.
Intel macs use the Intel version as it includes an ffmpeg binary compiled for Intel.

What works:

  • Mouse clicking and cursor movement is working
  • Video streaming and connection is working
  • Limited Encoder Configuration settings
    • Preset, Desktop resolution (limited), Quality Control Rate

What doesn't work:

  • Gamepad input. There are no virtual drivers and I don't have the time to learn DriverKit framework or IOKit to create my own.
  • Audio. Requires a 3rd party program and doesn't work well on M1 macs.
  • Bitrate settings. You can only use Quality Control Rate factor. Bitrate settings interfere and cause stream cutouts on Mac.

Please do not expect support with this
The Windows and Linux versions will take precedence. This is due to the multitude of issues and missing drivers for Mac OS. If someone makes a virtual gamepad driver using DriverKit or IOKit someday that works for M1 Macs and is open source with C++ examples, then I will reconsider. However, I really don't have the time. I spent the last week and a half working every night after work on this prototype and it was extremely frustrating. I'm a burnt out now. But I hope this at least has some use for people who'd like to manage their Macs doing simple tasks from their Switch :)

Switch Remote Play v0.8.1 - Mouse Button Mapping

04 Jan 11:26
Compare
Choose a tag to compare

Download the 7z or zip archive and follow the instructions to setup
https://github.com/Moehammered/switch-remote-play/blob/master/instructions/Instructions.md
(Instructions have been updated with extra troubleshooting information related to automatic network discovery)

  • Added extra options in the Controller Configuration Menu
    • Left mouse button can be mapped to any of the Switch shoulder buttons
    • Right mouse button can be mapped to any of the Switch shoulder buttons

Now you can pretty much control the PC doing simple tasks with just the left or right joy-con alone!

Switch Remote Play v0.8.0 - Performance Release

03 Jan 10:53
Compare
Choose a tag to compare

Download the 7z or zip archive and follow the instructions to setup
https://github.com/Moehammered/switch-remote-play/blob/master/instructions/Instructions.md

  • Re-wrote how the menu system works to make it less of a hassle to add more configuration screens
  • Added Decoder Configuration Menu
    • Available decoder options that can modify how the Switch decodes the ffmpeg stream are available
    • Offers some good performance options to allow for better quality streams to come through
  • Added Controller Configuration Options
    • Moved mouse sensitivity to the Controller Configuration screen
    • Added option to toggle if Mouse is default input mode on stream connect
    • Added Controller type option to choose between X360 or DS4 controller
    • Added button inversion options for XYAB
  • Added X360 Controller support to the PC application (thanks theosirian)

Happy new year everyone! :)

Switch Remote Play v0.7.4 - Configuration Save + Mouse Sensitivity

30 Dec 05:41
Compare
Choose a tag to compare

Download the 7z or zip archive and follow the instructions to setup
https://github.com/Moehammered/switch-remote-play/blob/master/instructions/Instructions.md

  • Added Mouse Sensitivity as a configuration option
  • Configuration settings are now saved upon starting a stream
  • Last saved configuration settings are loaded on application start

This release includes some refactoring of the input polling to use the updated LibNX HID functions.

Added polling for Switch Gyro (using deprecated HID functions for now), however ViGEmSDK does not support gyro functionality so it cannot be used yet. Will have to research a replacement or supplementary driver/SDK to emulate a PS4 controller.

Switch Remote Play v0.7.3 - More Options

27 Dec 06:18
Compare
Choose a tag to compare

Download the 7z or zip archive and follow the instructions at https://github.com/Moehammered/switch-remote-play/blob/master/instructions/Instructions.md to get setup

This release fixes the homebrew loader crash along with some other bugs. Also includes more configuration options.

  • Added Encoder Preset, Codec, Control Rate Factor, and HWAccel ffmpeg options to the Switch app
  • Fixed a control mapping bug for diagonal directions on the D-Pad being flipped accidentally
  • Increased input send rate to 100 fps from 60 fps
  • Updated UI to be more concise and make room for the extra configuration options

Switch Remote Play v0.7.2

25 Dec 07:46
Compare
Choose a tag to compare

Early release of Switch Remote Play.

Allows remote control of a Windows PC from a Nintendo Switch either via Mouse input or PS4 controller input.

Download either the 7z or zip archive, extract it and then see the instructions page for how to set this up and use it. (https://github.com/Moehammered/switch-remote-play/blob/master/instructions/Instructions.md)

Short of it:

  • Stream desktop to switch
  • Use the switch as a controller to play games or a mouse to open applications and then play games

This project was originally targeted for a holiday release. It isn't completed, but the past week has had effort put in to make it usable for people.

I hope you all enjoy, and can have fun with this.

Happy holidays everyone! :)