sys-hidplus: a brand new sysmodule that allows you to emulate gamepads over the network for Parsec

sys_hidplus.png

(v1.1 + New Client released!)
sys-hidplus: a brand new sysmodule that allows you to emulate controllers over the network


sys-hidplus is a sysmodule that allows you to emulate up to 3 controllers (and probably more in the future) over the network from a PC to a Nintendo Switch.
The objective of this is to allow services such as Parsec to be usable on the Switch without having to buy $100 worth of accessories to emulate a single controller.
Currrently, the sysmodule still has some bugs, but it's usable and, most importantly, playable and enjoyable.
You can check more details on the github repository and any kind of feedback is welcomed!

unknown.png

If anything here sounds familiar, is because I'm the same developer a hid-mitm-plus, a unstable fork of hid-mitm with the same objective, but it has been rewritten from scratch due to the crashes and bad performance.
So, yeah, this not a fork or an update, this is, in fact, a brand new sysmodule with newly written code and functionality too (such as experimental joy-con emulation)!
(just in case, development of hid-mitm-plus has ceased and won't be coming back, use this instead)

Requirements:
Instructions:
(This tutorial has yet to be updated for v1.1, please be patient!)
First, copy the contents of the "nswitch" folder in the build zip file to the Switch microSD card. Make sure to use Atmosphere because this sysmodule isn't tested with other CFWs.

After that, make sure you have Python3 installed and open cmd on the location of the extracted "pc" folder from the build zip file and execute
Code:
py -3 -m pip install inputs
(you'll have to do this step only once). Once inputs is installed, you can then connect to your switch by using
Code:
python3 input_pc.py {SWITCH IP}
replacing {SWITCH IP} with the IP address of your Switch (You can check it by going to Settings > Internet on your system) (Note: if using "python3" gives an error/prints an empty line, try using "py" instead. If that also gives issues, try reinstalling python making sure "add to paths" is enabled. If not even that works, try using the python3 path instead of using "python3" or "py".

If you did all the steps fine, your switch should now detect your controller as a Kirby colored Pro Controller (or a JoyCon, more details below).

You can modify the behaviour of the controller emulation on the python file by changing the conType values. If you set it to 0, you'll be able to disconnect the controller (useful if the Switch disconnects the controller for some reason). If you set it to 1, you'll be able to emulate a Pro Controller. If you set it to 2 or 3, you'll be able to use the experimental sideways joycon emulation, it has some issues but in some games such as Clubhouse Games, it'll be playable.

If for some reason you enter to the "Change Grip/Order" menu or when entering a game your controller is disconnected on the Switch, modify the python script, set the conType value of the disconnected controller to 0, execute the python script once, change the value back to 1 (or 2/3) and the controller will be functional again!​
Links:
Special Thanks to:
  • jakibaki - base and inspiration for this sysmodule (hid-mitm), a lot of the code comes from it
  • cathery - helping me with my dumb questions and issues
  • ReSwitched Discord Server - help in the support channels
  • Everyone using this sysmodule - thanks a lot!
 
Last edited by nachuz,
At least not with the current release binary, but its relatively easy to get it to work by compiling the master branch yourself with the latest libnx.
I think besides that I just needed to remove the hidKeysDown call from the main methode, but I also did some experimenting to reduce the used memory, so I'm not 100% sure if that was all I changed.
I don't know how compiling works, but how?
 
I cannot seem to get my gamepads recognize with the python script. Is the patch necessary?
When I tried to get syshidplus working, its didn't use the native python installation of my system, and instead used a msys version, which resultet in the same problem. Maybe you could check if its that.

The patch is only to show the changes I did, that are included in the build, and didn't include any python script changes.
I shared it, since the project is gpl 3 licenced, in the hope that its enough to be complient to the lincense ^^
 
Last edited by RednaxelaNnamtra,
When I tried to get syshidplus working, its didn't use the native python installation of my system, and instead used a msys version, which resultet in the same problem. Maybe you could check if its that.

The patch is only to show the changes I did, that are included in the build, and didn't include any python script changes.
I shared it, since the project is gpl 3 licenced, in the hope that its enough to be complient to the lincense ^^
uh, can you get me a link of what python should i use?
 
Here is my build, together with a git diff. No guarantee that it will be stable.

Thank you very much. So your build is compatible with 12.0.2 and the latest atmo?

I just downgraded my switch to fw 11 to test this module and it is working great with a parsec setup using a mini pc and a capture card.
 
Thank you very much. So your build is compatible with 12.0.2 and the latest atmo?

I just downgraded my switch to fw 11 to test this module and it is working great with a parsec setup using a mini pc and a capture card.
It should work with latest atmosphere and switch firmware, since nothing important changed in 12.0.3, but I didn't really test it. ^^
 
what does `WHERE python3` output for you?
Update from my problem, so, idk what is the specific problem i had with not connecting my gamepad to my switch via wifi, either the py script, the way i handled merging the files, or the controller itself and the pc being janky. But that aside, it works! Sorry for my misunderstanding.
 
any progress on getitng it to work betteron games that have the stupid connect your controller screens when they are already connected ?
 
  • Like
Reactions: JDXXX
you probably shouldn't post your ip address
Its a private network address, so thats not problem, its like saying you are in the living room, without any additional information ^^

--------------------- MERGED ---------------------------

View attachment 270481
not working with me , FW 11.0.1 , atmosphere last version , any help ?
Does it work without the brakets around the ip? so "python3 input_pc.py 192.168.8.130"
Which build of the plugin are you using? The one from the github? if that doens't work, maybe you could try my updated build:
https://gbatemp.net/threads/sys-hid...network-for-parsec.576327/page-8#post-9494996
 
  • Like
Reactions: firecraft
Does it work without the brakets around the ip? so "python3 input_pc.py 192.168.8.130"
Which build of the plugin are you using? The one from the github?

I'm not firecraft, but this should work without the curled brackets like you mentioned.

Python specifically returns an getaddrinfo error when a socket is given an IP that is either invalid or improperly formatted. I recreated this situation with my own Switch's IP and I get the same error when using curled brackets, and it works fine otherwise. Granted I'm using your build (firecraft might not be doing the same), but I'm pretty sure this issue can be attributed to the curled brackets.
 
  • Like
Reactions: RednaxelaNnamtra
Hello, sorry for not posting in a while!
I had a lot of stuff to do for school, but being honest, the biggest reason of why I didn't release an update yet was procrastination, laziness and demotivation, I'm very sorry for that
It's finished though, and I'm going to test it really soon before releasing it
For now though, use the build made by @RednaxelaNnamtra (thanks a lot ^_^)
 
Hello, sorry for not posting in a while!
I had a lot of stuff to do for school, but being honest, the biggest reason of why I didn't release an update yet was procrastination, laziness and demotivation, I'm very sorry for that
It's finished though, and I'm going to test it really soon before releasing it
For now though, use the build made by @RednaxelaNnamtra (thanks a lot ^_^)
I'm going to delay this update by a bit.
It'll include some new features though, such as 4 player support and a brand new client with probably an UI made in C# (to replace the python one)
(For Mac/Linux users, @kenesu_h is working on a client in Rust too! If you want to make a client too, you're welcomed to do so :3)
 
Last edited by nachuz,

Site & Scene News

Popular threads in this forum