P0687 Code: ECM/PCM Power Relay Control Circuit High
The main relay control line sits at battery voltage – the relay may never switch on or never release.
At a glance
Severity: Moderate
- Meaning
- ECM/PCM Power Relay Control Circuit High
- System
- ECU & Outputs · Powertrain
- Safe to drive?
- With caution
- Typical repair cost
- $25–$1,800
- DIY difficulty
- Moderate
P0687 means the ECM measured a higher voltage on its main relay control output than the commanded state allows, or detected overcurrent when it tried to switch it. Either way, the control line is connected to a voltage source other than the ECM's driver. The effect depends on the design. If the ECM pulls the coil to ground, a line stuck at battery voltage means the relay can't be energized, so the engine won't start. If the ECM supplies the coil, the same fault keeps the relay energized after the key is turned off: the ECM and everything the relay feeds stay live, the after-run never ends and the battery is flat by morning. Causes range from a wire shorted to a live circuit and a relay with an internal coil-to-contact short, to an ECM that is being kept awake by a stuck ignition or wake-up signal.
Can I keep driving? If the engine starts and runs, it can be driven to a shop. If the battery is going flat overnight, disconnect the negative terminal when parking until the fault is found, or you'll be left with a dead battery and possibly a damaged one.
How to read P0687
- P Powertrain
- 0 Generic (SAE)
- 6 Computer & outputs
- 87 Specific fault
Symptoms
- Battery dead after the car sits overnight or for a couple of days
- Main relay still clicked in, and warm, long after the key is off
- Cooling fan or fuel pump running on after shutdown longer than normal
- Crank-no-start on designs where the ECM grounds the relay coil
- Check engine light, often with P0690 stored as well
Possible causes
Ranked by how often each cause is behind this code (editorial estimate).
- Control wire shorted to a battery-powered circuit
- Relay with an internal short between its switched contacts and the coil
- ECM held awake by a stuck ignition switch, wake-up signal or another module
- ECM relay driver stuck on after water ingress or a voltage spike
- Corrosion bridging terminals in the relay socket
- Aftermarket remote start or alarm feeding the ECM power circuit
Diagnosis step by step
Measure the parasitic draw
Connect an ammeter or clamp meter on the battery cable, lock the car and wait for the modules to go to sleep, which can take 30–60 minutes on newer vehicles. A healthy car settles below about 50 mA; a main relay held on typically leaves several hundred milliamps to a few amps flowing.
Tools: Multimeter
Time the relay release after key-off
Back-probe the relay's output terminal and switch the key off. The voltage should drop once the ECM's after-run finishes – usually within seconds, or a few minutes if the cooling fan runs on. If it stays at battery voltage indefinitely, pull the relay and see whether the drain disappears.
Tools: Multimeter
Check the ECM's wake-up input
With the key off and removed, measure the ignition or wake-up input at the ECM connector. It must be 0 V. Voltage here means a sticking ignition switch, a faulty ignition relay or an aftermarket device is keeping the ECM awake, and the ECM is correctly holding its relay on.
Tools: Multimeter
Test the relay for internal shorts
On the bench, measure between each switched contact and each coil terminal. They must all read open. A connection between them means the relay is back-feeding its own coil, which keeps it latched once it has pulled in.
Tools: Multimeter
Look for voltage on the control wire
Remove the relay, unplug the ECM and measure the control wire to ground with the key off. Any voltage means it is shorted to another circuit; separate the harness at intermediate connectors to find which section carries the fault.
Tools: Multimeter, Flashlight
Condemn the ECM driver last
If the wiring, relay and wake-up input all check out but the ECM still holds the output on, or reports P0687 immediately, the driver is faulty. ECM repair services can often fix this without new programming.
Tools: OBD-II scanner
Where the parts are
- 1Battery
- 2Alternator
- 3Engine computer (ECM)
- 4CAN bus
- 5Transmission
- 6Wheel speed sensor
- 7High-voltage battery
Repair options & costs
| Repair | DIY? | Estimated cost |
|---|---|---|
| Replace main relay | Yes | $25–$120 |
| Replace sticking ignition switch or ignition relay | No | $80–$350 |
| Repair control wire shorted to power | No | $120–$400 |
| Remove or correct aftermarket wiring | No | $100–$300 |
| Repair or replace ECM | No | $300–$1,800 |
Rough US estimates for parts and labor; shop rates vary by region. Not a quote.
Emissions / smog test impact
Will fail
P0687 turns the check engine light on, which fails an OBD smog check. Repeated dead batteries also erase readiness data on many cars, so fix the drain and complete a few drive cycles before testing.
Frequently asked questions
Can P0687 drain my battery?
Yes, on vehicles where the ECM supplies the relay coil. If the control line is stuck high the relay never releases, so the ECM and the loads it powers stay on after you lock the car, and the battery can be flat overnight.
Why does pulling the main relay stop the drain?
Because the relay was what kept the ECM and its loads powered. That proves the drain path; the next question is what kept the relay energized – a shorted wire, a faulty relay, a wake-up signal or the ECM itself.
Could my ignition switch be the real problem?
It can. If the switch or an ignition relay leaves the ECM's wake-up input live after the key is removed, the ECM thinks the car is still on and holds its main relay in. Measuring that input with the key out settles it.
What is the difference between P0687 and P0690?
P0687 looks at the relay's control side – the wire the ECM uses to switch the coil. P0690 looks at the relay's output, which the ECM senses to confirm the contacts have opened. Welded contacts typically set P0690; a live control wire sets P0687.
Sources
- SAE J2012 – Diagnostic Trouble Code Definitions
- ISO 15031-6 – Road vehicles, diagnostic trouble code definitions (EOBD)
- Manufacturer public service information (cross-checked)
- Methodology: How We Build Code Pages · Data Sources We Use · Editorial Policy