All good spots to look for the problem. Only suggestion I can add is put them down in a list and test by the list. I would personally first make sure all physical connections are fine and able to move proper as Robin suggested then if that does not show it up start looking at the software end of things. Good luck as I know how much of a pain it is when trying to track these down.

Michael