Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Power A Wireless Switch Pro controller not recognized v5 #84

Closed
caseyomah opened this issue Dec 29, 2018 · 6 comments
Closed

Power A Wireless Switch Pro controller not recognized v5 #84

caseyomah opened this issue Dec 29, 2018 · 6 comments

Comments

@caseyomah
Copy link

caseyomah commented Dec 29, 2018

Power A Wireless (only, no USB-C port) Switch controller is not trapped by BetterJoy v5
Controller works (without gyro) out-of-the-box (Both Input types per JoyToKey) but is not detected by BetterJoy, HidGuardian can successfully mask the device, and set the PID of BetterJoy, but since BetterJoy refuses to recognize the controller it does not attempt to get gyro info. (I assume also the reason ViGEm doesn't create a X-Input controller)
Shows up as:
HidGuardian:
Nintendo Wireless Gamepad
HID{00001124-0000-1000-8000-00805F9B34FB}_VID&00020000_PID&0000
Game Controllers:
Wireless Gamepad
Device Manager:
Lic Pro Controller
Device instance path
BTHENUM\DEV_000BE470085B\9&2C57BC94&0&BLUETOOTHDEVICE_000BE470085B
Hardware Ids
BTHENUM\Dev_000BE470085B
Compatible Ids
BTHENUM\GENERIC_DEVICE
Configuration Id
bth.inf:BTHENUM\GENERIC_DEVICE,BthGenericDevice.NT

Update:
Poking through the code I see why:
Program.cs:
31:private const ushort vendor_id = 0x57e;
32:private const ushort vendor_id_ = 0x057e;
Above lines select for Hardware Vendor ID of Nintendo, PowerA does not spoof Nintendo VenId, (instead leaving the field blank)?
108: IntPtr ptr = HIDapi.hid_enumerate(vendor_id, 0x0);
Above line then enumerates on the Nintendo vendor_id as defined in line 31 previously referenced.
HIDapi.hid_enumerate() is imported into HIDapi.cs here:
37:public static extern IntPtr hid_enumerate(ushort vendor_id, ushort product_id);
Where you see it takes two unsigned shorts, representing vendor and product ids respectively.
I believe the best bet to add support is to use HIDapi.hid_free_enumeration():
40:public static extern void hid_free_enumeration(IntPtr phid_device_info);

@jjosua
Copy link

jjosua commented Mar 25, 2019

Yep, Having the same issue. The PowerA 3d party Switch Pro controller isn't recognized. I also get a Unhandled exception error if I hit the Add Controller button. I'm not sure if that is related.

@xqdoo00o
Copy link
Contributor

xqdoo00o commented Mar 26, 2019

Yep, Having the same issue. The PowerA 3d party Switch Pro controller isn't recognized. I also get a Unhandled exception error if I hit the Add Controller button. I'm not sure if that is related.

Maybe you could try this (tieba) to see if it works.
The download address is here gdrive.

@IBD3532
Copy link

IBD3532 commented Jun 7, 2019

Since developers are not fixing 'Add Controller', we can't use PowerA controllers in Cemu.
Betterjoy recognizes vendor ID of Pro Controller as you mentioned, so I'm wondering if it works when I edit VenID part in the program to PowerA's VenID.
Or do you mean this controller has no VenID? If this is the problem, then it would be hard to fix it, though.

@numchuk12
Copy link

I am able to use this controller in CEMU but only with DInput which means no rumble support and gyro controls. Essential for some games especially BotW.

@Davidobot
Copy link
Owner

Solved using nonOriginal controller option.

@Davidobot
Copy link
Owner

If anyone wants to test a proper way of adding 3rd party controllers - #419 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants