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,

Silent_Gunner

Crazy Cool Cyclops
Banned
Joined
Feb 16, 2017
Messages
2,696
Trophies
0
Age
27
XP
4,618
Country
United States
How bad's the lag? I've tried GimX + Capture Card (Elgato HD60s) + Moonlight and Mario has too much lag.

If my session with an older brother (who lives not too far from where I am) on PC was any indication, it was just like being in the room with the person, the very occasional lag and lack of in-person trash talk notwithstanding.

Still, I'm a little confused; it allows us to stream the games from the Switch, or stream to the other person's Switch? Or stream the game/"desktop" from my PC to the Switch? I'm excited because Parsec has worked awesomely for myself as the host, but how it works here is going to depend on however its implemented. Also, I'm going to have to resort to using Horizon again for homebrew (which I was going to have to do anyways as not even battery performance on external battery packs with mounts to the Switch seem to be capable of keeping the Switch charge going up, only slowing its descent.)
 
Last edited by Silent_Gunner,

nachuz

Well-Known Member
OP
Member
Joined
May 21, 2017
Messages
634
Trophies
0
XP
2,041
Country
Chile
If my session with an older brother (who lives not too far from where I am) on PC was any indication, it was just like being in the room with the person, the very occasional lag and lack of in-person trash talk notwithstanding.

Still, I'm a little confused; it allows us to stream the games from the Switch, or stream to the other person's Switch? Or stream the game/"desktop" from my PC to the Switch? I'm excited because Parsec has worked awesomely for myself as the host, but how it works here is going to depend on however its implemented. Also, I'm going to have to resort to using Horizon again for homebrew (which I was going to have to do anyways as not even battery performance on external battery packs with mounts to the Switch seem to be capable of keeping the Switch charge going up, only slowing its descent.)
The sysmodule allows you to pass the inputs from an Xbox controller to a Nintendo Switch using wi-fi/ethernet
I have tested playing with 2 other friends through Parsec that live near me and we played Smash without a lot of input lag (around the same input lag you would have when playing Smash Online with a good connection)
 

nachuz

Well-Known Member
OP
Member
Joined
May 21, 2017
Messages
634
Trophies
0
XP
2,041
Country
Chile
I don't get it. Someone who live really far would be able to a game with you by sending input over internet? How he'll get the picture?
Just like it says on the thread, the point of this sysmodule is to emulate inputs and make you able to use Parsec alongside a capture card or SysDVR
 
  • Like
Reactions: StrayGuitarist

Silent_Gunner

Crazy Cool Cyclops
Banned
Joined
Feb 16, 2017
Messages
2,696
Trophies
0
Age
27
XP
4,618
Country
United States
The sysmodule allows you to pass the inputs from an Xbox controller to a Nintendo Switch using wi-fi/ethernet
I have tested playing with 2 other friends through Parsec that live near me and we played Smash without a lot of input lag (around the same input lag you would have when playing Smash Online with a good connection)

I see. So, by either using a capture card or this sysmodule in conjunction with sysDVR, one can host their games from their Switch to other people's PCs, phones, or whatever else (other hacked Switches) running Parsec. That about sum it up?

I'm sort of trying to make things crystal clear for those trying to gauge the possibilities of this sysmodule, because while the above scenario is cool, one could theoretically take their own Switch games, rip 'em, put it on PC, fire up Yuzu, and stream the game to others' PC's. And to just be able to stream those games from the Switch to the PC which will then stream those games to others in the Parsec lobbies is fine, but an idea I had was to maybe try to use this solution to, say, stream me playing the PC version of, say, Crysis 3 at max settings onto my Switch.

I know, "why not just use Steam Link?," but Parsec, compared to all of the other streaming services I've used so far, has had the best performance out of the one time I tried the Moonlight solution for Horizon, and Steam Link itself which really seems to only be for if you're in the same house as your PC, and as long as the game doesn't require a M/KB, then it should be playable on the Switch itself since all of the standard buttons are there.
 

Manito

Well-Known Member
Member
Joined
Dec 15, 2014
Messages
327
Trophies
0
Age
23
XP
404
Country
United States
This is incredible! This past week me and my friends were trying to see how we could pull something like this off. I was gonna install a VM to use Linux to emulate JoyCon and go through a whole process and then I see this comes out! I tested it with my girlfriend and it works really well! One thing that it conflicts with though, is jam1garner's Minecraft Skin Selector mod for Smash. When I installed sys-hidplus and selected Steve in the character select screen, the mod menu came up but then the whole switch froze and softlocked. Not sure why they're conflicting with each other but thought I'd share that and maybe you can see if you can replicate the issue yourself? I also have "MissionControl" and "syscon" sysmodules installed(which also deal with controller inputs). Aside from the issue with the Minecraft Smash mod, this is really awesome and I'm excited to see how progress goes!
 

Chrisssj2

Well-Known Member
Member
Joined
Feb 12, 2008
Messages
2,374
Trophies
0
XP
3,319
Country
Netherlands
For some reason I had to go to "C:\Users\Chris\AppData\Local\Programs\Python\Python37-32" and rename python.exe to python3.exe or I would get "python3' is not recognized as an internal or external command, operable program or batch file."

After that I ran the command, but it says:
welcome!
No gamepads found

Did I do anything wrong?
 

AkumaNoYami

Well-Known Member
Newcomer
Joined
Mar 1, 2016
Messages
95
Trophies
0
Age
28
Location
Bett
XP
864
Country
Germany
For some reason I had to go to "C:\Users\Chris\AppData\Local\Programs\Python\Python37-32" and rename python.exe to python3.exe or I would get "python3' is not recognized as an internal or external command, operable program or batch file."

Did I do anything wrong?
you are a genious :D i copy the python folder to my input_pc file
rename the python.exe to python 3 and it works (No gamepad found)

> now i send my desktop over parsec to my girlfriend pc > connect a controler to the pc
and it works :D
 

Chrisssj2

Well-Known Member
Member
Joined
Feb 12, 2008
Messages
2,374
Trophies
0
XP
3,319
Country
Netherlands
you are a genious :D i copy the python folder to my input_pc file
rename the python.exe to python 3 and it works (No gamepad found)

> now i send my desktop over parsec to my girlfriend pc > connect a controler to the pc
and it works :D
Glad to hear. But you say it also said for you "no gamepad found"? But then you follow up by saying it works for you? You mean you need to connect something like an xbox controller to pc first?

EDIT:
Yes you are right! You are a genius too!
Though it looks a bit strange... it shows 7 controllers.. when I hookup my DS4 controller via DS4windows.

Like in this pic.
http://prntscr.com/v9mcpj

I can now use my DS4 controller to controll my switch. Guess I now just let someone come in via parsec on my desktop, and join in on my switch stream.
 
Last edited by Chrisssj2,

Manito

Well-Known Member
Member
Joined
Dec 15, 2014
Messages
327
Trophies
0
Age
23
XP
404
Country
United States
I was able to use this last night with no issues but now, after entering "python3 input_pc.py {Switch IP}"
, nothing shows up in the command prompt. No "0 gamepads", nothing. It just creates a new blank line. What could be causing this?
 

Intronaut

A star maker
Member
Joined
Nov 18, 2014
Messages
772
Trophies
0
Age
28
XP
982
Country
Chile
Amazing work! I was able to connect my Wii U gamepad to my switch and it works fine. Despite small bugs, I was able to play Smash without noticeable lag. Thank you. I uploaded a video to show the performance:

I might try it with a new 3ds later

Pd: viva chile hermano!
 
General chit-chat
Help Users
    linuxares @ linuxares: but iuh... Epic