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

Nintendo Switch Remote Control Switch: Difference between revisions

From GameBrew
(Created page with "{{Infobox Switch Homebrews |title=Nintendo Switch Remote Control |image=nintendoswitchremotecontrolswitch.png |description=Remote play system for the Nintendo Switch |author=javmarina |lastupdated=2022/04/24 |type=PC Utilities |version=pre-release |license=MIT |download=https://dlhb.gamebrew.org/switchhomebrews/nintendoswitchremotecontrolswitch.7z |website=https://github.com/javmarina/Nintendo-Switch-Remote-Control |source=https://github.com/javmarina/Nintendo-Switch-Rem...")
 
No edit summary
Line 1: Line 1:
{{Infobox Switch Homebrews
{{Infobox Switch Homebrews
|title=Nintendo Switch Remote Control
|title=Nintendo Switch Remote Control
|image=nintendoswitchremotecontrolswitch.png
|image=nintendoswitchremotecontrol.png
|description=Remote play system for the Nintendo Switch
|description=Remote play system for the Nintendo Switch
|author=javmarina
|author=javmarina
Line 8: Line 8:
|version=pre-release
|version=pre-release
|license=MIT
|license=MIT
|download=https://dlhb.gamebrew.org/switchhomebrews/nintendoswitchremotecontrolswitch.7z
|download=https://dlhb.gamebrew.org/switchhomebrews/nintendoswitchremotecontrol.7z
|website=https://github.com/javmarina/Nintendo-Switch-Remote-Control
|website=https://github.com/javmarina/Nintendo-Switch-Remote-Control
|source=https://github.com/javmarina/Nintendo-Switch-Remote-Control
|source=https://github.com/javmarina/Nintendo-Switch-Remote-Control
|donation=
|donation=
}}
}}
{{#seo:
Remote play for the Nintendo Switch via WebRTC (with video streaming). Pro Controller emulation in AVR firmware.
|title=Switch Homebrew PC Tools (PC Utilities) - GameBrew
 
|title_mode=append
This project uses the LUFA library and reverse-engineering of the Pro Controller for Nintendo Switch for remote control of the console. It consists on three main parts:
|image=nintendoswitchremotecontrolswitch.png
 
|image_alt=Nintendo Switch Remote Control
* GUI: Java project with two programs, client and server.
}}
**The client takes input from a real controller, keyboard or a Discord bot and sends it to the server over WebRTC.
{{cleanup|article|Needs cleanup}}
**The server receives the input and sends it to an AVR microcontroller which acts as a controller. The MCU is plugged into the Switch dock and the console recognizes it as a Pro Controller. If you have a USB-C adapter, you should also be able to use this in handheld mode/Switch Lite.
Remote play system for the Nintendo Switch
**Finally, the server sends a real-time video and audio stream acquired from an HDMI capture card, over WebRTC (the technology used for Stadia and Google Meet).
 
* Firmware: firmware that runs on the microcontroller. The server PC sends the received commands to the microcontroller via UART. When the Switch requests HID reports, the microcontroller sends them. It uses the LUFA library.
 
* Small Python code for fast prototyping (<code>python</code> folder).
 
The goal of this project is to provide a way to play Switch games remotely (two computers), or control the console locally or automate tasks (one computer).
 
==User guide==
Prerequisites:
*A LUFA-compatible microcontroller such as the Teensy 2.0++, Arduino UNO R3, or the Arduino Micro
*A USB-to-UART (TTL) adapter. Popular ones are based on FTDI and CH340 chip. Can be easily found online.
*An HDMI capture card compatible with <code>libuvc</code> (in general, any with USB output). Device quality can dramatically affect streaming performance.
*A PC with Java and JDK installed (Java 11 or newer required).
 
Hardware diagram:
 
https://dlhb.gamebrew.org/switchhomebrews/nintendoswitchremotecontrol2.png
 
'''Note:''' if you're using a FTDI-based serial adapter, you need to [https://projectgus.com/2011/10/notes-on-ftdi-latency-with-arduino/ reduce the latency timer value].


==Media==
Additional information can be found on the specific README files.
<youtube></youtube>


The [https://github.com/javmarina/Nintendo-Switch-Remote-Control/blob/master/gui/README.md README] inside the <code>gui</code> folder contains information about the Java project, required setup and steps, known issues and instructions for configuring a Discord bot.


==Screenshots==
Inside <code>firmware</code> folder [https://github.com/javmarina/Nintendo-Switch-Remote-Control/blob/master/firmware/README.md there are instructions] for compiling and flashing the firmware for different boards, as well as a list of changes made to the original code.
https://dlhb.gamebrew.org/switchhomebrews/nintendoswitchremotecontrolswitch-01.png
https://dlhb.gamebrew.org/switchhomebrews/nintendoswitchremotecontrolswitch-02.png
https://dlhb.gamebrew.org/switchhomebrews/nintendoswitchremotecontrolswitch-03.png
https://dlhb.gamebrew.org/switchhomebrews/nintendoswitchremotecontrolswitch-04.png
https://dlhb.gamebrew.org/switchhomebrews/nintendoswitchremotecontrolswitch-05.png
https://dlhb.gamebrew.org/switchhomebrews/nintendoswitchremotecontrolswitch-06.png
https://dlhb.gamebrew.org/switchhomebrews/nintendoswitchremotecontrolswitch-07.png
https://dlhb.gamebrew.org/switchhomebrews/nintendoswitchremotecontrolswitch-08.png


==Changelog==
==Credits==
'''v.1.0'''
Acknowledgments:
* First Release.
*devopvoid for his work on the webrtc-java project.
*mzyy94 for his work on Pro Controller emulation using a Raspberry Pi.
*wchill for the [https://github.com/wchill/SwitchInputEmulator SwitchInputEmulator] project. My firmware was initially based on his work.
*progmem for the [https://github.com/progmem/Switch-Fightstick Switch-Fightstick] repository, which itself is the base of wchill work and created the opportunity to control the Switch with a LUFA-compatible MCU.
*ItsDeidara author of the [https://github.com/ItsDeidara/CommunityController CommunityController] repository and host of the namesake Twitch [https://www.twitch.tv/communitycontroller channel]. Gave some tips for hardware configuration and some of the serial port code is based on his work.
*abcminiuser, who created the [https://github.com/abcminiuser/lufa LUFA] library (Lightweight USB Framework for AVRs).


== External links ==
== External links ==

Revision as of 09:06, 15 Haziran 2023

Nintendo Switch Remote Control
Nintendoswitchremotecontrol.png
General
Authorjavmarina
TypePC Utilities
Versionpre-release
LicenseMIT License
Last Updated2022/04/24
Links
Download
Website
Source

Remote play for the Nintendo Switch via WebRTC (with video streaming). Pro Controller emulation in AVR firmware.

This project uses the LUFA library and reverse-engineering of the Pro Controller for Nintendo Switch for remote control of the console. It consists on three main parts:

  • GUI: Java project with two programs, client and server.
    • The client takes input from a real controller, keyboard or a Discord bot and sends it to the server over WebRTC.
    • The server receives the input and sends it to an AVR microcontroller which acts as a controller. The MCU is plugged into the Switch dock and the console recognizes it as a Pro Controller. If you have a USB-C adapter, you should also be able to use this in handheld mode/Switch Lite.
    • Finally, the server sends a real-time video and audio stream acquired from an HDMI capture card, over WebRTC (the technology used for Stadia and Google Meet).
  • Firmware: firmware that runs on the microcontroller. The server PC sends the received commands to the microcontroller via UART. When the Switch requests HID reports, the microcontroller sends them. It uses the LUFA library.
  • Small Python code for fast prototyping (python folder).

The goal of this project is to provide a way to play Switch games remotely (two computers), or control the console locally or automate tasks (one computer).

User guide

Prerequisites:

  • A LUFA-compatible microcontroller such as the Teensy 2.0++, Arduino UNO R3, or the Arduino Micro
  • A USB-to-UART (TTL) adapter. Popular ones are based on FTDI and CH340 chip. Can be easily found online.
  • An HDMI capture card compatible with libuvc (in general, any with USB output). Device quality can dramatically affect streaming performance.
  • A PC with Java and JDK installed (Java 11 or newer required).

Hardware diagram:

nintendoswitchremotecontrol2.png

Note: if you're using a FTDI-based serial adapter, you need to reduce the latency timer value.

Additional information can be found on the specific README files.

The README inside the gui folder contains information about the Java project, required setup and steps, known issues and instructions for configuring a Discord bot.

Inside firmware folder there are instructions for compiling and flashing the firmware for different boards, as well as a list of changes made to the original code.

Credits

Acknowledgments:

  • devopvoid for his work on the webrtc-java project.
  • mzyy94 for his work on Pro Controller emulation using a Raspberry Pi.
  • wchill for the SwitchInputEmulator project. My firmware was initially based on his work.
  • progmem for the Switch-Fightstick repository, which itself is the base of wchill work and created the opportunity to control the Switch with a LUFA-compatible MCU.
  • ItsDeidara author of the CommunityController repository and host of the namesake Twitch channel. Gave some tips for hardware configuration and some of the serial port code is based on his work.
  • abcminiuser, who created the LUFA library (Lightweight USB Framework for AVRs).

External links

Advertising: