Generic DS4 Not working on a specific machine

Hi, this is my first post here, sorry if I’m too verbose. (And English is not my native language, sorry for any inconvenience).
I searched the web first but didn’t find anything that work at all so I’m asking for help here.

I was trying to help my cousin to begin to use Linux. So I suggested him to use Manjaro instead of ubuntu/mint/debian-based-distros. He liked Manjaro a lot, so I told him the basics of pacman/pamac, he get used to terminal fast, however he like to play games and asked me for helping with a Generic DS4 which was not working on his system.

Basically: his generic DS4 can’t run properly on Manjaro, but runs on Windows (I had to give up today and give him dualboot so he could use his controller, if you read it maybe you understand why). Also runs in other machines, which is strange…

This generic DS4 is USB only, no bluetooth connections available. So no pairing problems

So it all begins: I tried to help him, we tried (IN HIS MACHINE):

  • Plugged the controller on his machine.

  • Looking at KDE Settings > Input Devices > Game Controller. Didn’t show up, instead that message saying: “No joystick device automatically found on this computer.” then I asked him to list usbs.

  • lsusb and we got that kernel recognizes it as 0c12:0e13 Zeroplus P4 Wired Gamepad. however no /dev/input/jsX or /dev/jsX file was created.

  • Changing usb ports, nothing happened and sometimes it wouldn’t list the gamepad in lsusb (on windows in his machine it always works in any usb port)

  • ds4drv then the js0 file was created, kde settings show it as Sony Controller but don’t work at all, you pressed a button and it don’t work.

  • Searching for more info on internet, tried some of them. None worked.

It was late night, I left his house with the Generic DS4 for inspections.
I got home, and even late I plugged it on my Machine 1 that runs Arch = insta fully functional, (KDE recognizes and buttons work, no extra config needed).
So I thought that maybe something was not right…
I Plugged it on my Machine 2 that runs Ubuntu with KDE = Same result as in Arch. Worked 100%.

I thought: “it cannot be Manjaro’s fault.

Then I tried to plug it on a Live Manjaro KDE in my Machine 1= worked too…

I get confused, then I thought that maybe he messed up something in the installation, since he did it all by himself, then I went his house again and reinstalled Manjaro for him just in case.

I wasted all day long trying to make his controller work on his machine but it just didn’t happened… Then I put one windows partition for him and in the same machine, it works perfectly on windows but not on Linux in HIS MACHINE.

I just don’t know how to help him in this case.
I would like a lot to see him on Linux, but in this case something clearly isn’t working as it should. Can someone help me?

Additional info: (I know this shouldn’t be the problem)
All my machines (the ones that the controller worked) are Intel. (lga 1151 and 2011), 32gb ram, external gpus are nvidia on 2011 and amd on 1151). My mobos are h310ms2p gigabyte and a generic chinese x79.

His machine (the one that controller didn’t worked on linux) is amd, his mobo is b450m steel legend, 16gb ddr4, no external gpu.

Any help is appreciated! :slightly_smiling_face: :upside_down_face:

Honestly… I’ve heard nothing but issues with this on Linux.

It’s better to just use an actual PS3/PS4/PS5 controller, which all works out of the box. Or get a controller that actually has Linux support like 8bitdo (note: they say they specifically support raspberry pi, not “Linux” in general, but they work on Linux)

The weird part is that it actually works on my machines but not on his.

Is game-devices-udev package installed on the system?

I’m gonna see this tomorrow!

EDIT: yes it is installed!

I looked at it and the package doesn’t have the proper udev rule for this specific controller (but it has other Zeroplus controllers defined there).

What would be more relevant maybe would be to compare the difference between the system that doesn’t work, and the other systems that work with this controller, see what is different.
Output the installed packages list to a text file from your systems that work, and from the system where it doesn’t work, then use a tool like Meld or Kompare to compare the packages lists from a working and non working system. You may spot a difference.

pacman -Q --foreign > packagesForeign.txt
pacman -Q --native > packagesNative.txt

Do that on each system and compare the files to find differences.

Ok I’m gonna do this process and generate this files, however I checked by pacman -Ss game-devices-udev in the different machines. his version is 0.15-1 mines are 0.5-1, maybe… is it time to change kernel?

edit1: I’m doing this comparsion right now.

For sure Kernel is an important part of the system regarding hardware compatibility, so maybe try other kernels like 5.10, 5.14 or 5.15 or whatever you want.

His version seems to be on par with Stable branch version, yours doesn’t make sense, unless you didn’t update since years…?

Post your findings regarding difference in packages maybe we can spot something?

I will try other kernel on his computer.
Idk why my packages are this number (maybe because the arch version of this package differs from the manjaro?)
Things I’ve found so far.
In foreign there’s nothing but yay and librewolf in my system (which don’t interfere in the use of the ds4 I think) His foreign has nothing!

In native: the list is a bit longer and by eye I couldn’t spot a real reason for this problem (there are more alsa packages for one of us for example, but these are audio related, and besides some different versions of bloat-apps I couldn’t see anything that justifies that =\

Since the list is a bit longer and I may have been incompetent to find the real reason I’m letting the files here, so maybe you can spot something.
Ah and btw my arch is bloated with KDE stuff, I didn’t uninstall anything there yet xD. I tried to spot the different packs with the diffchecker tool, results are on Saved diff 0Rme5Auy - Diff Checker

But raw files are on pastebin:
Mine: mine-packs - Pastebin.com
His: his-packs - Pastebin.com

He’s also complaining that he has to unplug his USB-Wireless Adapter and plug it in back for it to work.

Ah OK you’re not using Manjaro on your working system. That’s a major difference, you should have told that in the first place. This makes the difference checking in packages way more difficult (and annoying).

Yeah the foreign packages aren’t relevant here.

Also you don’t have game-devices-udev installed on your working system, so I’m not sure where you got your previous statement about it (especially when on Arch it is at 0.16 version).

One difference I could spot is the kernel, your friend has 5.10, and you have 5.14. Besides that it is difficult to compare.

EDIT: maybe you could try to add a line to create a new rule in /usr/lib/udev/rules.d/71-zeroplus_technology_corporation-controllers.rules specifically for this controller as a test (you gave the vendor:device code above) but that’s weird you don’t even have it on your working computer.

Sorry for being late in the answer, I should’ve been more active here.

I’m Sorry, I thought it was more clear on the first post when I said:

and

but as I said: I tried it on a Manjaro KDE Live USB in my Machine 1 and worked…

My mistake was not giving manjaro KDE Live the command for getting the packages list you told me to do, sorry for that. And I thought manjaro KDE Live environment loaded the same packages, but I’m gonna give the command from pacman a try.

The reason for me not having the game-devices-udev installed in my arch it’s because I may have uninstalled it before running the command you gave me to export the native packages, this is a big mistake of mine too.

The kernel difference between my arch vs his manjaro maybe is a thing, however, since it worked on Ubuntu which runs a LTS kernel makes me think maybe the kernel is not the problem. But for the sake of problem I’ll install kernel 5.14 on his machine.

I will try to create a rule file for him too and I hope it works.

I’ll also generate the list of packages that loaded in my live manjaro machine 1 too… However I don’t expect so much difference from one to other.

I’ll send the results soon.

I may have read it wrong or forgot, for sure I didn’t read it multiple time.

At this point I’m not sure what could make it not working on the Manjaro installation, trying other USB ports maybe could help but I doubt it as you already mentioned it, but you also mentioned weirder issues on different port so maybe this is a clue, trying to update the motherboard BIOS (sometimes there are USB issues fixed in BIOS updates) but I doubt it too… The issue is weird if it is not a package issue. I don’t really have ideas.

No problems man.

We did the BIOS upgrade when this problem happened and the controller didn’t work. I’m writing the rules file for him now.
It looks like that:

ATTRS{vendor}=="0x0c12", ATTRS{device}=="0x0e13", SYMLINK+="ZeroplusP4Gamepad"

Something else to put on rules file? Some trick to try to mount it as js0 in this file?

I’m gonna send it so he can try… I also told him to update to kernel 5.14 for eliminating things that may or may not be the problem.

In arch I spotted a joystick rules file that is not on his Manjaro (at least last time I looked on his folder it wasn’t), should I sent it for him? The rule file is “70-joystick.rules” at /usr/lib/rules.d folder and contains:

# do not edit this file, it will be overwritten on update

ACTION=="remove", GOTO="joystick_end"
ENV{ID_INPUT_JOYSTICK}=="", GOTO="joystick_end"
KERNEL!="event*", GOTO="joystick_end"

# joystick:<bustype>:v<vid>p<pid>:name:<name>:*
KERNELS=="input*", ENV{ID_BUS}!="", \
        IMPORT{builtin}="hwdb 'joystick:$env{ID_BUS}:v$attr{id/vendor}p$attr{id/product}:name:$attr{name}:'", \
        GOTO="joystick_end"

LABEL="joystick_end"

EDIT1: I also have another setup like his in my house: same mobo but different processor and ram. The computer isn’t mine but I can test on it, maybe its a malfunction in his motherboard usb? (it’s weird since it works on his M$-W10) :confused:

I have no idea about the udev rule file, on my side I would copy the other rules in the file /usr/lib/udev/rules.d/71-zeroplus_technology_corporation-controllers.rules and add a line for the controller.

But that suggestion was just a wild guess, As you said it works on Live Manjaro USB this make no sense as the installed system should be the same. Does it work on the same Live Manjaro USB on his computer?

Same for BIOS update it was a wild guess, I don’t think the motherboard is not working if it works on Windows.

//EDIT: changed the description in the link as original was “Xbox” and the controller is not, just cosmetic change, the rule is the same as the other lines, just changed the device id.

Don’t work on Manjaro Live USB on his computer either.
It was once detected on Live Manjaro USB in his pc but then it suddenly stopped working less than 1 seccond after it was detected. Then we changed ports and never returned to be functional again on manjaro in his pc.

I’m gonna use your rules file (the seccond you posted at diff checker and test, if it works I’ll mark as the solution).

Yes, it’s kinda strange it works on windows… lsusb can see it but the system can’t handle… this makes no sense for me xD :thinking:

EDIT: He tried all of the above, the controller is recognized but less than 10s after it get recognized, it gets disconnected…

The strange thing is that it works on my computers but not on his.