RPCS3 / rpcs3

PlayStation 3 emulator and debugger
https://rpcs3.net/
GNU General Public License v2.0
15.37k stars 1.91k forks source link

[Linux] One of Dualshock 3's sixaxis axis not working properly #14220

Closed DaneelaArt closed 8 months ago

DaneelaArt commented 1 year ago

Quick summary

I don't exactly know if this is an rpcs3 issue or not, as rpcs3 seems to be the only emulator that even recognizes sixaxis, but the horizontal roll axis is always stuck way to the left, with movements only changing the value by 1 or 2. I'd at least like someone to confirm this at the offchance that it's my individual controller (last time i used it on a ps3 it was perfectly fine). Here's a recording of the gyro values in motion: https://youtu.be/dGOt_ZNfiWU

Details

No response

Attach a log file

RPCS3.log.gz

Attach capture files for visual issues

No response

System configuration

OS: Arch Linux KERNEL: 6.3.9-arch1-1 CPU: 11th Gen Intel Core i5-11400 @ 2.60GHz GPU: AMD Radeon RX 6500 XT (navi24, LLVM 15.0.7, DRM 3.52, 6.3.9-arch1-1) GPU DRIVER: 4.6 Mesa 23.1.3 RAM: 16 GB

Other details

No response

Megamouse commented 1 year ago

The default "center" values are 512 (399 for one of them). So this is normal as far is can tell from the video. The maximum value is 1023 probably due to it being stored as 10bit in the firmware.

Megamouse commented 1 year ago

I'll take a look if the GUI is showing the max correct (which may be higher than I remember anyway)

MSuih commented 1 year ago

Do you mean the G axis? I think that's the acceleration rather than position. Try to shake the controller very hard and see if the values change more when you do that.

DaneelaArt commented 1 year ago

I'll take a look if the GUI is showing the max correct (which may be higher than I remember anyway)

This isn't a GUI issue, it's a functionality issue. My other three controllers (Switch procon, DS4 and Dualsense) have widely recognized and fully functional gyro, with all four axis working as they should on rpcs3, meanwhile with the DS3 one axis is constantly detected as being pushed all the way to the left, which obviously breaks a lot of motion features

DaneelaArt commented 1 year ago

Do you mean the G axis? I think that's the acceleration rather than position. Try to shake the controller very hard and see if the values change more when you do that.

No matter how hard i shake, the value only changes by 1 or 2

Darkhost1999 commented 1 year ago

I get a solid 2 when I use DSHidMini on the G axis. But when I use official Sony driver I get full range of motion and yes its the roll motion like using your controller inside a steering wheel motion. As for how to make it work on Linux I don't know cause they use different packages and sources for their files. The quantity of people actually testing dualshock 3 support vs just using dualshock 4 or now dualsense is surprisingly low for a ps3 emulator.

Megamouse commented 1 year ago

You didn't really tell us which handler you are using. SDL, evdev...

DaneelaArt commented 1 year ago

You didn't really tell us which handler you are using. SDL, evdev...

hidraw

Megamouse commented 1 year ago

Works fine for me with the DualShock 3 handler: image

Megamouse commented 1 year ago

It even works with evdev: (albeit with different values) image

Megamouse commented 1 year ago

Sounds like something on your system is interfering or your Controller doesn't work properly

DaneelaArt commented 1 year ago

It even works with evdev: (albeit with different values) image

evdev doesn't even detect the gyro on my end, even though it's clearly working and is picked up by my polling rate script

Megamouse commented 1 year ago

You need to add your user to the input group iirc. The motion controller appears as separate device in the list

DaneelaArt commented 1 year ago

got evdev to detect it, however all three or the R-axis are dead, but at least this is a usable workaround for some games, a dead centered axis is better than a barely functional skewed axis

SiriusVI87 commented 8 months ago

I am on Windows 11 and I experience the same exact behavior with the G axis value being stuck. I have bought 2 original used Dual Shock 3 controllers from a dealer I trust. Both of them show this behavior. Therefore I concluded that probably DS3 controllers just don't use the G axis (I never personally owned a PS3, so I wouldn't know).

However, I recently got another supposedly original PS3 controller still sealed. The guy who sold it said it was a leftover controller from back in the day. I was sceptical at first, but went ahead and bought it anyway.

The battery in that controller didn't work, so I replaced it. When I tested it with RPCS3, I was surprised to see that ALL the motion control values worked, including the G vaue.

I am somewhat confused right now. I refuse to believe that the 2 controllers I bought before showed the EXACT same bug with the G value not working. It is really strange.

EDIT: all of the above was using DSHidMini. Using the official Sony drivers, all 3 controllers work.

But I am still confused. Is something wrong with the two DS3 controllers I bought used or is the "new" controller I bought actually a fake that implements the motion controls cirrectly? I am asking because using my DualSense or my DS4, tje motion controls DO work fine, as well.

Darkhost1999 commented 8 months ago

I doubt your controllers have anything wrong with them since Nefarius the author of dshidmini is aware of the G axis not working. I do believe Mega's tests here was all on Linux and this entire discussion was made to be Linux only when the label was thrown on this topic.

SiriusVI87 commented 8 months ago

I doubt your controllers have anything wrong with them since Nefarius the author of dshidmini is aware of the G axis not working. I do believe Mega's tests here was all on Linux and this entire discussion was made to be Linux only when the label was thrown on this topic.

That's very interesting. I didn't find any official statement for this issue. But if it is a known issue, I can put my mind to rest and just accept it.

It still doesn't explain why the third, still sealed, controller that I bought works flawlessly with DSHidMini (Vibration, Motion including the G axis, wired + wireless bluetooth, everything).

Any idea why that might be the case?

Megamouse commented 8 months ago

Closing as the original issue is not reproducible. It's most likely a broken device or driver.

Megamouse commented 8 months ago

I doubt your controllers have anything wrong with them since Nefarius the author of dshidmini is aware of the G axis not working. I do believe Mega's tests here was all on Linux and this entire discussion was made to be Linux only when the label was thrown on this topic.

That's very interesting. I didn't find any official statement for this issue. But if it is a known issue, I can put my mind to rest and just accept it.

It still doesn't explain why the third, still sealed, controller that I bought works flawlessly with DSHidMini (Vibration, Motion including the G axis, wired + wireless bluetooth, everything).

Any idea why that might be the case?

Probably a different firmware on it.

SiriusVI87 commented 8 months ago

Probably a different firmware on it.

Is there a way to update the firmware of my DS3 controllers?

Megamouse commented 8 months ago

Most likely by connecting it to your ps3 with usb

SiriusVI87 commented 8 months ago

Most likely by connecting it to your ps3 with usb

I don't have a PS3 unfortunately. Is there a way to update the controller firmware on a PC is what I meant.

SiriusVI87 commented 8 months ago

OK, so I bought another DS3 controller and it also has the same issue with the broken G axis. I'm starting to wonder if there is a way to figure out ehat controller will work before I buy them.

Another DS3 controller should arrive shortly and I will test that one, too. let's see.

EDIT: Just to make sure that my PC config is not at fault, I tried all controllers on a separate PC and they show the exact same behavior. So it's not my config that's at fault, either.

EDIT 2: All devices show in DSHidMini as: USB\VID_054C&PID_0268\7&E523A19&0&3

There is no difference.