SAE J1587 is a specification which defines messages that are transmitted on a SAE J1708 network. J1708 specifies the data link and physical layers, while J1587 specifies the transport, network, and application layers.

J1587 is similar to J1922, which also defines messages for a J1708 network and also the same three protocol layers. J1587 is outdated and being replaced by J1939.

J1587 Purpose

The purpose of SAE J1587 is to define the format of the messages and data being communicated between microprocessors used in heavy-duty vehicle applications. It is meant to serve as a guide toward a standard practice to promote software compatibility among microcomputer based modules. J1587 is to be used with SAE J1708, which defines the requirements for the hardware and basic protocol that is needed to implement J1587.

J1587 Messages

J1587 uses messages for diagnostic purposes. For example, it sends messages for fuel economy, coolant temperature, fault codes (also known as diagnostic trouble codes or DTCs) and many other parameters. All together J1587 defines around 500 parameters. J1587 does not send control type messages, instead that is handled by J1922.

J1587 Message Format

All messages have the following format:

Message ID

One or More Parameters


Messages start with a MID, which stands for message identifier and indicates the source address of the transmitting node. For examples, see the below MID table. The next value is the PID, which stands for parameter identifier and indicates what parameter the following data corresponds to. The data and its length are defined by the PID value. After the corresponding data, either another PID is present or the message is terminated with a checksum.

MID, PID/Data, [PID/Data, PID/Data,…], Checksum

J1587 MID Example Table

0-127 Defined by SAE J1708

128 Engine #1

129 Turbocharger

130 Transmission

131 Power Takeoff

132 Axle, Power Unit

133 Axle, Trailer #1

134 Axle, Trailer #2

135 Axle, Trailer #3

136 Brakes, Power Unit

137 Brakes, Trailer #1

138 Brakes, Trailer #2

139 Brakes, Trailer #3

140 Instrument Cluster

242 Axles, Trailer #4

243 Axles, Trailer #5

244 Diagnostic Systems, Trailer #4

245 Diagnostic Systems, Trailer #5

246 Brakes, Trailer #4

247 Brakes, Trailer #5

248 Forward Road Image Processor

249 Body Controller

250 Steering Column Unit

251-255 Reserved to be assigned

J1587 Parameter Length

The amount of data which is transmitting following a PID is defined by the value of the PID. A PID of 0 to 127 is followed by a single byte of data. PIDs from 128 to 191 are followed by two bytes of data and PIDs greater than or equal to 192 are variable length.

J1587 PID Example Table

0 Request Parameter

1 Invalid Data Parameter

2 Transmitter System Status

3 Transmitter System Diagnostic

4 Reserved

5 Underrange Warning Condition

6 Overrange Warning Condition

7 Axle #2 Lift Air Pressure

8 Brake System Air Pressure Low Warning Switch Status

9 Axle Lift Status

10 Axle Slider Status

11 Cargo Securement

12 Brake Stroke Status

13 Entry Assist Position/Deployment

14 Entry Assist Motor Current

15 Fuel Supply Pump Inlet Pressure

16 Suction Side Fuel Filter Differential Pressure

17 Engine Oil Level Remote Reservoir

18 Extended Range Fuel Pressure

19 Extended Range Engine Oil Pressure

20 Extended Range Engine Coolant Pressure

128 Component-specific request

129 Injector Metering Rail #2 Pressure

130 Power Specific Fuel Economy

131 Exhaust Back Pressure

132 Mass Air Flow

133 Average Fuel Rate

134 Wheel Speed Sensor Status

J1587 Priority

In J1587, priority is assigned to individual parameters. However, J1587 is transmitted by J1708 which contains a single priority for each message. If multiple J1587 parameters are packed into a single message, the message shall take on the priority of the highest priority parameters.

Priorities have a range of 1 to 8 and specify how much extra time has to be waited before the message can be transmitted once the J1708 network goes idle. Therefore, priorities influence the amount of network bandwidth available.

J1587 Example

For example, J1587 specifies a parameter for engine speed. The ‘Engine Speed’, which is PID 190, defines the parameter to be an unsigned 16-bit value, with a bit resolution of 0.25 RPM/bit, offset of 0 RPMs, and a network update period of 100 ms. Below are two more examples.

PID 183 Fuel Rate (Instantaneous)-Amount of fuel consumed by engine per unit of time.

Parameter Data Length: 2 Characters

Data Type: Unsigned Integer

Bit Resolution: 16.428 x 106 L/s (4.34 x 106 gal/s or 1/64 gal/h)

MaximumRange: 0.0 to 1.076 65 L/s (0.0 to 0.284 421 90 gal/s or 0.0 to 1023.98 gal/h)

Transmission Update Period: 0.2 s

Message Priority: 3


PID Data

183 aa

a a- Fuel Rate (instantaneous)

PID 184 Instantaneous Fuel Economy-Current fuel economy at current vehicle velocity.

Parameter Data Length: 2 Characters

Data Type: Unsigned Integer

Bit Resolution: 1.660 72 x 103 km/L (1/256 mpg)

MaximumRange: 0.0 to 108.835 km/L (0.0 to 255.996 mpg)

Transmission Update Period: 0.2 s

Message Priority: 3


PID Data

184 aa

a a- Instantaneous fuel economy

J1587 Diagnostics

J1587 sends diagnostic information very similar to the J1939 DTC approach. J1587 uses PID 194, which is titled ‘Transmitter System Diagnostic Code and Occurrence Count Table’, to report diagnostic information. When there is an active fault, PID 194 is transmitted periodically and is always available by request. The PID 194 message contains the SID/PID identifier of the failure and the FMI.

J1587 SID

Subsystem Identification Numbers (SIDs) are numbers assigned by the SAE or the SAE Truck and Bus Low Speed Communications Network Subcommittee. There are 255 SIDs definable for each controller or MID. SIDs are numbers that can be used to identify a section of a control system without a related PID. SIDs should only be assigned to field-repairable or replaceable subsystems for which failures can be detected and isolated by the controller (MID). SIDs 1 to 150 are assigned by SAE staff. SIDs 156 to 255 are assigned by the SAE Truck and Bus Low Speed Communications Network Subcommittee. MID related SIDs start with number 1 and sequentially increase. Common SIDs start at 254 and sequentially decrease. Below is an example of engine related SIDs.

Engine SIDs (MID = 128, 175, 183, 184, 185, 186)

0 Reserved

1 Injector Cylinder #1

2 Injector Cylinder #2

3 Injector Cylinder #3

4 Injector Cylinder #4

5 Injector Cylinder #5

6 Injector Cylinder #6

7 Injector Cylinder #7

8 Injector Cylinder #8

9 Injector Cylinder #9

10 Injector Cylinder #10

11 Injector Cylinder #11

12 Injector Cylinder #12

13 Injector Cylinder #13

14 Injector Cylinder #14

15 Injector Cylinder #15

16 Injector Cylinder #16

17 Fuel Shutoff Valve

18 Fuel Control Valve

19 Throttle Bypass Valve

20 Timing Actuator

21 Engine Position Sensor

22 Timing Sensor

23 Rack Actuator

24 Rack Position Sensor

J1587 FMI

The Failure Mode Identifier, FMI, describes the type of failure detected in the subsystem identified by the PID or SID. The FMI, and either the PID or SID combine to form a given diagnostic code. If additional common failure modes become detectable, the remaining failure mode identifiers would be assigned by the SAE Truck and Bus Low Speed Communications Network Subcommittee.

J1587 FMI Table

0 Data valid but above normal operational range (that is, engine overheating)

1 Data valid but below normal operational range (that is, engine oil pressure too low)

2 Data erratic, intermittent, or incorrect

3 Voltage above normal or shorted high

4 Voltage below normal or shorted low

5 Current below normal or open circuit

6 Current above normal or grounded circuit

7 Mechanical system not responding properly

8 Abnormal frequency, pulse width, or period

9 Abnormal update rate

10 Abnormal rate of change

11 Failure mode not identifiable

12 Bad intelligent device or component

13 Out of Calibration

14 Special Instructions

15 Reserved for future assignment by the SAE Subcommittee