Help! 2nd DS4 input problem

HI, I am having an issue connecting a second BT DS4 controller, hope you can help!?

[B]SYSTEM:

[/B]Windows 8.1 Retroarch Nightly GIT 954121b 2 Dualshock 4 controllers (connected via BT) DS4Windows xinput Wrapper BT Keyboard

[B]INPUT CONFIG:

Driver settings[/B] [ul] [li]Input driver - null[/li][li]Joypad driver - xinput[/li][/ul]

Input settings [ul] [li]Max Users - 4[/li][li]Menu Toggle… - None[/li][li]Remap Binds Enable - ON[/li][li]Autoconfig Enable - OFF[/li][li]Display Autoconfig Descriptor Labels - OFF[/li][li]Display Core input Descriptor Labels - ON[/li][li]Hide Unbound Core Input Descriptors - ON[/li][li]Bind Mode -RetroPad[/li][li]User 1 Device Type - RetroPad[/li][li]User 1 Analog to Digital Type - None[/li][li]User 1 Device Index - Xinput Controller (User 1)[/li][li]User 2 Device Type - RetroPad[/li][li]User 2 Device Index - Xinput Controller (User 2)[/li][/ul]

When I start BSNES Mercury or Nestopia core and load content, controller 1 doesn’t work, I power on controller 2 and it is identified and works as controller 1. If i go into input settings, my device 1 has been identified as WIRELESS CONTROLLER and device 2 is registered as it should (xinput user 2). If i manually change user 1 index to XINPUT USER 1 than both controllers work as they should.

Alternatively, if I don’t configure a second controller, the 1 controller will work as expected without issue.

I have been through these forums and haven’t found anyone with a similar issue. I have tried a variety of configurations and settings. I have a suspicion that RetroArch is picking up both the DINPUT & the XINPUT from the wrapper and registering each as a device? I thought maybe my BT keyboard was being registered as a gamepad, but it didn’t make a difference when I took it out of the loop. Is there a way to manually bind a controller to a port permanently?

Any suggestions would be great! Sorry if this is too wordy, just trying to be as descriptive as possible.

I would be happy to upload a log if someone could explain how to generate one!

After more testing, I found out my controllers are being identified by retroarch as 2 devices (seperate PID & VID) for the DINPUT and XINPUT of each controller. This must be the nature of the wrapper, DS4Windows has a “Dinput only” feature, when its enabled I get no input from the controller.

Also, both of my controllers are being identified as the same device, same PID & VID in retroarch. I don’t know much about how these IDs are assigned.

Is there a way to create an autoconfig profile for the DS4 and have retroarch identify each controller as separate devices?

~thanks

VID/PID should be the same with both always. Why are you using these as dinput, xinput is flawless with this. I use the original SCP input wrapper and it works perfect out of the box.

Thanks for your reply Radius!

I am trying to use xinput, my config is listed in the first post. From what I understand, there is a larger amount of BT “overhead” with the DS4 controllers. The SCP input wrapper was originally designed for use with the DS3 controllers, and than later DS4 compatibility was tacked on. In my experience, the newer wrapper tools: Input Mapper & DS4Windows (j2k fork) do a better job of managing the more aggressive DS4 controller. I immediately noticed input latency decreased, random drops stopped happening, and my BT range increased. They also include several features exclusive to the DS4 (touchpad, LED light color etc.).

…Anyway, xinput does work for me, when I use only 1 controller. As soon as I connect the second DS4 it kicks the first DS4 off the port it was bound to. I haven’t been able to get 2 controllers working yet.

Because my controller is being identified as 2 devices, is there a way to permanently bind 1 PID to the input port?

= 1 controller

Hey,

Have you made any progress, did you get the controllers to work? I’m having the same issues as you’re having.

I changed autoconf to be more reliable with multiple controllers, try again and let me know please.

Hey,

Sorry, what do I do? Download the latest build again?

Thanks :slight_smile:

Well most of the changes were on the weekend, Now whenever I hook up a controller it’s correctly assinged to one port and never overwrites the other one

[QUOTE=Radius;26126]Well most of the changes were on the weekend, Now whenever I hook up a controller it’s correctly assinged to one port and never overwrites the other one[/QUOTE]

I’ll test it out tonight and get back to you :slight_smile:

Hey,

I’m still having problems, controller 1 works fine, but when I turn the controller 2 on, none of them work.

I turn off controller 2 and controller 1 continues to not work until I turn off controller 1 and retroarch, then turn on controller 1 and retroarch and controller 1 works again.

This is really confusing, any ideas?

Try another driver? it works fine for me with SCP input wrapper, I don’t have 2 DS4s but it works fine with one DS3 and one DS4 I just tried 1DS3, 1DS4 and 2 XBOX 360 controllers on a clean installation and the 4 worked perfectly without tweaking anything (tested bomberman with snes9x)

Just use SCP input wrapper, the other mappers are donationware crap.

http://forums.pcsx2.net/Thread-XInput-Wrapper-for-DS3-and-Play-com-USB-Dual-DS2-Controller

Is this SCP Input wrapper?

Yes that’s what I use

Will test it out in a bit cheers

I think I fixed the issue, I stuck with DS4Windows since I like the features and stuff.

What I did was pretty simple really, I uninstalled the xbox360 driver, unpaired any controllers and deleted them from the device manager then reinstalled the xbox 360 driver and paired them again, works fine now.

Bit annoyed that I didn’t think of doing that before. Thanks :slight_smile:

I’d like to just point out that the SCP Wrapper has all of the features you listed for DS4Windows. Controller light control is there and works fine. Touchpad can be enabled and disabled after you set it up in the settings. I have zero problems with random drops. I haven’t noticed any significant input lag on any game. I use SCP wrapper with two DS4 controllers with zero issues. It’s easy to setup and works fine. The actual name of the tool is “DS4Tool”. It wasn’t designed for DS3 and had DS4 tacked on, it was designed specifically for DS4. It’s no longer in development, but I don’t see that as an issue since it works for me. So just clarifying for other people reading this thread that might get the wrong idea about SCP Wrapper.

Can you link to the wrapper you use? DS4Windows has had a title change to ‘input mapper’. There are so many forks of the original tool.

I had the same problem with RetroArch and I was able to get it working. I was having trouble getting two or more Xinput devices working, one of which was a DualShock 4, and the other three were wireless Xbox 360 gamepads. Mixed in with my various devices are several DirectInput gamepads that I do not want RetroArch to use, including one that corresponds to my DS4 gamepad and occasionally some that correspond to WiiMotes.

The problem in RetroArch is that there’s no way to set it to only use Xinput devices. Even when I set “Input driver” to “null” and “Joypad driver” to “xinput”, it still lists DirectInput gamepads along with Xinput gamepads in the Input settings and will automatically choose them regardless of whether autoconfiguration is turned on. This means that there’s no way for me to get it to consistently pick the Xinput gamepads I have connected for slots 1-4. The DS4 gamepad always has both an Xinput and DirectInput device that corresponds to it (I am using DS4Windows) which screws everything up. But even if I used a different DS4 driver, I would still have this problem because my system also has at minimum four DirectInput devices that I use for compatibility reasons with other older games and emulators. I tested this with both the latest stable release of RetroArch and one of the very recent nightlies (I think from Sept 29).

If RetroArch simply had a way of only using Xinput devices, everything would work perfectly for me and everyone else with DS4 troubles.

The way I ended up getting it to work was to use four virtual DirectInput devices instead of Xinput, and turn off autoconfiguration. Since RetroArch, like most other games that support DirectInput, uses the enumeration order of DirectInput devices when determining which gamepads correspond to which slots, I set it up so that my four virtual devices are always the first four DirectInput devices. (This took quite a bit of work and hackery. I can describe how I accomplished it if someone is interested.) Combined with the fact that these are never disconnected, the result is that none of the slots ever are switched out for another gamepad, including after I reboot retroarch or my computer. I then used a piece of software that I hacked together to map all Xinput controllers on to the virtual devices. Specifically, I used vJoy for the virtual devices and xboxToVJoy to map Xinput devices on to them. And now everything works 100% of the time. Whatever Xinput gamepads are connected will be mapped to slots 1-4 in the order in which they were turned on, just how it should be.

Im not sure if this helps or not because I only have one controller, but I use this DS4 Software and it has an option to “Hide DS4 Controller”. Makes it so games only pick up the xinput

I’m actually very interested in how you did this, since I’m pretty much trying to do the same thing as you have done. If you have time, would you be willing to go into it?

Thanks!