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

Issue with Evdev button mapping on Rock Band guitar on Steam Deck #12908

Closed
escapist1234 opened this issue Oct 30, 2022 · 18 comments · Fixed by #13377
Closed

Issue with Evdev button mapping on Rock Band guitar on Steam Deck #12908

escapist1234 opened this issue Oct 30, 2022 · 18 comments · Fixed by #13377

Comments

@escapist1234
Copy link

Quick summary

I have been trying to map buttons using a PS3 Rock Band guitar in RPCS3 on my Steam Deck. The Deck picks up the controller fine with the dongle connected and I have had (limited) success playing Beatles Rock Band with the guitar. The issue is the mapping of the Start and Select buttons - for some reason these are both detected to be RZ+.

Details

I have connected the guitar and the neck buttons, strumming bar, PS button work fine. The issue is isolated to the Select, Start and tremolo arm which all show as RZ+.

I have tried following the guidance here: https://wiki.rpcs3.net/index.php?title=Help:Controller_Configuration and amended the RX, RY, RZ, X, Y, Z values to true, and tried multiple combinations. This typically however, just ends up with them reading as LZ+.

Using Filter Noise prevents me from being able to map the buttons as they are added to the blacklist.

I've got two PS3 Rock Band guitars and both present the same issue. I have checked in RPCS3 on my PC (where these are connected via the MMJoystick method) and these definitely show up as unique buttons.

Attach a log file

RPCS3.log

Attach capture files for visual issues

No response

System configuration

No response

Other details

No response

@Megamouse
Copy link
Contributor

upload the evdev_positive_axis.yml

@Megamouse
Copy link
Contributor

In general you should only set the axis to true which cause issues, and not the other ones.

@escapist1234
Copy link
Author

Here's the content of the evdev_positive_axis file:

ABS_RX: false
ABS_RY: false
ABS_RZ: false

I've tried what feels like every combination of false/true and also the X, Y, Z values. At the moment, the Select and Start button are not responding to anything on both guitars. (though both register button presses on my PC). The tremolo arm is responding.

@escapist1234
Copy link
Author

escapist1234 commented Oct 31, 2022

Minor update - one thing I hadn't tried was Filter Noise. Now both Select, Start and tremolo arm are showing as LZ+

EDIT: then they stopped responding. Rebooted and they all show as RZ+.

@escapist1234
Copy link
Author

Just trying a few combos:

If RZ is set to false, then Start, Select and tremolo arm all read as RZ+
if RZ is set to true, then Start and Select read as LZ+ and tremolo arm reads as LY+

If I press Filter Noise on the Select or Start buttons, the following appears in the log:

E evdev: Evdev Calibration: Added axis [ 2 = ABS_Z = LZ+ ] to blacklist. [ Value = 127 ] [ Min = 0 ] [ Max = 255 ]
E evdev: Evdev Calibration: Added axis [ 2 = ABS_X = LX+ ] to blacklist. [ Value = 127 ] [ Min = 0 ] [ Max = 255 ]

@Megamouse
Copy link
Contributor

It's really simple:
first set everything to false.
Then try to map any button.
For example if it says RZ+, then you have to set ABS_RZ to true.
Then you keep doing that until you can properly map a button and don't get the axis anymore.

@escapist1234
Copy link
Author

Ok the issue is that I cannot get Start or Select to read unique values.

  • if ABS_RZ = true, then both Select and Start are both LZ+
  • if ABS_RZ & ABS_Z = true, both Select and Start are both LX+

If I add ABS_X and set to true, they don't respond. Filter Noise doesn't detect anything and says Blacklist is clear. If then set ABS_X to false or the line is removed (presume that's the same?) then back to the scenarios above.

Even tried ABS_LX and ABS_LZ but that has no effect.

I've got a workaround by mapping to one of the D-Pad buttons that is rarely used, but not ideal. I also experience an issue where the controller gets disconnected when the game boots unless I quickly press the button on the dongle to reconnect immediately as it launches. Is it worth raising that as a separate issue?

@Megamouse
Copy link
Contributor

You should clearly keep those 3 axis on true.
I'll have to look at a new log later to see why the start button doesn't do anything

@escapist1234
Copy link
Author

Here's a log - I just tried to configure Select and Start. Both ended up showing as LZ+. The log file seems to suggest it doesn't detect a difference between them but they are both detected at 127 rather than 255.

RPCS3.log
Screenshot_20221031_144041

For context, here's the lines from the log where I press the same buttons on the same guitar plugged into my PC using MMJoystick, Button 9 for Select and Button 10 for Start:

·! 0:00:13.875322 CFG: get_next_button_press: MMJoystick device Joystick #4 button Button 9 pressed with value 255
·! 0:00:14.556326 CFG: get_next_button_press: MMJoystick device Joystick #4 button Button 10 pressed with value 255

@Megamouse
Copy link
Contributor

I thought we established to keep ABS_RZ, ABS_X and ABS_Z on true.

@escapist1234
Copy link
Author

escapist1234 commented Oct 31, 2022

Sorry, the log below is with ABS_RZ, ABS_X and ABS_Z on true running through same process. It says LY+ now.

RPCS3.log

If I add ABS_Y on true then the button stops responding. Here's the log for that;

RPCS3.log

@Megamouse
Copy link
Contributor

those logs are empty

@escapist1234
Copy link
Author

Apologies - not sure what happened there.

Redid them - this is the first one with ABS_RZ, ABS_X and ABS_Z on true:
RPCS3.log

This is with ABS_Y on true as well where they don't respond:
RPCS3 2.log

@T3HM3T4L
Copy link

T3HM3T4L commented Nov 6, 2022

If you're using a Harmonix Rock Band guitar for a Rock Band game, shouldn't it work "natively" by whitelisting it in udev?

https://wiki.rpcs3.net/index.php?title=Help:Peripherals_and_accessories

I use this for my RB1 guitar in RB3 and RPCS3 picks up all inputs as if plugged into a real PS3.
This is on Endeavour OS (a variation of Arch, same as SteamOS).

I do however have the same "start and select don't register" issues if I try to play RB3 with my Band Hero guitar.
This one will not be picked up "natively" like the Harmonix guitar in RB3, neither in GH5 for example.
It requires to be assigned with evdev like you're doing now with your RB guitar.

If I can be of any more help for troubleshooting or testing purposes, I'd be glad to help.

@escapist1234
Copy link
Author

Hey - glad to see someone else has tried this. It is a Harmonix controller - currently using the PS3 Beatles Hofner bass guitar with the original dongle. I’ve added it via udev as in the guidance in that link (unless I’ve done something wrong - is there a way of verifying?)

RPCS3 shows it as a Harmonix guitar in evdev (see the screenshot I posted earlier). It’s just the select and start buttons that are the issue. My current workaround is mapping the left and right d-pad buttons to select and start to get through menus but it is awkward for triggering the score multiplier in game (which is usually via pressing select).

@T3HM3T4L
Copy link

T3HM3T4L commented Nov 7, 2022

When you follow the steps to add the udev rule (I just gave it access to all USB devices instead of the specific method), you don't need to add it as an evdev device anymore.
It will still show up listed under "evdev", but you can leave it as "null" instead of "evdev" and the game will just recognize your controller on the main menu of Rock Band the same way it would on an original ps3 now.

This way you have no hassles regarding button mapping anymore, start and select will work as well as tilt for Overdrive.
At least, that's the way it should be for all ps3 Rock Band peripherals.
I have a RB1 guitar and RB1 drums that now function like this, the Beatles version should work the same.

@agentwolf88
Copy link

Same isses. Start and select on ps3 guitar hero controller does not work.

Manajro Linux

@T3HM3T4L
Copy link

T3HM3T4L commented Jan 6, 2023

When you follow the steps to add the udev rule (I just gave it access to all USB devices instead of the specific method), you don't need to add it as an evdev device anymore. It will still show up listed under "evdev", but you can leave it as "null" instead of "evdev" and the game will just recognize your controller on the main menu of Rock Band the same way it would on an original ps3 now.

This way you have no hassles regarding button mapping anymore, start and select will work as well as tilt for Overdrive. At least, that's the way it should be for all ps3 Rock Band peripherals. I have a RB1 guitar and RB1 drums that now function like this, the Beatles version should work the same.

I'd like to mention that this used to work (and still does for 1 Harmonix product at a time) but if I try to play with the Harmonix keyboard and Harmonix guitar, they initialize properly

S sys_usbd: Ldd device matchup for , assigned as handled_device=0x1
S sys_usbd: Ldd device matchup for , assigned as handled_device=0x2

but then

E SYS: 'cellPadLddRegisterController' failed with 0x80121104 : CELL_PAD_ERROR_UNINITIALIZED [1]
U sys_usbd TODO: sys_usbd_attach(handle=0x115b)
E sys_usbd: Transfer Error: 4

I can post a log if wanted.

More on topic: I tested out my Band Hero controller in evtest and for start and select, it gave back this data

start button

Event: time 1672928016.939247, type 4 (EV_MSC), code 4 (MSC_SCAN), value 9000a
Event: time 1672928016.939247, type 1 (EV_KEY), code 313 (BTN_TR2), value 1

select button

Event: time 1672928051.290454, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90009
Event: time 1672928051.290454, type 1 (EV_KEY), code 312 (BTN_TL2), value 0

Should these be added to cellPad.h in some way? Because frets, strumbar and such are defined there, but no start or select button.

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

Successfully merging a pull request may close this issue.

4 participants