P0386

Crankshaft Position Sensor B Circuit Range/Performance

P0386 is a generic OBD-II powertrain diagnostic trouble code: Crankshaft Position Sensor B Circuit Range/Performance. It is logged by the engine control unit when the ckp/cmp monitor detects that a specific fault threshold has been exceeded — typically resulting in the malfunction-indicator lamp (MIL / check-engine light) being illuminated.

Code
P0386
Group
Powertrain
System
CKP/CMP
Severity
Warning (MIL on, possible limp mode)
Need P0386 disabled?
RaceTune permanently disables any OBD-II trouble code on supported ECUs — for motorsport, off-road, and export use.

What P0386 means

P0386 — "Crankshaft Position Sensor \"B\" Circuit Range/Performance" — is a rationality fault stored when the PCM determines that the signal from sensor B is present and electrically within range, but its output does not agree with what is logically expected given the operating conditions or the signal from sensor A. Unlike P0385 (circuit absent or out of range) or P0387/P0388 (signal stuck low or high), P0386 indicates a plausibility conflict — the sensor is producing a signal, but that signal contains errors such as incorrect pulse frequency, inconsistent tooth counts, or a reading that diverges from sensor A beyond the PCM's acceptance threshold.

On dual-CKP systems such as those found on BMW N57 and N47 diesels, Mercedes-Benz OM651, and Ford 6.0L Power Stroke engines, the PCM continuously cross-checks the two crank sensors. If sensor B returns a crankshaft speed or position that disagrees with sensor A by more than the calibrated tolerance — for example because of a cracked reluctor ring tooth causing intermittent signal errors, a partially contaminated sensor, or a wiring fault that introduces noise — P0386 is set. This code can also be triggered by timing chain or belt stretch that shifts the crank reference relative to what was established during PCM calibration. Because the signal is present but incorrect, the engine may continue to run while experiencing degraded timing accuracy, increased misfires, or elevated fuel consumption.

Common causes

Most-frequently reported root causes when P0386 is logged.

  • 1
    Damaged, cracked, or partially missing reluctor ring tooth at the sensor \"B\" pickup zone causing incorrect pulse counts.
  • 2
    Crankshaft position sensor \"B\" with degraded output producing a signal that is electrically present but does not match actual crank position.
  • 3
    Electrical noise or interference on the sensor \"B\" signal wire causing spurious pulses that confuse the PCM.
  • 4
    Timing chain or belt wear/stretch displacing crank position relative to the reference established during calibration.
  • 5
    Incorrect sensor \"B\" air gap after a repair — sensor too far from the reluctor ring, attenuating signal amplitude.
  • 6
    Sensor \"A\" fault (P0335/P0336) causing the PCM to misidentify the \"B\" signal as out of range when comparing the two.
  • 7
    Oil or coolant contamination on sensor \"B\" affecting signal quality.
  • 8
    Wiring harness interference — sensor \"B\" signal wire routed too close to high-current ignition or injector circuits inducing noise.

Symptoms drivers notice

Malfunction Indicator Lamp (MIL / Check Engine Light) illuminates.
Engine misfires (P030x codes may be stored simultaneously) due to incorrect injection or ignition timing.
Rough idle or hesitation under load.
Reduced engine power or unexpected limp-mode activation.
Increased fuel consumption caused by timing inaccuracy.
Engine stalling in severe cases where timing error exceeds the PCM's tolerance.

How to diagnose P0386

A typical diagnostic flow when this code is present.

  1. 1
    Retrieve all stored and pending codes; pay attention to simultaneous sensor A codes (P0335/P0336) and misfire codes that confirm timing degradation.
  2. 2
    Use an oscilloscope to compare the waveforms of both sensor A and sensor B simultaneously during engine running — the patterns should be complementary; anomalies on the B trace (missing pulses, incorrect spacing, noise spikes) identify the fault.
  3. 3
    Inspect the reluctor ring at the sensor \"B\" pickup position for cracked, bent, or missing teeth.
  4. 4
    Check and correct the sensor \"B\" air gap against the manufacturer's specification.
  5. 5
    Inspect the sensor \"B\" wiring harness for routing issues near ignition cables or injector wiring that could induce electrical noise.
  6. 6
    Check mechanical timing (chain/belt tensioner, stretch) if neither sensor nor wiring shows obvious faults.
  7. 7
    Clean or replace sensor \"B\" if oil or coolant contamination is present; retest after cleaning before replacing.

Related powertrain codes

Frequently asked questions

What is the difference between P0385 and P0386?

P0385 is a circuit malfunction — the PCM is getting no valid signal or a signal that is grossly out of electrical range. P0386 is a range/performance fault — the signal exists and is electrically reasonable, but its content (pulse frequency, position data) disagrees with the expected value or with sensor A. P0386 therefore points more toward mechanical issues (reluctor ring, timing chain) or signal quality problems rather than simple wiring or sensor failures.

Can a stretched timing chain cause P0386?

Yes. If the timing chain stretches enough to shift the crankshaft reference position beyond the PCM's tolerance window, the PCM will interpret the sensor B reading as implausible relative to its calibration baseline and set P0386. Other chain-stretch indicators such as cam/crank correlation codes (P0016, P0017) may accompany the fault.

Is P0386 more serious than P0385?

Not necessarily more serious in outcome, but it can be harder to diagnose because the circuit is still functioning. The engine may continue to run with degraded timing accuracy, masking the severity. A reluctor ring fault or chain stretch indicated by P0386 can cause progressive engine damage if not addressed.

Can P0386 be caused by a sensor from sensor A?

Yes — if sensor A has its own fault, the PCM uses a potentially incorrect baseline for the plausibility comparison, causing it to flag sensor B as out of range when sensor B is actually fine. Always resolve sensor A codes first before diagnosing P0386.

Disabling P0386 in software

RaceTune can permanently disable P0386 — and any other OBD-II diagnostic trouble code — on every ECU family we support. The monitor is disabled inside the ECU itself, so the fault stops being logged: the warning light stays off and the engine never enters limp mode for this code. The change is tied to your exact software version.

Permanent
The monitor is disabled in the ECU itself — not just cleared. It cannot return.
Tailored to your file
Each patch is matched to your specific software version — never a one-size-fits-all file.
Reversible
The original file is always preserved. Reflash the stock to return the ECU to factory state.

Software modifications affect emissions compliance and are not road-legal in many jurisdictions. RaceTune service files are intended for motorsport, off-road, and export use.

Got P0386 in your scan?

Upload your ECU file — we'll identify the exact software version and confirm whether a disable is available for your car.

Upload your file