avrdude: stk500_getsync(), tried many fixes with no luck

I'm using an Arduino Uno and am unable to write any code to it. It worked fine before and still has an older version of my code running on it that works and I can see it outputting on the serial monitor. So I know the computer recognises the Arduino (Port is read fine) and serial output from the Arduino is working.

Currently I have disconnected everything from the pins, and just the USB cable is connected.

When trying to upload code the lights flash as follows:

L 3 times
Rx 2 times
L, Tx and Rx all together at once (L flashing ever so slightly earlier than the other two)

I've reinstalled the Arduino environment and updated all the drivers.

Using help from redhotEngineer's blog post I tried using a jumper wire between the Tx and Rx I/O pins and checking the serial monitor if it responds to anything I send, which it doesn't.

If however, you do not receive the same, there is a problem with
a. The USB cable
b. The Atmega16U2’s Firmware
c. The circuit traces between the Atmega16U2 and the rest of the board.
d. Could also be that the TX LED was bad (needs reconsideration)

I'm certain there's no problem with the USB cable (nor the software on my computer),so it leads me to believe there's a problem with the Arduino itself. However, I'm very new to this and may just be going about it completely the wrong way, so any help would be greatly appreciated.

Currently I'm just trying to upload the blink code to see if it works and this is what I get in response:

Global variables use 9 bytes (0%) of dynamic memory, leaving 2,039 bytes for local variables. Maximum is 2,048 bytes.
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00

Here is the serial monitor, The old code just prints "working" at the start just to tell me that its connected properly:

Any advice would be amazing

I'm having the same sort of very frustrating issues. If I go away and leave it it'll upload fine for several hours and then suddenly go out of sync or be unable to "set com state" etc. It's a real pain when a good programming roll stops in its tracks .

The Arduino IDE uses Java to do it's serial tricks and as far as I can tell that's the culprit. I'm looking at switching out to Atmel studio or Code Bender to see if that will help.

I just had Windows trouble shooter pop up and say the the 2.0 USB on my UNO is not compatible with 3.0. Arrgh! I'ts been working all afternoon.