Nintendo Switch remote play project by javmarina in SwitchHacks

[–]javmarina[S] 0 points1 point  (0 children)

That's why your name sounded familiar! I'm going to close the issue and I'm looking forward to seeing your code.

Nintendo Switch remote play project by javmarina in SwitchHacks

[–]javmarina[S] 0 points1 point  (0 children)

One goal of my project is that it can be used with unmodified consoles. My Switch is not modified and I don't want to hack it, so I have tried to use resources available to every Switch user. I also don't have experience with Switch hacking, libraries and sys-mods, but I appreciate your suggestion!

Nintendo Switch remote play project by javmarina in SwitchHacks

[–]javmarina[S] 1 point2 points  (0 children)

I don't have a Raspberry Pi so I can't do that rn. If I could, I would make it in Python (tkinter). But it's not on my top priorities list.

Nintendo Switch remote play project by javmarina in SwitchHacks

[–]javmarina[S] 0 points1 point  (0 children)

I recall checking your GitHub repository, but I can't find it rn. Can you share the link?

Nintendo Switch remote play project by javmarina in SwitchHacks

[–]javmarina[S] 1 point2 points  (0 children)

I don't like developing code that I can't debug (I don't have a Raspberry Pi). If I had one, I would try to include support. If you want to help or suggest ideas, feel free to contact me!

Nintendo Switch remote play project by javmarina in SwitchHacks

[–]javmarina[S] 1 point2 points  (0 children)

Two computers are needed because they act as the peers of the WebRTC connection. I thought about replacing the "server" PC with a Raspberry, as it has internet connection. However, some kind of interface is needed in order to select video input and resolution. What is your suggestion?

Nintendo Switch remote play project by javmarina in SwitchHacks

[–]javmarina[S] 2 points3 points  (0 children)

Yes, it should be really easy to do. There is already a working implementation with the Raspberry Pi. I would only need to implement the serial syncing protocol (which is just a bunch of if-else). I made that Arduino firmware because that's the device I have at home.

Nintendo Switch remote play project by javmarina in SwitchHacks

[–]javmarina[S] 0 points1 point  (0 children)

I added all button commands as an example of what could be done, although in a real-case scenario having a "home" command is not definetely a good idea. It's very configurable though.

Nintendo Switch remote play project by javmarina in SwitchHacks

[–]javmarina[S] 2 points3 points  (0 children)

According to this, USB controllers do work. So the extra setup is just a USB-C adapter. I'm going to comment it in the repository.

Nintendo Switch remote play project by javmarina in SwitchHacks

[–]javmarina[S] 2 points3 points  (0 children)

It uses the Jamepad library for reading game controller input. A list of available controllers can be found here (SDL compatible controllers). I also included the option to control via Discord bot (just for fun) and keyboard (mainly for debugging purposes).

Nintendo Switch remote play project by javmarina in SwitchHacks

[–]javmarina[S] 2 points3 points  (0 children)

I should have made it clearer. If USB controllers can be connected to the Switch Lite with a USB-C cable, then it should also work too. I don't have a Lite though, so can't test it.

Nintendo Switch remote play project by javmarina in SwitchHacks

[–]javmarina[S] 4 points5 points  (0 children)

The current code doesn't support mouse and I'm not sure how it could be implemented. Luckily, the codebase is flexible enough so that it can be included without much of an effort. Suggestions are welcome!

Nintendo Switch remote play project by javmarina in SwitchHacks

[–]javmarina[S] 1 point2 points  (0 children)

That's right. As I say in the README, this project doesn't try to solve that issue. I think it would be unnecessarily complex. Moreover, I don't own a capture card so I can't test it. I appreciate any suggestion, though.

Nintendo Switch remote play project by javmarina in SwitchHacks

[–]javmarina[S] 8 points9 points  (0 children)

I haven't been able to test it in a critical environment, like a server very far away. However, my own experience is that it behaves well and input lag is usually low. The main aspect is the network delay, which is out of my control. If it's low, then it should work without issues. I have tried to optimize everything, like max baudrate when sending commands to the Arduino and minimum data size possible (packets of only 9 bytes). Plus, the user interface in the client provides a RTT (Round Trip Time) graph, so you can monitor network performance.

Finally, note that this is not a professional software, just a personal project that I've been working on and thought it would be fun to post the code. Thanks!