I can connect to an APM2 using a 3DR on COM4. Mission Planner works fine and will successfully upload a route. UgCS connects also and receives messages. Everything appears to work fine but UgCS is unable to upload a route and terminates with an error.
Looking through the Ardupilot log it seems that UgCS is confused about the ports in use. It finds COM4 and messages arriving on it. It then finds COM3, which has no hardware attached, and subsequently uses that when trying to upload the route. Of course it fails.
This appears to be strange behaviour. So it receives messages on COM4 which is sucessful, but tries to send on COM3 which fails.