P0631
VIN Not Programmed or Incompatible - TCM
- Severity
- Medium
- Driving
- Drivable — book it in
The vehicle identification number stored in the transmission control module is missing, or does not match the vehicle. Modules hold the VIN so that they can confirm they belong to this car and so that diagnostic and emissions reporting is traceable. A missing VIN is normal immediately after a module replacement and is fixed by writing it, not by replacing anything.
Possible causes
- CommonModule replaced and never configured to this vehicle
- CommonUsed module fitted from a different vehicle or specification
- CommonProgramming or coding session interrupted
- CommonWrong part number for the market, model year or engine variant
- CommonConfiguration data not transferred during a module swap
- PossibleAftermarket tuning device altering what the module reports
What you might notice
- Check engine light on
- Emissions readiness reporting refused
- Scan tool reporting a blank or wrong VIN
- Fault present since a module replacement
- Often no drivability symptom
What to check, in order
- Write the VIN to the module. That is the repair.
- Expect proof of ownership to be required. VIN programming is deliberately restricted, because it is what stops modules being moved between stolen vehicles.
- Note that an emissions test may be refused while the VIN is missing, even if the vehicle is otherwise faultless.
- Ask what was done to the vehicle recently. These codes follow work; they do not appear on their own.
- Read the software and part numbers of the modules involved and compare them against the vehicle's build specification.
- Do not replace the module. The hardware is almost always right and the configuration is missing.
- Expect manufacturer-level programming. A generic scan tool can read these codes but cannot resolve them.
- If a used module was fitted, check whether it can be transferred to this vehicle at all - some are locked to their original VIN.
Read this code from your own car
Plug an ELM327 adapter into the OBD-II port under the dashboard. Pin16 reads every stored, pending and permanent code, explains each one like this page does — offline, with no account — and shows what the car recorded when the fault was set.
Where this code sits
P00xxP01xxP02xxP03xxP04xxP05xxP06xxP07xxP08xxP09xxP0AxxP0BxxP0CxxP0DxxP0ExxP0FxxP10xxP11xxP12xxP13xxP14xxP15xxP16xxP17xxP18xxP19xxP1AxxP1BxxP1CxxP1DxxP1ExxP1FxxP20xxP21xxP22xxP23xxP24xxP25xxP26xxP27xxP28xxP29xxP2AxxP2BxxP2CxxP2DxxP2ExxP2FxxP30xxP31xxP32xxP33xxP34xxP35xxP36xxP37xxP38xxP39xxP3AxxP3BxxP3CxxP3DxxP3ExxP3Fxx
Computer output circuits and control module
P0600P0601P0602P0603P0604P0605P0606P0607P0608P0609P0610P0611P0612P0613P0614P0615P0616P0617P0618P0619P0620P0621P0622P0623P0624P0625P0626P0627P0628P0629P0630P0631P0632P0633P0634P0635P0636P0637P0638P0639P0640P0641P0642P0643P0644P0645P0646P0647P0648P0649P0650P0651P0652P0653P0654P0655P0656P0657P0658P0659P0660P0661P0662P0663P0664P0665P0666P0667P0668P0669P0670P0671P0672P0673P0674P0675P0676P0677P0678P0679P0680P0681P0682P0683P0684P0685P0686P0687P0688P0689P0690P0691P0692P0693P0694P0695P0696P0697P0698P0699