I know this is really old but maybe it can still help people by saveing some OEM controllers from going to trash.
There are 2 possible causes:
A. The ribbon does not touch the PCB properly ( solution, add some tape under the foam)
B. Corrosion on the ribbon cable -> buy replacement ribbon cable from china
My controller was a B case and for the low price of 2€ for a new flex pcb I was finnaly able to fix it after more than 10 years