A Playstation PS3 controller has drift on the left hand analog stick. If you have the xboxdrv installed then when you plug the PS3 controller into a linux machine and then if you do,
sudo xboxdrv --detach-kernel-driver
in a command console and hit the PS button on the controller then the command console displays the key/stick values continuously. For my broken controller the “X1” when idle is 224 something and not 128.
Obviously you could replace the potentiometer but that’s assuming you can get the parts but you can clean and refurbish the potentiometers.
To do this unsolder just the single potentiometer from the controller PCB. It is held in by plastic tabs to the housing of the analog stick assembly so lever it out on its own.
You now have a single small potentiometer with 3 pins. The centre pin is at the 1/2 way resistance point. There should be a small plastic split pin on the centre of the tiny potentiometer that removes the rotary plastic part. I used a cotton-bud and alcohol to clean the internals of the potentiometer.
I also re-sprung the rotary part by using a pin/knife to bend up the small contact springs so that it made a good contact even when wiggled. That’s the important part – you have to test it with a multimeter and make sure it goes from 0-10 k Ohm from the centre pin to the outside pins.
On my sample controller the potentiometer was marked “103” and this mean 10 K Ohm. The outside pins are the full 10 KOhm value and the middle pin varies from 0 to 10 Kohm. I made sure it went over this range scale and stayed solid even when the centre rotary part was wiggled. A loose spring contact will mean jerky game play.