CAN Adapters
Which Teltonika CAN adapter does what, the vehicle data each one reports, and the API for reading capabilities and sending control actions.
A Teltonika CAN adapter sits between the tracker and the vehicle bus. Depending on the model it reports vehicle data — fuel, odometer, RPM, door status, VIN — and, on one model only, actuates the vehicle.
Choosing an adapter
| LV-CAN200 | ALL-CAN300 | CAN-CONTROL | CAN-CONTROL + IMMO | |
|---|---|---|---|---|
| Read CAN data | yes | yes | yes | yes |
| Light vehicles and EVs | yes | yes | yes | yes |
| Trucks, buses, agricultural | — | yes | — | — |
| Lock / unlock, trunk, horn, lights | — | — | yes | yes |
| Block the engine | — | — | no | yes |
Engine blocking requires the IMMO variant specifically. The base CAN-CONTROL has no engine-lock function at all — this is a different part number, not a setting. Ordering the wrong one means re-ordering, not reconfiguring.
Capability is also per vehicle. Across Teltonika's published lists, over vehicles that support any control at all:
| Action | CAN-CONTROL | CAN-CONTROL + IMMO |
|---|---|---|
| Turn signals | 94.0% | 94.1% |
| Lock / unlock | 77.5% | 77.0% |
| Trunk release | 47.2% | 46.6% |
| Engine lock | not offered | 54.9% |
| Comfort closure (windows) | 31.6% | 31.2% |
| Horn | 16.3% | 16.1% |
Provisioning
An adapter reads nothing until it is given the program number for the vehicle it is attached to.
That number is printed on the mounting scheme packed with the adapter — it is not in the supported-vehicle lists and cannot be looked up from public data. Capture it at install time. It is then set remotely and verified.
The adapter's software date must be newer than the connection scheme's date, or the program number cannot be written. Check with the adapter info command before suspecting the wiring.
Data reported
334 CAN elements are decoded and published in the tracker's IO data with a can prefix, so
a bus reading is never confused with the OBD or GPS field of the same name — canVehicleSpeed
comes off the vehicle bus, vehicleSpeed is OBD, speed is GPS-derived.
Commonly used fields:
| Field | Units | Notes |
|---|---|---|
canFuelLevelLiters | l | |
canFuelLevelPercent | % | |
canTotalMileage | m | dashboard odometer |
canEngineRpm | rpm | |
canEngineTemperature | °C | can be negative |
canEngineLoad | % | |
canFuelRate | l/h | |
canDoorStatus | bitmask | see below |
canVin | text | |
canVehiclesRangeOnBattery | m | electric vehicles |
canAdblueLevelPercent | % | |
canDriver1Id | text | tachograph driver card |
Door and security state
canDoorStatus is a bitmask, so it is also published as individual booleans — use these
rather than comparing the raw number:
canDoorFrontLeftOpen, canDoorFrontRightOpen, canDoorRearLeftOpen,
canDoorRearRightOpen, canHoodOpen, canTrunkOpen, and a canAnyOpeningOpen roll-up.
Vehicles that report the security-state block also publish canSsfIgnition,
canSsfHandbrakeIsActive, canSsfCarIsClosed and the per-door equivalents as booleans.
When the ignition is off, some fields hold their last value (mileage, fuel level, engine hours) while others reset to zero (speed, RPM, pedal position). A zero speed with the ignition off is not a measurement — check the field's timestamp.
API
Read what a vehicle can do
Call this before rendering controls. An action that is false should not be shown at all —
a disabled control implies "later", while absence is accurate.
Send an action
IMMOBILISE requires "confirm": true.
A 202 means the command reached the vehicle:
Do not retry on a missing confirmation. Every CAN control command is a toggle — sending it twice can undo it. Poll the command's status instead, and confirm against the vehicle's reported state.
Refusals return 422 (policy) or 200 with a reason (device state):
| Reason | Meaning |
|---|---|
no_adapter_detected | No CAN adapter fitted |
adapter_is_read_only | LV-CAN200 / ALL-CAN300 fitted |
program_number_not_set | Adapter not configured for its vehicle |
vehicle_profile_unmatched | No published capability profile for this model |
requires_immo_adapter_variant | Engine control needs the IMMO adapter |
not_supported_by_vehicle | This model cannot do this action |
confirmation_required | Destructive action sent without confirmation |
device_offline | Tracker not connected |
vehicle_moving / ignition_on | Safety interlock |
stale_position | Vehicle state too old to act on |
cooldown | Same action sent moments ago |
Authorised drivers
PUT replaces the whole list and queues the difference to the device.
sync-status returns synced, syncing or out_of_sync. Surface out_of_sync to the
user: until it clears, the vehicle is enforcing its previous list.
Was this page helpful?