U codes look scary at first. When U0100 or U0129 shows up, many owners assume a control module is dead. Most of the time it isn't. These codes mean one module can no longer hear another on the data bus. With a bit of method you can usually find out why on your own.
How U codes work
On Sea-Doo and Can-Am, several modules share data over the CAN bus, for example the engine control module (ECM), the instrument cluster and, on a Sea-Doo, the iBR module. When messages from one of them stop arriving, the receiving module stores a U code. So the code often isn't stored in the module that dropped out, but in the one that is missing it. That is why it matters exactly where the code is stored. More on that in Understanding DTCs by Control Unit.
What BRP says about U0100
In the official BRP list, U0100 has several wordings depending on the vehicle and the module:
- Loss of communication with the Vehicle Control Unit (VCU)
- Loss of communication with the Engine Control Module (ECM) or VCU
- Lost communication with ECM, lost CAN IDs
- ECU could not establish CAN communication with partner ECU
- ECM CAN message missing or invalid
In short, another module can't hear the ECM or the VCU. If the engine won't start at the same time, that is an important clue, because the ECM may be missing from the bus completely.
What BRP says about U0129
In the BRP list, U0129 only has iBR meanings: loss of communication with the iBR (Intelligent Brake and Reverse) actuator, lost communication with iBR, CAN communication error between ECM and iBR module, and iBR CAN messages timeout or validity. So U0129 concerns machines with iBR, mainly Sea-Doo. If you see U0129 on a Can-Am, read the plain-language text in the app carefully, because the current BRP list has no other meaning for it.
Common causes
- Low voltage: if the battery dips during cranking, modules drop out for a moment. That often leaves U codes behind.
- Connectors and corrosion: water and salt in the connectors at the ECM or the iBR module.
- Wiring harness: chafed CAN wires, damaged pins, damage after modifications.
- Module power: the fuse, relay or ground of the affected module.
- The module itself: an iBR module after water got in, or a failed control module. That is less common than many think.
A typical picture after winter storage or electrical work: several modules report U codes at the same time. That almost always points to one shared cause like voltage, ground or a central connector, not to several failed modules at once.
The right check order
- Read every module: which codes are stored where, active or stored?
- Battery and ground: charge, clean the terminals, check the ground.
- Connector at the affected module: the iBR module for U0129, the ECM for U0100. Unplug, clean, dry and plug back in firmly.
- Check the fuses: per the owner's manual.
- Clear and restart: if the code doesn't return, it was a brief dropout.
Reading and clearing with the app
With M-JET DIAGNOSTIC you read the ECM, cluster, iBR and, depending on the vehicle, other modules over Bluetooth. You see which module stored the U code and whether it is active. If a module doesn't answer at all, that is a clue too. For iBR faults you can check status, run auto calibration and move the iBR up and down after the repair. More on iBR in Diagnosing Sea-Doo iBR Faults.
When to go to a shop
If the battery, connectors and fuses are fine and the code stays active, the CAN bus has to be measured. How to tell a real module failure from wiring trouble is covered in Can-Am ECM Failure.
Frequently asked questions
Does U0100 mean the ECM is dead?
Usually not. Voltage, connectors or wiring are more often to blame. A failed ECM only becomes likely once power and wiring are proven good.
Why is U0129 stored after winter storage?
Often because of a weak battery or moisture in the connectors. Charge the battery, check the connectors, clear the code and see if it comes back.
Can I just clear U codes?
Yes, but only once you know the cause. If the code comes right back, the connection is still disturbed.
Why do several warnings come on with U0100?
Because the cluster gets a lot of its information from the ECM. When that data is missing, it can't display things properly and reports several faults at once. The actual cause is usually just one.