The SAE J1708 specification was defined by the SAE and TMC in 1986. Its main purpose is to address the transmission of electronic signals and information among truck and bus components (i.e. Electronic Control Units or ECUs).
J1708 is mainly used on heavy-duty and commercial vehicles. It defines the physical layer and data link layer. Common application and transport layers used on J1708 are J1587 and J1922. J1587 communicates diagnostic information, while J1922 communicates control data. J1708 is outdated and is currently being phased out of production. It is being replaced by J1939.
J1708 Data Link
J1708 is a differential serial communications bus which is half duplex and multi-master (i.e. multi-drop). It uses 8, N, 1 byte framing and has a network speed of 9600 bits per second (bps).
The first byte of every message is the MID, which stands for message identifier. Every message ends with a twos complement checksum.
J1708 Physical Layer
J1708 uses a twisted pair of wires, with a minimum wire size of 18-gauge. The wires should have one twist per inch and have a maximum length of 40 meters.
A RS-485 transceiver connected in passive mode is used as the bus transceiver. It is important to note, that the transceiver should not be used in active mode which is normally used for RS-485 networks. The reason for this is passive mode allows for non-destructive bus arbitration.
J1708 Bus Termination
J1708 networks do not use bus termination. Instead, using 47 ohm resistors, each node is impedance matched to the network.
J1708 Bus States
The logical value transmitted onto the bus is the difference in voltage between the two wires. A logical 1 is when wire A is more than 0.2V than wire B. A logic 0 is when B is 0.2V more than A. When the voltage difference is less than 0.2V, the bus state is undefined.
J1708 Idle Time
The bus is considered idle if there is no activity (i.e. logic state of 1) for at least 10 bit times, or 1.0417 ms. Once the bus is idle and the device has waited it corresponding priority based delay time, a device may start transmission.
In J1708, each message is defined a priority. There are 8 different priorities, ranging from 1 to 8. The priority defines how much additional time must transpire after the bus has become idle before a node may transmit. A priority 1, which is the most critical, waits an additional 0.2 ms after the bus is idle. Each subsequent priority adds an additional 0.2 ms.
J1708 Inter-character Bit Time
For bytes to be considered as part of a message, the time between bytes is not allowed to exceed 2 bit times. If this time is exceeded, the message is not valid.
J1708 Bus Access Time
The time between the last time the ECU (i.e. software) checked the state of the network and when it starts to send the falling edge of the start bit for the first byte, is known as the bus access time. The maximum allowed bus access time is 50 microseconds. If this time is exceeded, UART based framing errors may occur on the bus. Because of this, it is critical that ECUs guarantee bus access time compliance.
The last byte of every message is the two's complement of the MID and data contained in the message.
J1708 Message Length
The maximum length, from the MID to the checksum, is 21 bytes. If the engine is not running and the vehicle is not moving, messages longer than 21 bytes may be transmitted.
J1708 Application Layer
For J1708 message definitions on a J1708 network, see J1708, J1587, J1922, or J2497. Selecting which document is determined by the MID of the message. SAE J1708 contains a table which ties each MID, and message, to a particular document.