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,

nachuz

Well-Known Member
OP
Member
Joined
May 21, 2017
Messages
636
Trophies
0
XP
2,113
Country
Chile
What is this hardware of which you speak?
The hardware that I was speaking of is listed here: https://blog.parsecgaming.com/how-t...-anywhere-in-the-world-without-a-894df4d6f415
I think it's less than $100 but definitely more than $50
The pro of that is that you can use it on a non-hacked switch

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

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!

That's really cool O_O

Pd: viva chile
 
  • Like
Reactions: Julie_Pilgrim

gudenau

Largely ignored
Member
Joined
Jul 7, 2010
Messages
3,882
Trophies
2
Location
/dev/random
Website
www.gudenau.net
XP
5,376
Country
United States
So this does work with the piracy OS, which is nice.

Now I just want to figure out how I can use this with Steam Remote Play Together or whatever it's called. Maybe see if you can't spawn a fullscreen window with capture card input? It is pretty easy to make Steam launch a Python script as a game.
 
  • Like
Reactions: Julie_Pilgrim

Shaddap

Member
Newcomer
Joined
Feb 14, 2016
Messages
13
Trophies
0
Age
42
XP
284
Country
United States
I got this working fine on my end locally but when a friend connects over parsec, it never finds their controller, despite the fact that it works in every thing else (Windows Game Controller test, RetroArch, etc.). Is there anything specific that needs to be changed? They attempted this with a dualshock 4, both wired and wireless, with and without ds4windows to no avail. Using Python 3.9 if that makes a difference.

EDIT: False alarm! Looks like the issue was that closing Parsec didn't actually close it, it just minimized it to the taskbar as a system icon. Just had to exit Parsec entirely, have ds4windows ready to go, and then launch Parsec.

On a side note, is there a way to map the Home and Capture buttons? Both aren't working for me.
 
Last edited by Shaddap,
  • Like
Reactions: Chrisssj2

GolfDude

Well-Known Member
Member
Joined
Feb 2, 2009
Messages
886
Trophies
1
XP
1,837
Country
United States
curious since people are showing 3ds and wii u gamepad working on it.. i wonder if it can pick up any others like the xbox or ps controllers...
 

Intronaut

A star maker
Member
Joined
Nov 18, 2014
Messages
772
Trophies
0
Age
30
XP
1,005
Country
Chile
curious since people are showing 3ds and wii u gamepad working on it.. i wonder if it can pick up any others like the xbox or ps controllers...

Yeah. With x360ce, VDX and ViGEm you can receive any input and transform it to an emulated Xbox 360 controller, which is recognized by sys-hidplus.

If there's enough interest I can make a tutorial
 

Chrisssj2

Well-Known Member
Member
Joined
Feb 12, 2008
Messages
2,704
Trophies
1
XP
4,382
Country
Netherlands
h

Do you plan to use Parsec or to just connect your control to the switch? Because MissionControl already support DS4 afaik
I plan to use parsec with friends joining my screen, and playing with their dualshock/xbox controllers. Using the switch itself in handheld mode. But if that is not possible then I will have to use my elgato I guess to play with controller. Handheld only possible with sysdvr I suppose...
 

Intronaut

A star maker
Member
Joined
Nov 18, 2014
Messages
772
Trophies
0
Age
30
XP
1,005
Country
Chile
I plan to use parsec with friends joining my screen, and playing with their dualshock/xbox controllers. Using the switch itself in handheld mode. But if that is not possible then I will have to use my elgato I guess to play with controller. Handheld only possible with sysdvr I suppose...

I don't have a DS4 but if you are able to connect it to your pc and get x360ce to recognize it, there should be no problem.

I am planning to upload a tutorial later
 
  • Like
Reactions: nachuz

nachuz

Well-Known Member
OP
Member
Joined
May 21, 2017
Messages
636
Trophies
0
XP
2,113
Country
Chile
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.
Sorry for the late response, but yes, that is correct
And, although you could theoretically use Yuzu, there're a lot of PCs that can't run it properly and there's incompatibility with a lot of games. This sysmodule can also allow you to use any controller that is detected as XInput/Dualshock on Windows with a Switch in case you need it for that.

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

I'd like to make a simple pyhton bot for repetitive tasks, do you have a piece of working python code I can use as a template?
I'm not that smart...
You can check out the input_pc.py script
Basically, the sysmodule receives 17 values through TCP, including the amount of controllers connected (1-3), the type of controller connected (disconnect, pro controller, joy con), the inputs and the joysticks
To make a automatic script for those kind of tasks, you just have to send that info whenever you need to

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

is it possible to use a keyboard as a controller?
I'll add that to the "Stuff to add" list
It should be really easy to implement
 

enderer

Well-Known Member
Member
Joined
Jul 19, 2015
Messages
381
Trophies
0
Age
34
XP
1,652
Country
United States
nothing's happening. i followed the steps, installed 'inputs,' attempted to connect to correct switch ip and...
nothing. just a new line in cmd. no output.
i have a controller connected to the pc and gamepad viewer to check that it's working properly.

i tried renaming python.exe to python3.exe as suggested. still nothing.
 
  • Like
Reactions: Julie_Pilgrim

Intronaut

A star maker
Member
Joined
Nov 18, 2014
Messages
772
Trophies
0
Age
30
XP
1,005
Country
Chile
nothing's happening. i followed the steps, installed 'inputs,' attempted to connect to correct switch ip and...
nothing. just a new line in cmd. no output.
i have a controller connected to the pc and gamepad viewer to check that it's working properly.

i tried renaming python.exe to python3.exe as suggested. still nothing.

Yeah , i had the same problem. Instead of
Code:
python3 input_pc.py SWITCH_IP

Run the following

Code:
C:\Users\YOURUSER\AppData\Local\Programs\Python\Python38-32\python.exe input_pc.py SWITCH_IP

Note that the route may be different in your case, so make sure that a similar route exists in your device
 
Last edited by Intronaut,
  • Like
Reactions: Julie_Pilgrim

H0ly

New Member
Newbie
Joined
Sep 25, 2018
Messages
3
Trophies
0
Age
31
XP
77
Country
United States
im on linux, using an xbox one wired controller, all buttons work except the left and right joysticks up and down are opposite. Just fixed the problem

i fixed it by changing:

usedGamepad.dx_l = dx_l
usedGamepad.dx_r = dx_r
usedGamepad.dy_l = -dy_l
usedGamepad.dy_r = -dy_r

To:
usedGamepad.dx_l = dx_l
usedGamepad.dx_r = dx_r
usedGamepad.dy_l = dy_l
usedGamepad.dy_r = dy_r

also on xbox one wired control minus and plus are switched and x and y aswell i fixed it
 
Last edited by H0ly,

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • BakerMan @ BakerMan:
    fuck ubisoft, and fuck activision
    +1
  • realtimesave @ realtimesave:
    Nintendo needs to release a new console, switch is getting such shitty little games lately lol it's pathetic
  • Purple_Heart @ Purple_Heart:
    Lmao a new flashcart... The Unlock Switch... I knew it's not fake xD
    +1
  • NinStar @ NinStar:
    A new consoles won't solve that problem
  • NinStar @ NinStar:
    It will actually make it worse
  • The Real Jdbye @ The Real Jdbye:
    well actually
    a new console won't do anything right now, because the games are still in development, that's why there are few games being released
  • The Real Jdbye @ The Real Jdbye:
    it won't make the games finish any faster
  • Veho @ Veho:
    2/3rds of launch titles for the Switch 2 will just be lazy ports of Switch games anyway.
  • The Real Jdbye @ The Real Jdbye:
    probably
  • The Real Jdbye @ The Real Jdbye:
    maybe mario kart 9 will be a launch title
  • The Real Jdbye @ The Real Jdbye:
    i really want a new mario kart
  • Veho @ Veho:
    What, you mean the endless stream of DLCs doesn't count?
  • Veho @ Veho:
    Why develop a new game when you can just sell season passes forever?
  • Veho @ Veho:
    I'm still on MKDS so I'm not bothered :tpi:
  • The Real Jdbye @ The Real Jdbye:
    i like the dlc tbh, i'd like a new game more
  • ZeroT21 @ ZeroT21:
    but the current version is still selling fine at full price
  • SylverReZ @ SylverReZ:
    Hello
  • ZeroT21 @ ZeroT21:
    sup
    +1
  • SylverReZ @ SylverReZ:
    @realtimesave, You seen the Unlock Switch flashcart yet?
  • K3Nv2 @ K3Nv2:
    I'll see the 19.0 update that blocks use ability to it
    +1
  • K3Nv2 @ K3Nv2:
    Lol newegg+
    Screenshot-20240423-053504-Gmail.jpg
  • S @ salazarcosplay:
    does update 19 really block it
  • SylverReZ @ SylverReZ:
    Update 19 never came out yet. Just the 18.1.
    SylverReZ @ SylverReZ: Update 19 never came out yet. Just the 18.1.