U codes are network errors. This almost always comes down to a wiring or module fault. All you can do is hook up an advanced scan tool and follow the clues. If there are no clues the only choice is to clean every ground, check every connection, and if it still comes back you start disconnecting modules while monitoring the network (in cases where a module is actually crashing, or corrupting it) or replacing modules (at great expense for parts and programming since used one's cant be VIN coded) in the order of most to least suspect based on the opinions and experiences of the dealer technicians that have seen these problems in the past. But at the end of the day it's a LOT of guessing. And if you aren't educated guessing it will take 10x as long. So factor that into your cost analysis of if you want to tackle it yourself or not.
I have plenty of vehicles with computers but I stick with vehicles that don't have networks of them. Discreet modules only that only share data by analog signaling or raw sensor data. The automotive CANBUS networks are very poorly engineered in terms of redundancy and error detection - in fact they basically have neither and you are left to swap parts randomly and guess at every turn because not only is there no error detection to point you to a cause, but all the network data is considered proprietary intellectual property.
GD