DragonRise USB Driver Issue
The generic DragonRise based N64 controllers that you get off of ebay appear to have an issue with how their axes work. Currently they register Joystick movements in jstest in a really odd manner:
DPAD-L: Axis -0
DPAD-R: Axis +0
DPAD-U: Axis -3
DPAD-D: Axis +3
Joystick-L: Axis -2 (Axis -0 Binary)
Joystick-R: Axis +2 (Axis 0 Binary)
Joystick-U: Axis -3 Binary
Joystick-D: Axis +3 Binary
As you can see, the driver is currently interpreting Joystick X movement as both Axis 0 and 3, with 3 displaying the analog data, and 0 replicating the same input data but in binary form i.e. either fully press or no press. Unfortunately the Joystick Y movement is completely broken and only interprets binary Y movement and has no analog data at all. Reportedly this problem does not exist in Windows, although I am experiencing it on mac using both Joystick and Gamepad Tester and Controllers Lite (can't confirm the duplication, can confirm the input Axis being used), and haven;t been able to confirm.
My question is- is this a driver issue, or is there something physically wrong with these controllers? I have two and both operate in a similar manner.
Also to note:
Note that the linux kernel driver for this controller was broken from
kernel 4.4 until 4.9. With the broken driver the joystick axes
numbers will be off. This can be fixed by reverting commit
18339f59c3a6698ee17d32970c9e1e450b16e7c3 and rebuilding hid-dr.ko.
I'm going to pull one apart tomorrow and see if I can see how the buttons are soldered. I haven't looked into which version of the linux kernel RetroPie currently uses- is it between 4.4 and 4.9?
The fix has now been applied: