Gamepads making involuntary movements in Emulation Station
-
@brunnis Why don't you test out the controller in the command line using jstest? As long as you ssh client don't disconnect you could clearly see if there are any movements at all.
By the way great job finding out what seems to be the root of the problem!
-
@rion said in Gamepads making involuntary movements in Emulation Station:
@brunnis Why don't you test out the controller in the command line using jstest? As long as you ssh client don't disconnect you could clearly see if there are any movements at all.
Another idea: Stream the input from /dev/js0 (or whatever js device the controller is mapped to) into a file. If the file gets bigger, ghost inputs occurred.
cat /dev/js0 >ghosttest.txt
edit: Alternatively, omit the
>ghosttest.txt
and watch the screen for funny characters to appear. -
I just added the capacitor and left it on Kodi settings on the skin setting. If it moves any direction, I'll know.
-
-
I haven't had a chance to look at the display, but I'm getting some output from jtest:
Event: type 2, time 397626870, number 0, value 5742
Event: type 2, time 397626880, number 0, value 0
Event: type 2, time 397758600, number 1, value -32767
Event: type 2, time 397758600, number 1, value 0
Event: type 2, time 401954150, number 0, value -5406
Event: type 2, time 401954160, number 0, value 0
Event: type 2, time 402109800, number 1, value 337
Event: type 2, time 402109810, number 1, value 0
Event: type 2, time 402480700, number 1, value 16552
Event: type 2, time 402480710, number 1, value 0
Event: type 2, time 403222120, number 1, value 337
Event: type 2, time 403222130, number 1, value 0
Event: type 2, time 403485030, number 0, value -16216
Event: type 2, time 403485030, number 0, value 0
Event: type 2, time 404585240, number 0, value -5406
Event: type 2, time 404585250, number 0, value 0
Event: type 2, time 404633300, number 1, value -16216
Event: type 2, time 404633310, number 1, value 0
Event: type 2, time 406905280, number 0, value 337
Event: type 2, time 406905290, number 0, value 0
Event: type 2, time 409262200, number 0, value -5406
Event: type 2, time 409262210, number 0, value 0
Event: type 2, time 410590300, number 1, value -32767
Event: type 2, time 410590310, number 1, value 0
Event: type 2, time 411523080, number 1, value 16552
Event: type 2, time 411523090, number 1, value 0This looks like analog, yes?
EDIT: I don't see any movement. Unless there was movement, but it ended up back in the same exact spot, I'm going to assume that so far, the controller is working.
-
Don't know why I didn't use jstest before... I'm running it now. The controller I'm running on has already been connected to the Pi for 44 hours without any button presses (that I've been able to detect in the menu, at least). I'm running jstest through SSH in Cygwin, in parallel with EmulationStation, so I'll be able to observe if any phantom presses registered by jstest show up in ES.
@Pussyfoot It does look like you've received a couple of full presses (-32767), so I would expect those to have produced a visible effect...
-
@brunnis I know, but the the selection in Kodi was on the same exact spot as I left it. Maybe it's true that it moved off and moved back. I still have it up, so I'll check it later today.
-
@pussyfoot Both of those full inputs were UP presses on the D-Pad.
#UP Event: type 2, time 12916484, number 1, value -32767 Event: type 2, time 12916556, number 1, value 0 #DOWN Event: type 2, time 12917476, number 1, value 32767 Event: type 2, time 12917580, number 1, value 0 #LEFT Event: type 2, time 12918228, number 0, value -32767 Event: type 2, time 12918380, number 0, value 0 #RIGHT Event: type 2, time 12919188, number 0, value 32767 Event: type 2, time 12919268, number 0, value 0
-
@jonnykesh I just checked again after leaving it another 24 hours on the same screen. There were no movements in any direction. The addition of the missing capacitor fixed the problem for me regardless what jstest is dumping.
-
@pussyfoot That's good to hear!
I've been running jstest since yesterday (20 hours now) on the sample that originally had the most phantom presses. Still zero button presses registered.
-
@brunnis It's been over 48 hours without a peep. To anyone reading this thread, try the missing capacitor first.
-
I wonder what the difference will be if you use Capacitors with a tolerance level of 10% instead of 20%?
-
@Rion Probably none. It mainly seems that additional capacitance is needed and not an exact value.
@Pussyfoot I should mention that before I started modding my controllers, I tried applying a single capacitor at different places while looking for changes in the jittery d-pad movements in Windows' Game Controllers dialog. Just applying the missing cap at position C41 only had a smaller stabilizing effect. The same goes for adding the one closest to the input. It was the cap at C13 that really made a difference. It seems all my controllers are now stable (still undergoing final testing, though), but if I still had issues, the thing I'd really like to try is to increase the capacitance of capacitor C13 further. It's certainly possible that it's just the extra capacitance of the other caps that give the additional stabilizing effect, so a single 47µF cap at C13 might actually be enough.
-
You guys have been focusing a lot on adding capacitors at specific places, but did you consider using a ferrous bead around the lead?
-
@zigurana I did, actually. I searched around at home and at work for one but didn't find any. When I found out that the caps made such a difference, I focused on that instead. But I would definitely have liked to try with a bead.
-
@brunnis Heya. Quick question for you.....
How many USB ports are you using on your Pi when testing this?
-
@addison Just the one for the controller. Out of all the USB ports on my Dell laptop and HP screen, the Pi's is still the most likely to cause phantom presses. So USB power supply might not be where the Pi 3 excels...
I guess its possible that the phantom issue could reappear once you start loading the other ports. However, if that's the case, I'd be more inclined to just conclude that the Pi 3 itself needs better USB power supply/filtering.
-
@brunnis Can you test again with at least a secondary controller plugged in, perhaps a USB memory card as well, and whatever else you can think of to shove into those three other ports?
I get that your solution fairs quite well.
I'm just asking if it can still handle it all with other junk in the USB ports.
-
@addison I won't have access to the system over the weekend, but I did already have a SanDisk Extreme 64GB high performance USB thumb drive connected for an hour or two and that didn't produce any issues. Neither did having a keyboard connected. I'll see if I can shove some more stuff into the ports on Monday.
-
@addison I took the controller that was most unstable before the fix and connected it to my RPi3 together with a mechanical USB HDD (Western Digital 2.5"). Unfortunately, this did provoke a few phantom presses. Nothing huge; two phantom presses over four hours.
I guess the conclusion is that this fix will dratically reduce the risk of phantom presses. However, the combination of a fairly unstable controller and a USB port that provides noisy power can still produce occasional phantom presses. I should point out that I'm using the official power supply for my Pi, so it's not some no-name crappy one. However, since this phantom press issue seems to be very much tied to the quality of the USB power, even just changing to another RPi board could provide different results. This also makes it tricky to verify that a fix is 100% effective.
Although I would have liked for this fix to have completely eliminated the issue, I'm still glad it works as well as it does. I don't doubt that a more elaborate investigation (using an oscilloscope) could provide a better fix (probably involving adding smaller caps as well), but I won't spend any more time on it.
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.