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,

SansSans

Member
Newcomer
Joined
Jan 18, 2021
Messages
20
Trophies
0
Age
20
XP
518
Country
Japan
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?
 

RednaxelaNnamtra

Well-Known Member
Member
Joined
Dec 8, 2011
Messages
1,208
Trophies
1
XP
3,336
Country
Germany
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,

SansSans

Member
Newcomer
Joined
Jan 18, 2021
Messages
20
Trophies
0
Age
20
XP
518
Country
Japan
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?
 

SaiyaTrunX

Member
Newcomer
Joined
May 28, 2007
Messages
13
Trophies
0
XP
1,064
Country
Gambia, The
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.
 

RednaxelaNnamtra

Well-Known Member
Member
Joined
Dec 8, 2011
Messages
1,208
Trophies
1
XP
3,336
Country
Germany
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. ^^
 

SansSans

Member
Newcomer
Joined
Jan 18, 2021
Messages
20
Trophies
0
Age
20
XP
518
Country
Japan
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.
 

GolfDude

Well-Known Member
Member
Joined
Feb 2, 2009
Messages
886
Trophies
1
XP
1,835
Country
United States
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

RednaxelaNnamtra

Well-Known Member
Member
Joined
Dec 8, 2011
Messages
1,208
Trophies
1
XP
3,336
Country
Germany
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

kenesu_h

Active Member
Newcomer
Joined
Jul 22, 2021
Messages
44
Trophies
0
XP
389
Country
United States
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

nachuz

Well-Known Member
OP
Member
Joined
May 21, 2017
Messages
636
Trophies
0
XP
2,113
Country
Chile
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 ^_^)
 

nachuz

Well-Known Member
OP
Member
Joined
May 21, 2017
Messages
636
Trophies
0
XP
2,113
Country
Chile
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

General chit-chat
Help Users
    Xdqwerty @ Xdqwerty: yawn