Developers and integrators · Free tool

CAN signal extractor: start bit, length, byte order and factor

Enter the data bytes of one CAN frame and a signal definition as a DBC file writes it. See the raw bits, the physical value and the SG_ line, decode a whole DBC block, or write a value back into the bytes. The decoding runs in your browser.

Data bytes of one frame, byte 0 first. Spaces are optional. Up to 64 bytes for CAN FD. The sample is the EEC1 example published in a CAN-logger maker's guide.

Load a sample

Use the numbers exactly as your DBC file or maker document gives them. The starting values are the engine speed signal from the published EEC1 example.

Letters, digits and _ only in a DBC file. Other characters become _.

bit

DBC bit number, 0 to 511. Bit 0 is the lowest bit of byte 0.

bits

1 to 64 bits.

The digit after @ in the DBC line. Intel is little-endian, Motorola is big-endian.

Only for Motorola. A DBC file stores the most significant bit. Some editors display the least significant bit.

The sign after the byte order digit in the DBC line.

Physical units per raw step. Use a dot for decimals. Not zero.

Added after the factor. Can be negative.

Shown with the value and written into the DBC line.

Optional. Leave empty to use the full raw range.

Optional. A value outside the two limits is flagged.

How the value is calculated
Bit k = byte floor(k / 8), bit k mod 8 Intel @1: start = LSB, bits k, k+1 ... k+len-1 Motorola @0: start = MSB, next bit k-1, after bit 0 of a byte go to bit 7 of the next byte Value = offset + factor x raw 24|16@1 on FF FF FF 68 13 → 0x1368 = 4968 → 4968 x 0.125 = 621 rpm
Extracted signalFrom your bytes

Keep a record of this decode

A report with the payload, the definitions, the values and the DBC line.

Decode report

Keep the bytes, the definition and the value together

  • Payload, definition and the raw value in decimal, hex and binary
  • The SG_ line ready for your DBC file
  • Every SG_ line of the block with its value and state
  • The payload with your value written into it

What does an SG_ line say?

A DBC file describes the messages on a CAN bus. Each message starts with a BO_ line, and each signal inside it has an SG_ line. The SG_ line holds everything the tool needs to turn bits into a value.

SG_ EngineSpeed : 24|16@1+ (0.125,0) [0|8031.875] "rpm" Vector__XXX

Parts of an SG_ line
PartIn the exampleMeaning
NameEngineSpeedSignal name. Letters, digits and underscore.
Start bit24Intel: the least significant bit. Motorola: the most significant bit.
Length16Number of bits.
Byte order@11 is Intel (little-endian), 0 is Motorola (big-endian).
Sign++ unsigned, - signed two's complement.
Factor, offset(0.125,0)Value = offset + factor x raw.
Minimum, maximum[0|8031.875]Valid physical range.
Unit, receiver"rpm" Vector__XXXUnit text and the node that reads the signal.

Intel or Motorola?

Byte order decides which byte holds the high part of a multi-byte value. Intel puts the low byte first. Motorola puts the high byte first. Read the same bytes with the wrong order and the value can be off by thousands.

Intel 0|16@1

B076543210
B115141312111098

Motorola 7|16@0

B076543210
B115141312111098
The same two bytes, 12 34. Intel reads byte 1 as the high byte: 0x3412 = 13330. Motorola reads byte 0 as the high byte: 0x1234 = 4660.

Worked example: engine speed

A CAN-logger maker's guide publishes this example for the J1939 message EEC1. It is the sample loaded in the tool.

  • Payload FF FF FF 68 13 FF FF FF. The signal is 24|16@1+: Intel, 16 bits from bit 24.
  • Bit 24 is bit 0 of byte 3, so the signal uses bytes 3 and 4: 68 and 13.
  • Intel puts the low byte first, so the raw value is 0x1368 = 4968.
  • Value = 0 + 0.125 x 4968 = 621 rpm.

Why does my editor show another start bit?

For Motorola signals there are two habits. The DBC file stores the most significant bit as the start bit. Some editors display the least significant bit, because it is easier to place on a grid. Both describe the same signal. The tool accepts either and always writes the DBC form.

One Motorola signal, two ways to write its start
SignalStart as MSB, DBCStart as LSB, some editors
12 bits from byte 0712
16 bits from byte 078
4 bits, top of byte 074

Signed values and scaling

A signed signal uses two's complement over its own length, not over a whole byte. A 12-bit signal whose top bit is 1 is negative even if the byte around it looks positive. After the sign, the factor and the offset turn the raw number into the physical value.

Signed raw = raw - 2^len when the top bit is 1 Value = offset + factor x raw 0x7D x 1 - 40 = 85 0xFF signed 8 bit = 255 - 256 = -1Hand arithmetic. Floating-point signals, marked SIG_VALTYPE_ in a DBC file, are not covered.

What usually goes wrong?

  • The value is far too large. The byte order is wrong. Try the other order and compare with the dashboard.
  • A Motorola signal is shifted. The start bit was copied from an editor that shows the LSB. Switch the start bit setting.
  • Negative values look huge. The signal is signed but was read as unsigned.
  • Every bit is 1. In J1939 and many other protocols that means the value is not available.
  • The signal runs past the payload. The frame is shorter than the definition expects, or the start bit is wrong.

Sources and limits

  • SG_ syntax, byte order and the EngineSpeed example: DBC file explained (CAN-logger maker guide). The EEC1 payload: J1939 introduction (same guide).
  • Signal definitions for your vehicle are yours to enter. The tool ships none apart from the published example.
  • The EEC1 engine speed layout (bytes 4 and 5 counted from 1, 0.125 rpm per bit) could not be checked in the official SAE J1939 text, which is sold. Last checked 2026-11-03. Use it for practice and take real definitions from the vehicle maker.
  • Multiplexed signals are decoded against the same payload without checking the multiplexer value. Floating-point signals are not covered.
  • Everything runs in your browser. If you ask for the report or the CSV by e-mail, your inputs, and the DBC text when it is short, are sent to our server with the request and kept for up to 45 days. A share link carries the text only when it is short.
  • This page does not say that any device reads a given CAN signal. That depends on the model and its configuration.
Related Tracom solution

Map the signal first, then the device input

Tracom designs tracking devices that you set up with advanced configuration files and manage from the SCMS portal. Decode the signal here, then ask Tracom which CAN inputs your device model can read and how to set them.

  • Advanced configuration files keep a tested input setup the same across vehicles.
  • SCMS portal manages device settings in one place.
  • Over-the-air updates bring new firmware to devices in the field.
  • Second-by-second data records vehicle behaviour in fine detail.
Questions

Questions about CAN signals and DBC files

Mapping a vehicle signal to a device input? Contact Tracom.

What is a DBC file?

A text file that describes the messages and signals on a CAN bus: the identifier of each message and, for each signal, its start bit, length, byte order, sign, factor, offset, limits and unit.

How do I know if a signal is Intel or Motorola?

Look at the digit after @ in the SG_ line: 1 is Intel and 0 is Motorola. Without a DBC file, decode one known value both ways and keep the order that matches the dashboard.

Why does the start bit differ between tools?

For Motorola signals, a DBC file stores the most significant bit, and some editors show the least significant bit. Choose the matching setting and the tool converts it.

Can it read multiplexed or floating-point signals?

Partly. Multiplexed signals are decoded, but the tool does not check the multiplexer value. Floating-point signals are not covered.

Are my bytes or my DBC file uploaded?

Not necessarily. The tool runs in your browser. If you ask for the report or the CSV by e-mail, your inputs, and the DBC text when it is short, are sent to our server with the request and kept for up to 45 days.

Does a Tracom device read this signal?

This page makes no claim about it. Which CAN signals a device reads depends on the model and its configuration. Contact Tracom with the vehicle, the message and the signal.

Related tools and templates

Keep going with the CAN integration

Get the report

Enter your details and we will email you the file.

Use your real name so the file arrives addressed to you. Don't worry, we won't flood you with emails or calls.

Scroll to Top