P1346 Toyota — VVT Sensor Circuit Range/Performance — Bank 1
SevereQuick answer
P1346 means the camshaft position signal (Toyota calls it the VVT sensor) on bank 1 doesn’t agree with what the computer expects from crankshaft position — a Toyota/Lexus range/performance code. Causes run from a failing sensor or wiring to valve timing that has actually jumped a tooth, so treat it with respect until you know which one you have.
What it means
Toyota’s VVT sensor is the camshaft position sensor: a pickup that reads a tooth on the cam-mounted signal plate so the computer always knows where the camshaft is. The ECM constantly cross-checks that reading against the crankshaft sensor, because their relationship — set by the timing chain or belt — is supposed to be fixed within the VVT system’s adjustment range. P1346 sets when the cam signal is out of expected range or out of plausible sync with the crank.
Two very different stories produce that mismatch. The benign one: the sensor itself, its wiring, or the signal plate is producing a bad reading — an electrical problem with electrical fixes. The serious one: the reading is accurate and the camshaft genuinely is out of position, because the timing chain or belt has stretched, slipped a tooth, or was installed one tooth off during recent work.
That second possibility is why this code earns a “severe” rating: most Toyota engines are interference designs, where badly wrong valve timing can put pistons into valves. A quiet, smooth-running engine with P1346 can be diagnosed calmly; one that rattles, runs rough, or set the code right after timing work deserves immediate caution.
P1346 symptoms: what you'll notice
- Sometimes only the check engine light, when the cause is a lazy sensor or wiring fault.
- Hard starting or extended cranking — the computer struggles to sync injection and spark without a trustworthy cam signal.
- Rough running and noticeable power loss if valve timing is genuinely off.
- Rattle from the timing cover area, worst at cold start, when chain stretch or a worn VVT actuator is involved.
- The code appearing immediately after a timing belt/chain or engine repair — suspect the work itself, assembled one tooth off.
Common causes
Ordered from most to least likely.
- 1.
Cam (VVT) sensor failing or contaminated
Cheap and accessible — a sensor tip coated in metallic sludge reads poorly.
- 2.
Wiring or connector damage to the sensor
Chafed harness and oil-wicked connectors are free to inspect.
- 3.
Stretched timing chain or worn VVT actuator
Moves the cam’s real position; often with cold-start rattle or P1349/P0016 alongside.
- 4.
Timing jumped or assembled one tooth off
The urgent story — sudden onset, or right after timing work. Verify before driving more.
- 5.
Damaged signal plate or wrong oil level affecting the VVT controller
Less common, but worth ruling in/out when nothing else fits.
How to fix it: diagnosis, step by step
Cheapest and most likely checks first.
-
1 Assess severity honestly first
Engine quiet and smooth, code intermittent → diagnose calmly, sensor and wiring first. Rattling, sudden rough running, hard starts, or fresh timing work → stop driving and verify mechanical timing before an interference engine makes the decision for you.
-
2 Inspect the sensor and its wiring
Unplug the cam sensor, check the connector for oil intrusion and corrosion, and inspect the harness where it crosses brackets. Pull the sensor and look at its tip — metallic paste on the magnet is a bad sign for the reading, and for the oil.
-
3 Measure the sensor
Measure the pickup coil’s resistance against your model’s spec (it differs warm vs. cold — the manual lists both). Out of spec, replace it: cam sensors are among the cheaper parts in this story.
-
4 Compare cam and crank signals in data
A scanner showing cam/crank correlation — or a scope on both sensors — answers the real question: stable, correct offset points electrical; a consistent wrong offset points at timing that has moved.
-
5 Verify mechanical timing if suspicion remains
Align the crank to its timing mark and confirm the cam marks agree (access varies by engine). One tooth off confirms the chain/belt story — a job many owners reasonably hand to a shop at this point.
Parts & tools you may need
- OBD-II scanner (code reader with freeze frame / live data) ↗
- Digital multimeter ↗
- Camshaft position (VVT) sensor for your engine ↗
- Timing components — only if mechanical timing is confirmed off ↗
Disclosure: some links are affiliate links (including the Amazon Associates program). If you buy through them, we may earn a commission at no extra cost to you.
Related codes
Frequently asked questions
- What does code P1346 mean?
- P1346 means the camshaft position signal (Toyota calls it the VVT sensor) on bank 1 doesn’t agree with what the computer expects from crankshaft position — a Toyota/Lexus range/performance code. It’s serious — diagnose it promptly to avoid expensive damage.
- Can I drive with P1346?
- Only if the engine runs smoothly and quietly — and even then, drive to a diagnosis, not indefinitely. If it rattles, runs rough, starts hard, or the code appeared right after timing work, park it: most Toyota engines are interference designs and genuinely jumped timing risks valve damage.
- Is P1346 just a bad sensor?
- Often, yes — and that’s the outcome to hope for, because the sensor is cheap. But the code can also be the only early warning of stretched or jumped timing. The cam/crank comparison in live data is what separates the two without opening the engine.
- I just had the timing belt/chain done and P1346 appeared. Coincidence?
- Almost certainly not. Timing assembled one tooth off sets exactly this code, immediately. Take it back to whoever did the work and have the marks verified before putting miles on it.
- How is this different from P0340?
- P0340 is the generic cam-sensor circuit code — typically no signal at all. P1346 is Toyota’s range/performance version: there is a signal, but it doesn’t make sense against the crankshaft. No-signal points harder at the sensor and wiring; doesn’t-make-sense keeps mechanical timing on the suspect list.