I've understood that Ubuntu loads the wrong driver by default, and it's clear that wrong drivers may cause problems like this. But what does your fix do? It looks as if you remove the driver, then add the same one again, then blacklist a different one -- but I'm just guessing and I don't get why this would solve the problem. Can you explain to a Linux beginner?
Also, how did you know what drivers to add/remove/blacklist? How did you determine rt2860sta and rt2800pci, respectively?