Back to Modules
J1939 + OBD2Firmware 1.9.27

ECU Fault Code Reading (DTC)

Know which fault the vehicle has, not just that it has one.

The device reports the same codes a workshop scan tool shows: SPN and FMI on trucks and machinery, P, C, B and U codes on light vehicles. They reach your platform with the ECU that reported them and the real time they occurred.

Fault report

Truck · J1939

J:00:100:1:4

Engine ECU · oil pressure below normal range · 4 occurrences

Light vehicle · OBD2

O:00:P0301:0:0

Engine ECU · cylinder 1 misfire

Every report carries all active faults

What changes

From the warning light to the code

Until now

The device reported whether the vehicle had faults and how many: the equivalent of the check engine light on the dashboard. To find out what was wrong, the vehicle had to go to the workshop.

With the DTC module

The device reports which ones they are: which component fails, how it fails and which ECU reports it. The workshop can prepare the diagnosis before the vehicle arrives.

Standard codes

SAE J1939 and SAE J2012, the same codes any scan tool reads. The text description is resolved on the platform using the public tables of the standard.

Real event time

If the vehicle was out of coverage, the report waits in the queue and, once the signal is back, reports when the fault occurred, not when it was sent.

Full snapshot in every report

Every report carries all active faults: there is no need to rebuild state on the server. A count of zero means they were resolved.

No extra hardware

It uses the CAN connection the device already has. It ships disabled: until enabled it reserves no memory and does not touch the bus.

Protocols

Trucks and light vehicles, each with its own standard

The module reads the protocol each type of vehicle uses. What you get depends on the standard.

J1939

Trucks, buses, machinery and agriculture

The ECU broadcasts faults on its own and the device listens without transmitting anything to the bus. Reading is immediate.

What it reports

  • SPN: which component fails
  • FMI: how it fails
  • ECU that reports it
  • Occurrence count
  • Dashboard lamps

OBD2

Cars, pickups and vans

The device queries the ECU every 30 seconds, just like a scan tool plugged into the diagnostic connector.

What it reports

  • Full standard code (P0301, P0420, U0100)
  • ECU that reports it
  • Several ECUs in the same vehicle

With the CANBUS Contactless accessory (inductive, read-only) it works on J1939, where the ECU broadcasts faults by itself. It does not work on OBD2, because the ECU has to be queried and the contactless reader does not transmit to the bus.

Interpretation

How to read a code

J1939: component and failure type

JProtocol
00ECU
100SPN
1FMI
4Occurrences

The engine ECU (00) reports that oil pressure (SPN 100) is below the normal range (FMI 1), and it occurred 4 times.

The FMI changes the diagnosis

0 / 1Value above / below the normal range
2Erratic or intermittent data
3 / 4Short to positive / short to ground
5 / 6Open circuit / overcurrent
7Mechanical system not responding
12Damaged component
31Condition exists, no further detail

Common SPNs

100Oil pressure
110Coolant temperature
94Fuel pressure
168Battery voltage
651-656Injectors 1 to 6
1761AdBlue / DEF level
3226NOx sensor (SCR)

Fuel pressure with FMI 1 is genuinely low pressure: filter or pump. With FMI 5 it is an open circuit: a disconnected sensor or a cut wire. Same SPN, different diagnosis.

OBD2: system and code

OProtocol
00ECU
P0301Code

The engine ECU (00) reports a misfire in cylinder 1 (P0301). FMI and occurrences are J1939 fields: on OBD2 they are zero.

The first letter indicates the system

P

Powertrain: engine and transmission

C

Chassis: brakes, suspension, steering

B

Body: airbags, comfort

U

Network communication between modules

Applications

What you do with the codes

Workshop with prior diagnosis

The fault arrives with its code before the vehicle returns to base. The workshop knows what to check and which part to order.

In-cab warning

A rule on the device itself triggers a buzzer when a dashboard lamp turns on (J1939), without going through the server.

Supervisor alert

New fault with the ignition on: the device sends an immediate report or an SMS, and the platform builds the alert with the code description.

Emissions and AdBlue

SPNs 1761 and 3226 show urea level and NOx sensor faults: SCR system problems worth addressing in time.

Integration

What your platform receives

Faults arrive over the device's regular protocol (UDP, TCP or SMS), with queueing, retries and acknowledgement. The report is sent automatically when a new fault appears or all of them are resolved, and it can also be requested at any time.

DF report

>RDF00020826143512;2;J:00:100:1:4;J:00:1761:1:12<

  • Report number
  • Event date and time
  • Active count (0 = resolved)
  • Fault list

The device reads and transmits the code. The text description and user alerts are configured on your platform.

It also reacts inside the vehicle

Faults are event engine triggers: they combine with ignition, speed, inputs or geofences like any other signal.

DTC00At least one fault is active
DTC01A new fault appeared
DTC02A dashboard lamp is on (J1939)
DTC03All faults were resolved
Setup

Three commands

Enabled by command, without touching the installation.

1

Check the bus protocol

>QCXCAN<

J1939 on trucks and machinery, OBDII on light vehicles. If it does not match the vehicle, the module always reports zero faults.

2

Enable reading

>SCXDTC1,3,0,1,GP<

Enables the module with automatic reporting to the main server.

3

Check the status

>QDTC<

RDTC0 means the device is reading the bus and there are no active faults: it is a valid result.

Full guide in the documentation
Scope

What it does today and what comes next

Active J1939 faults: one or several ECUs, one or several codes

Available

Active OBD2 faults: one or several ECUs

Available

Automatic, on-demand and rule-based reporting

Available

Event engine signals, EVAL functions and templates

Available

Dashboard lamps

J1939 only

Clearing faults in the vehicle ECU

Planned

Historical or pending faults

Planned

Up to 32 simultaneous faults in the device table. The reported count is always the real one.

Frequently asked questions

A DTC (Diagnostic Trouble Code) is the code the vehicle computer stores when it detects a fault. It is what a scan tool reads at the workshop: on J1939 trucks it is expressed as SPN and FMI, and on OBD2 light vehicles as a five-character code, for example P0301.
Yes. It reads J1939 on trucks, buses, machinery and agriculture, and OBD2 on cars, pickups and vans. The protocol configured on the device has to match the vehicle.
No. It uses the CAN connection of Spider IoT and Smart IoT. With the CANBUS Contactless accessory it works on J1939; on OBD2 a direct connection is required, because the device has to query the ECU.
The device sends the code in standard format (SAE J1939 and SAE J2012). The text description is resolved on the platform using the public tables of the standard, as everywhere else in the market.
The report stays in the device queue and is sent once coverage returns, with the date and time the fault actually occurred.
Not today. The module reads active faults and can clear its own list, but it does not erase the codes in the vehicle ECU. That feature is planned.

Want to add remote diagnostics to your fleet?

Tell us which vehicles you have and which platform you use, and we will help you set it up.