-
Notifications
You must be signed in to change notification settings - Fork 813
DS5 Support? #1545
Comments
DS4Windows is an XInput emulator. There is next to no info about the DS5 API, except that it will "work" on PC. Does it have its own XInput driver or does it still rely on obsolete DInput? Nobody knows. |
The TL;DR version is no. Now for the more detailed explanation. The future plan is to deprecate DS4Windows and use a different mapper base for a possible DualSense mapper application. As there is close to no info out there about the DualSense, there is no point worrying about hardware specific details. Based on one DualSense unboxing video I have seen, the DualSense will act as a generic DirectInput controller when plugged into a PC much like the DS4. It will probably take some time after the PS5 is released to the public in order for people to reverse engineer the various protocols so that the extra features of the DualSense can be utilized; support for utilizing the DualSense Gyro will probably be the most important. Currently, I am working on a different mapper mapping against the Switch Pro controller. No mapper that supports the Switch Pro controller can really do what I want so it is being used as the main test case; Steam Input is probably the closest. I am attempting to make the mapper base more device agnostic hoping that it will be easier to support various devices in the future; many portions of DS4Windows depend on aspects specific to the DS4 hardware. Some progress has been made but nothing has been made with general users in mind. https://gitlab.com/ryochan7/switchpromappertest/-/tree/action_ideas My main mapping goal right now is to be able to play Oblivion with the Switch Pro controller. The test mapper is just about there. One essential feature that is still missing is some sort of Outer Ring binding system for analog sticks. The following mapping is what I am essentially trying to duplicate. Even Steam Input falls short of supporting everything that I used to be able to perform. elder_scrolls_oblivion.gamecontroller.xml |
I guess I am going to somewhat reverse my stance on this. As a stop gap measure, I would hope to offer some initial support for the DualSense controller in DS4Windows before finalizing a different mapper. Related work is happening as discussed in issue #1098. There is now a test branch for mapping the Switch Pro controller in DS4Windows. Some more work and testing have to be done before I would consider incorporating those changes into the jay branch. Hopefully a DualSense device reader class can be made that will read from the device and populate the DS4State object. Then the Mapping class would somewhat know what to do with it. Luckily there is still some time before proper DualSense support would be possible. |
Just passing by and dumping information... https://gist.github.com/894da226d73afb3bdd195df41b3a26aa Yes it still uses USB HID and therefore dinput by default unless |
You realise what DInput stands for, don't you? It isn't any more of a free standard than XInput |
If I'm not mistaken dinput is how Windows handles USB HID class devices, while xinput is normally specifically for Xbox controllers (which uses proprietary protocol independent of USB HID standards) It's possible, however, to hook games use xinput and convert dinput to xinput or let someone writes a driver specifically for a device that handles standard HID stuff and dumps xinput stuff on the other end. So yes Dinput is not free because it's still a M$ standard but it works on top of the (more) free USB HID standard. There's a reason why Linux takes PS4/PS5 controllers even without hid-sony because evdev works on different underlying protocols including the xbox controller protocol and generic HID (no more "HID must use dinput unless people write a xinput driver for it" nonsense) |
XInput is for the most part just a more advanced protocol than directinput, which hasn't been touched since Dx9-ish. The main reason everything supports it isn't because of any real protocol differences so much, more that it's just been around for so long, and most controllers supported it since windows support is basically a given If XInput was a super complicated protocol, you wouldn't see the literal pile of plastic that is the third party controller market. There are three major apis for controllers. DInput, XInput, and Nintendo-cloudkukuland-differentforthesakeofbeingdifferent |
By "obsolete" I meant "deprecated/legacy". It's not a personal preference, it's just been officially abandoned for 15 years. |
@Ryochan7 Not sure if he/she is going to open a PR but the code is here https://github.com/CoderCoco/DS5Windows/ |
So most of the inputs are mapped out now. For output report, however, I only ever got rumble motor emulation working (not EDIT: I mapped some of the output stuff out. Check out my gist I posted above. |
I've been using x360ce for now which is working but much rather use DS4windows. I hate that x360ce has xbox controller connected under Game Controllers at all times when the app is running which blocks my screensaver from kicking in.
When you hold down the PS button to turn it off and the blue light turns off, does it still show up under Game Controllers? |
Yes, I get the same behavior. The controller is off, but it still shows connected in Windows. |
When I am playing Day by daylight with dualsense connected to PC via usb, and set the sound output to dualsense. I can fell the controller vibrate with the background music and manual selection. But haptic feedback (or any vibration) does not work at any another game I tested so far (MHW, Hades, Minecraft), and the dbd game play footage on YouTube either. I am guessing the haptic feedback work by getting certain frequency from sound...? |
DS5 declares a 4-channel USB audio interface besides the HID stuff. The rear left/right channel controls the rumble motors/haptic feedback units on the left/right. Simply play a track on those 2 channels to get haptic feedback output. No extra drivers/code necessary. |
Are there application than can make regular sound(?) play on those 2 channels? Or convert the signal that suppose to make controller vibrate to get haptic feedback output. I googled but only find a bunch of USB Audio Interfaces stuff. |
If you're on Windows you can use speaker fill to accomplish that. Seems to work in nearly everything but Chromium based browsers (and Discord). If you don't know how to enable speaker fill I made a quick tutorial a few days ago: https://youtu.be/EzqaclFn_Q4 |
Cool, it is working ... kinda |
@Daltz333 It depends on what work he is doing. If it is based on the default Input Report used for DirectInput (0x01 IIRC) then it is not worth worrying about. If the DualSense uses similar Input Reports to the DS4 then maybe there is something to work with before the PS5 console comes out and hackers find out how the DualSense interacts with the console. DualSense support without at least supporting the Gyro is mostly pointless to me. |
Also, for people that might have the DualSense already, people might want to look at the Input Report data in HID Report Listener. That might be an easier way to analyze input packets for data changes as buttons and axes are engaged. |
Link to main page: |
That's exactly what I did because supporting just the standard HID report seems pointless to me as well (it already works ootb so don't touch it lol). I mapped out a bunch of extended stuff as well as part of the output report (for rumble, leds and Adaptive Trigger™®© Patented wankery) and put them in the comments of the hidrd report descriptor dump. As for the IMU pretty sure there's a calibration data however I'm too lazy to verify if it's in the same format as DS4. Also seems that CoderCoco's fork has IMU as well. Not sure if it's working though. |
DS5 Controller.zip |
I would generally agree with this assessment. It's pointless to even focus on development of DualSense support without gyro and possibly even other features. If people want Xinput support currently they can use x360ce to do what DS4Windows does, albeit without force feedback, which I guess is fed through a different driver for the controller itself or the sound system it seems. Not sure personally. |
As you can probably tell from the listener report that was posted, gyro is able to be easily supported (behaves the same as well). The overall Input Report structure is similar, but not the same as DS4: Some indices are offset or moved around. |
Actually a bit too much "shuffling the bits for the sake of shuffling the bits". It's like $**y intentionally obfuscates the protocol or at least breaks compatibility with PS4 so even "accidental suport" won't happen. (Ironically PS3 got accidentally supported lol) |
Knowing Sony's track record, I can see them making some report changes only for the purpose of breaking compatibility. |
Just wanted to chime in my support for this idea. Loving the feel of the DS5 and would love to see the same support for it as with the DS4. |
https://github.com/jtran2795/DS4Windows/ I uploaded a release as well if anyone wanted to play with it. I only added BT connection support though. |
Very cool. Glad to see some progress being made. Looking forward to further discoveries and the like. |
Could someone please recommend tools to debug bluetooth connections? I have found sources of hidapi with test program, built it, but got almost same output for W7 and W10, just minor differences in device path address, so that's not much helpful. |
Settings seems to be OK. As an experimental testing try to set the LS (or RS which ever stick is used in the game to move the game character) deadzone to 0.50 value and see if the "auto-walking game character" issue is gone. If this doesn't help either and the physical gamepad is hidden then I don't know what is going on. |
The value you had set as a bold font in the hardware ID is a part of the USB or BT host identifier. The value may be different when you connect the device to a different BT or usb host. But that is perfectly normal. How deep you want to go with the debugging? Down to the raw data traffic in BT? Or are you just trying to debug some connection issues? %systemroot%\inf\setupapi.dev.log file shows lots of info about connections, but not about data traffic. If you are just debugging why a gamepad doesn't show up in DS4Windows app then the debug version of DS4Windows may tell you a bit more why the connection fails. But, if you are debugging and capturing the raw BT data traffic then Linux is your best friend to debug BT data traffic. |
I’m using the DS5 controller with the latest version of ds4windows and I am getting significant lag especially when aiming a fun or moving the left stick where it is not smooth and moving with the stick is jerky or too sensitive. Is there a way to fix this? Should hide controller be checked? |
@mika-n I want to figure out why lightbar and rumble aren't working via BT connection in Windows 7. |
Doesn't the LED work or light up? |
@token0 Then one way to go is to tinker with DS4Windows code and try different output and input HID buffer values in various bit fields. And to dump out received and sent HID buffers on the screen or logfile and trying to figure out what each of those bit fields may do. This discussion and the app code has lots of clues about what various bit fields mean. And have you tried to run the debug version of DS4Windows app? It dumps out lots of extra messages and it may help to figure out why input or output HID messages are not doing what those are supposed to do. And third. If you have a fake chinese copy of DS4 gamepad then those often struggle with rumble/gyro/lightbar over BT even when those may work over USB. The debug version tells more details about the gamepad (HID hardware ID value). |
It is interesting that on Android I was testing it yesterday and I was getting some success with DualSense to use on Xcloud, I managed to map the buttons with an app called gamepad tester, but somehow it seems that it has changed some configuration on the controller, because it still remains the configuration, even if I deleted the app, as if it had changed the controller driver or firmware, now I don't know what to do |
I just got a Dualsense and the rumble feels awful and wrong. Even at 10% rumble strength it's too strong and lingers for far too long, there's no nuance to it; in AC Origins when you highlight an option the DS4 gives a little subtle shake like a speedbump (or the wiimote when you hover over Wiii channels), but the Dualsense just goes ZZZZZTTTTTTTT. It's also loud. At 10% strength it sounds and feels like an electric toothbrush, and at 100% it sounds like a DS4 vibrating while resting on a table. Am I doing something wrong or is my OralSense-B defective? |
Are you using it in Steam? Rumble is currently a bit too strong via USB. Try it over Bluetooth if you can. However, if you want the proper haptic feedback experience, plug in your controller via USB, and use a program like VoiceMeeter to mirror system audio to the controller haptics and your headphones. Make sure to turn on stereo repeat/speaker fill/whatever they call it. |
I'm using DS4Windows. I noticed no difference in rumble over BT or wired. |
Has anyone here played over bluetooth for an extended period of time? I did some retro gaming yesterday and after maybe 4 hours the controller disconnected and reconnected again. Same thing happend today so I'm starting to doubt that it's a coincidence. I don't believe that it's the connection and it's definitely not the battery either. |
Sony published a patch for the linux kernel with DualSense support. Haptics are limited to traditional rumble emulation for now, but if there's any doubt about any of the other details, it's certainly a great resource. |
microphone work on bluetooth? |
no, only when connected through the cable. |
any advancement on bluetooth audio? |
Can you configure the DualSense in a way that allows you to use the integrated microphone while a headset is plugged in? Edit: Turns out you can choose a microphone source on the PS5, so it's definitely not a hardware limitation. Somebody has to do more reversing though. |
So when plugging in a headset to the DualSense, the Wireless Controller microphone in Windows starts using headset mic input instead of controller mic input? |
@Anuskuss @WickAUS Mic selection is done via the audio flag byte in the output report (index 8) bit 2 (requires toggling bit 8 of index 1 to have an effect). For a proper stereo signal from the internal mic you will likely want to set 0x04 as well. Relevant bits: Whether an external mic is attached you can tell from input report index 54 bit 2 being set (and bit 3 not being set since this would mean it is being plugged in/out right now (a temporarily invalid state)). And yes, if no report alters the behavior, the default mic source for the controller is changed when connecting a headset. If you're on bluetooth adjust indexes accordingly. |
@ginkgobitter Thanks for the info! Hopefully @Ryochan7 finds some time to implement this someday. |
it would be cool if the same behavior could be figured out to send audio to the controller (using bluetooth) |
@Hexality I agree that that would be nice, but DS4Windows is an input wrapper. For bluetooth audio you'd need a whole driver. |
@Anuskuss he already realized that himself about a month ago. @Anuskuss @Hexality Neither of you has contributed anything relevant here. All you are doing is spamming developers' inboxes with notifications. Can you both (and everyone coming across this thread for that matter) please do everyone a favor and read ALL THE POSTS and the linked material before posting ANY general questions? Nobody here cares about
Most of us are working on this in very limited spare time. If we get notifications from this thread, we are hoping for new insights that could be helpful, or mistakes that need to be addressed - what we see instead tends to be spam or repetitive questions that have long been answered and are putting people off from working on open source projects altogether. I do genuinely feel sorry for Ryochan7 for having to manage this project in particular. So please, do read everything written in this thread before wasting anyone's time, try to understand, CONTRIBUTE and keep irrelevant remarks to a minimum. If you still have questions on how you can help after you're done, ask them. If there's a problem with what's already implemented/documented, point it out or even better, figure it out yourself and post the correction here to help everyone out. Thanks to all the tools many of us have already provided, the barrier to entry has gotten ridiculously low, yet, so remains the level of help we receive. |
Hello all. I just updated to the currently latest version 2.2.2, and I noticed there's no option to disable "Player LEDs" of the DualSense. |
|
and? that's a common public request "issue" made by a DS4Windows user, I'm not a C#/C++ dev nor know how to trace to show doc here, I'm here contributing with base help not related to the software itself but with bug report. If you're annoyed by answers like this, than mute me here, stop being a toxic user just because you know something that others don't. |
Damn, this guy had a whole meltdown and deleted his entire online persona lol. Anyway, speaking about my bluetooth problem: I never had issues with my DS4s so obviously I got concerned when suddenly my DS5 got disconnected after prolonged usage (and I can't even tell where the error was because by the time I'd look at the bluetooth menu, the DS5 was already reconnected). But since nobody came forward with a similar issue and it stopped happening to me, I can conclude that it was probably just a coincidence and the case can be closed. No need to lose your mind, Andreas 😉 |
have ever happened to you to the controller to get its lights off and disconnected from ds4win but the controller itself still being connected to bluetooth? |
that's the only issue that I've been having since last update (the other one, not the latest) |
I searched the issues and couldn't find any mention of the DS5 or the PS5,
I am wondering if you plan to add support for the DS5 within this project, or if it'll be separate/not happening at all.
I understand you'd obviously need to own one yourself and I am not expecting anything from you as the developer, just wondering your thoughts on the subject.
Many thanks, Pedro
The text was updated successfully, but these errors were encountered: